Я не использовал консоль, так как трудно сценарий для следующего времени, когда вам нужно сделать это снова. Вместо этого я использовал CLI для этого.
Чтобы создать топи c:
${wildfly.home}/bin/jboss-cli.sh --connect --controller=127.0.0.1:8080 --command="jms-topic add --topic-address=yourTopicName --entries=java:/jms/yourTopicName"
, где wildfly.home
- каталог, в котором установлен Wildfly. Чтобы удалить очередь JMS, вы запустите что-то вроде:
${wildfly.home}/bin/jboss-cli.sh --connect --controller=127.0.0.1:8080 --command="jms-topic remove --topic-address=yourTopicName"
Мой код производителя выглядит так:
@Stateless
public class MyProducer {
@Resource(lookup = "java:/jms/yourTopicName")
private Topic topic;
@Inject
private JMSContext context;
public void sendMessage(MyCustomMessage customMessage) {
try {
ObjectMessage message = context.createObjectMessage();
message.setObject(customMessage);
context.createProducer().send(topic, message);
}
catch (JMSException e) {
// handle error
}
}
}
, а мой слушатель выглядит так:
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "java:/jms/yourTopicName"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic") })
public class MyListener implements MessageListener {
@Override
public void onMessage(Message message) {
}
}
Помните, что для использования JMS необходимо работать с «полной» конфигурацией, т.е.
bin/standalone.sh -c standalone-full.xml