0

为了能够将 JMS 消息发送到 Wildfly 17 中的给定主题并通过 JMS 接收,应配置哪些设置?

在互联网上查找后,我发现了以下来源:

Wildfly 8 的远程 JMS 客户端

无法向 WildFly 9 上配置的主题发送消息

将 ActiveMQ 与 Wildfly 集成

但是,上述链接都没有完全解决我的问题

4

1 回答 1

1

1.) 应使用以下命令在 Wildfly 17 中创建一个特殊的应用程序用户

add-user.sh/add-user.cmd

它属于“guests”组,JMS 消息生产者将代表他们创建 JMS 消息。此处提供了有关如何创建此用户的详细信息:

使用 add-user.sh/add-user.cmd 在 Wildfly 中创建一个新用户

2.) 必须开始使用 Wilffly 17

standalone-full.xml

不只是

   standalone.xml

3.) 消息主题应在 Wildfly17 中创建,消息应发送到的位置。这可以通过jboss-cli.bat / jboss-cli.bat使用以下参数运行脚本来实现:

jms-topic add --topic-address=AuctionTopic --entries=[#topic/auction", "java:jboss/exported/jms/topic/auction"]

或者直接在standalone-full.xml的第537行插入以下条目:

<jms-topic name="topic/testTopic" entries="java:/jms/topic/auction java:jboss/exported/jms/topic/auction" />

就在现有行之前:

  <connection-factory name="InVmConnectionFactory" entries="java:/ConnectionFactory" connectors="in-vm"/>

4.) 当作为位于 Wildfly 17 内部的组件(例如 servlet)的消息生产者确实从 WildFly 17 获得 JMS 连接时,应使用以下代码:

Properties props = new Properties();
// Wildfly 17.00:
// this user and password shall be created before the application is deployed
// with the help of add-user.sh. The jmsuser shall be an application user that // belongs to the group guest
        props.put(Context.SECURITY_PRINCIPAL, "jmsuser");
        props.put(Context.SECURITY_CREDENTIALS, "Password1!");
        javax.naming.InitialContext ctx = new InitialContext(props);

        Object obj = ctx.lookup(Constants.JMS_CONNECTION_FACTORY);
        ConnectionFactory factory = (ConnectionFactory) obj;
        this.jmsConnection = factory.createConnection();
        obj = ctx.lookup(Constants.JMS_TOPIC_NAME);
        this.topic = (Topic) obj;

在哪里

Constants.JMS_CONNECTION_FACTORY = "ConnectionFactory";

Constants.JMS_TOPIC_NAME = "java:/jms/topic/auction";
于 2020-12-08T08:48:37.907 回答