为了能够将 JMS 消息发送到 Wildfly 17 中的给定主题并通过 JMS 接收,应配置哪些设置?
在互联网上查找后,我发现了以下来源:
但是,上述链接都没有完全解决我的问题
为了能够将 JMS 消息发送到 Wildfly 17 中的给定主题并通过 JMS 接收,应配置哪些设置?
在互联网上查找后,我发现了以下来源:
但是,上述链接都没有完全解决我的问题
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";