我正在进行概念验证,但我无法收听来自wildfly的消息。有谁知道这是可能的吗?我已经尝试了很多天:C
答案 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完整配置文件最好吗?