将野生蝇与RabbitMQ(amqp)联系起来是否可行?

时间:2017-03-23 14:35:28

标签: rabbitmq wildfly

我正在进行概念验证,但我无法收听来自wildfly的消息。有谁知道这是可能的吗?我已经尝试了很多天:C

1 个答案:

答案 0 :(得分:0)

您可以在Wildfly上运行的应用程序中使用RabbitMQ JMS Client

您必须手动生成RabbitMQ JMS ConnectionFactory和Destination对象,使用CDI生成器(如果您的应用程序是JEE),或者通过1.7.0版本的RabbitMQ JMS客户端通过JNDI绑定配置生成。

对于Wildfly JNDI绑定配置,您可以查看RabbitMQ JMS Client文档和Wildfly Naming Subsystem configuration

然后,您可以在应用程序中使用@Resource注入JMS连接工厂和目标对象。请注意,您还必须将JMS客户端lib放在Wildfly global-modules

中声明的jboss模块中。

最后,如果要注册消息侦听器,可以尝试手动执行此操作,方法是创建实现JMS MessageListener接口的侦听器,并在setMessageListener方法(以及CDI管道)的帮助下手动将侦听器注册到RabbitMQ队列。实际上,现在不可能将Message Driven Beans与当前版本的RabbitMQ JMS Client一起使用。有关详细信息,请参阅this post。 但是我不确定最后一个是否会在Wildfly(待测试)中工作,因为根据javadoc,这个方法会引发一个JMS异常:

  

如果JMS提供程序由于以下原因之一而无法设置MessageConsumer的MessageListener:发生了内部错误或者已在Java EE Web或EJB应用程序中调用此方法(尽管不能保证在这种情况下抛出异常)

另外,也许这对Wildfly开始使用WEB配置文件而不是Java EE 7完整配置文件最好吗?