我遇到了以下问题:我需要在 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.homeWildfly 的安装目录在哪里。要删除 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)

更多信息在这里


微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部