从wildfly发送jms消息

Posted

技术标签:

【中文标题】从wildfly发送jms消息【英文标题】:Sending jms messages from wildfly 【发布时间】:2018-07-30 04:29:50 【问题描述】:

我正在开发基于 jms 的 Wildfly 应用程序(wildfly 8、java 7)。我必须使用基于 Rx Java 的事件驱动库。我想从必须提供给库函数的监听器上发送 jms 消息。问题是用于发送 jms 消息的标准 EJB 机制在 Rx Java 处理程序内部不起作用。疯狂的猜测是,我不能在 Rx Java 流中注入/使用基于注释的 EJB jms 机制,因为它们不是由 EJB 容器生成的(或将 EJB bean 作为 Rx Java 处理程序传递)。我试图从 EJB 单例发送 jms 消息,就像从独立的 Java 应用程序一样,遵循this 之类的教程。这种方法的问题是wildfly的独立实例找不到索引工厂org.jboss.naming.remote.client.InitialContextFactory的依赖关系。或者如果我尝试添加 maven 依赖项,wildfly 甚至都不会部署

<dependency>
    <groupId>org.wildfly</groupId>
    <artifactId>wildfly-jms-client-bom</artifactId>
    <version>$version.wildfly</version>
    <type>pom</type>
</dependency>

到我的应用程序胖罐。任何想法都将不胜感激,因为我对 EJB 的理解在这件事上相当缺乏。

【问题讨论】:

【参考方案1】:

您可以在没有依赖注入的情况下使用 EJB 来查找 InitialContext。

在编写完单例 EJB 代码后,您需要知道“JNDI 注册表上的 EJB 名称”,然后您可以这样做:

Context ctx = new InitialContext()
MyStatlessBeanInterface bean = ctx.lookup("FULL NAME BEAN"); 
bean.sendJMSMessage();

Wifly 在部署时在控制台中打印 EJB 名称,但您可以在以下位置阅读有关约定:

https://docs.jboss.org/author/display/AS71/JNDI+Reference

您还可以在以下位置获取有关查找的更多信息:

https://docs.oracle.com/cd/E16439_01/doc.1013/e13981/usclient003.htm

【讨论】:

以上是关于从wildfly发送jms消息的主要内容,如果未能解决你的问题,请参考以下文章

缺少 Wildfly 8.2.0 JMS 主题

Wildfly 上的 JMS 2.0 QueueBrowser 不返回消息

Wildfly JMS:当消息存在时,MDB bean 空闲

使用 WildFly 在 JMS 中进行 JAAS 身份验证:javax.jms.JMSSecurityException:HQ119032:用户:null 没有权限 = 在地址 2 上发送

Wildfly下定时任务执行两次

如何使用 ActiveMQ Artemis 在 Wildfly 24 服务上配置 jms-queue