java—在wildfly 17中启用发送到jms主题或从jms主题接收

xlpyo6sf  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(342)

为了能够将jms消息发送到wildfly 17中的给定主题并通过jms接收它们,应该配置哪些设置?
在互联网上搜索后,我发现以下来源:
wildfly 8的远程jms客户端
无法向wildfly 9上配置的主题发送消息
将activemq与wildfly集成
然而,以上提到的链接都没有完全解决我的问题

mf98qq94

mf98qq941#

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";

相关问题