【发布时间】:2018-02-07 14:40:42
【问题描述】:
我在配置 JB EAP7 以使用 RabbitMQ 作为消息代理时遇到了困难。 我创建了一个 rabbitmq 模块并将其定义为我的standalone-ha.xml 中的一个全局模块。
modules/system/layers/base/com/rabbitmq/main/module.xml:
<module xmlns="urn:jboss:module:1.1" name="com.rabbitmq">
<resources>
<resource-root path="rabbitmq-jms-1.7.0.jar"/>
<resource-root path="amqp-client-4.2.0.jar" />
</resources>
<dependencies>
<module name="javax.api" />
<module name="javax.transaction.api"/>
<module name="org.slf4j"/>
</dependencies>
</module>
JB7 启动时没有问题。但我在 server.log 中看到以下内容,表明 MDB 正在尝试绑定到 ActiveMQ 连接(我猜是 Wildfly 中的默认提供程序):
2017-08-29 17:24:09,193 INFO [org.jboss.as.ejb3]WFLYEJB0042: Started message driven bean 'Subscriber' with 'activemq-ra' resource adapter
2017-08-29 17:24:09,368 INFO [javax.enterprise.resource.webcontainer.jsf.config]Initializing Mojarra 2.2.12-jbossorg-2 for context '/webapp-0.0.1-SNAPSHOT'
2017-08-29 17:24:09,462 INFO [org.apache.activemq.artemis.ra]AMQ151000: awaiting topic/queue creation java:/global/mq/kodo
2017-08-29 17:24:10,103 INFO [org.wildfly.extension.undertow]WFLYUT0021: Registered web context: /webapp-0.0.1-SNAPSHOT
2017-08-29 17:24:10,285 INFO [org.jboss.as.server]WFLYSRV0010: Deployed "webapp-0.0.1-SNAPSHOT.war" (runtime-name : "webapp-0.0.1-SNAPSHOT.war")
2017-08-29 17:24:10,286 INFO [org.jboss.as.server]WFLYSRV0010: Deployed "kodo-jdo.rar" (runtime-name : "kodo-jdo.rar")
2017-08-29 17:24:11,465 INFO [org.apache.activemq.artemis.ra]AMQ151001: Attempting to reconnect org.apache.activemq.artemis.ra.inflow.ActiveMQActivationSpec(ra=org.apache.activemq.artemis.ra.ActiveMQResourceAdapter@78712571 destination=java:/global/mq/kodo destinationType=javax.jms.Queue ack=Auto-acknowledge durable=false clientID=null user=null maxSession=15)
我不确定如何在我的 MDB 中确定我希望 MDB 使用我的 RabbitMQ 定义的 ConnectionFactory。我的 MDB 定义为:
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "java:/global/mq/kodo") })
public class Subscriber implements MessageListener {
public void onMessage(final Message message) {
try {
System.out.println(message.getBody(Object.class).toString());
} catch (JMSException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
}
但我找不到在哪里/如何指定 ConnectionFactory 的文档。我尝试向我的班级添加 @JMSConnectionFactory( String JNDI) 注释,但仍然得到相同的结果。
我的 RabbitMQ 模块定义中是否缺少某些内容?我的 MDB 没有正确注释吗?为了配置我的 MDB 以使用我的 RabbitMQ ConnectionFactory 连接到 Message Broker,我需要做什么?
【问题讨论】:
标签: jakarta-ee rabbitmq jms wildfly message-driven-bean