我遇到了以下问题:我需要在 HAL 管理控制台中创建一个消息队列。在视频教程中,它看起来像这样:
但据我所知,在教程中作者使用了旧版本的控制台。我有另一个没有消息传递菜单项的菜单。我找到邮件菜单项:
但据我所知,这不是我需要的,因为我没有找到任何方法在这里创建队列。也许有人知道如何创建消息队列?我将不胜感激任何帮助。提前致谢!
我没有使用控制台,因为下次您需要再次执行此操作时很难编写脚本。相反,我使用 CLI 来执行此操作。
创建主题:
${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
您可能已经以默认模式启动了 Wildfly(> 没有 JMS 代理!)。如果你想在控制台中看到 Messaging 菜单,你需要使用名为standalone-full
.
在终端会话中,进入 Wildfy 的“bin”文件夹,然后键入:
./standalone.sh --server-config=standalone-full.xml
(或 Windows 的 standalone.bat)
更多信息在这里