我正在构建一个使用RabbitMQ作为其组件的消息传递解决方案的系统。但是我有一些遗留的EJB Java代码,它将GlassFish应用服务器上的磁盘IO密集型任务作为EJB。我不想重写那段代码,所以我想找到一种与它沟通的方法。我知道我可以使用RabbitMQ java客户端,但我不确定如何处理消息限制,我不想要比同时运行的4个任务更多,这与消息驱动相对容易GlassFish中的豆子。
我唯一想到的是一个单独的EJB,它在PostConstruct中启动一个计时器,然后该计时器进入阻塞AMQP客户端接收循环。然后我可能只是将收到的AMQP消息复制到本地GlassFish JMS提供程序并使用MDB进行轮询,但我不喜欢这样,因为我必须监视几个GlassFish JMS提供程序以了解事情的进展,而不仅仅是检查的RabbitMQ。
我很难找到有关如何互连AMQP和JMS的任何信息,有没有人以前做过这样的事情?任何想法都表示赞赏。
答案 0 :(得分:1)
您无法将AMQP和JMS互连,因为它们是根本不同的概念。 AMQP是一种标准,它定义了数据在线路上的显示方式以及代理应该如何工作的方式,JMS是api的定义。
也就是说,AMQP代理实现可以提供JMS api,我相信RabbitMQ已经具备了这个功能。
答案 1 :(得分:0)
让我们这样说吧:截至撰写本文时,GlassFish没有与MDB兼容的AMQP连接器。