我有困难的配置JB EAP7使用RabbitMQ的消息代理。 我创建了一个rabbitmq模块,并将其定义为我的standalone-ha.xml中的全局模块。如何配置Wildfly以连接到RabbitMQ?
模块/系统/层/基层/ COM/RabbitMQ的/主/ 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([email protected]71 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,我需要做些什么?
谢谢。我放弃了MDB的想法,并且只使用消息侦听器和CDI(从standalone-ha.xml中检索ConnectionFactory和Queue定义)。 –
现在,我遇到了自动恢复问题,或者如何使用JMS客户端处理超时。请参阅https://stackoverflow.com/q/46007414/827480你有没有想过如何处理JMS客户端的异常处理? –
技术上可以在JMS客户端中实现,还是AMQP本质上无法满足JMS中的某些MDB要求?我们谈论的具体JMS功能是什么? –