【问题标题】:RabbitMQ-based message driven bean in GlassFishGlassFish 中基于 RabbitMQ 的消息驱动 bean
【发布时间】:2012-08-16 21:12:22
【问题描述】:

我正在构建一个系统,它使用 RabbitMQ 作为其组件的消息传递解决方案。但是,我有一些遗留的 EJB Java 代码,它们在 GlassFish 应用服务器上作为 EJB 执行磁盘 IO 密集型任务。我不想重写那个代码,所以我想找到一种与之通信的方法。我知道我可以只使用 RabbitMQ java 客户端,但我不确定如何处理消息限制,我不希望同时运行 4 个任务,这对于消息驱动来说相对容易GlassFish 中的豆子。

我想出的唯一方法是一个单例 EJB,它在 PostConstruct 中启动一个计时器,并在该计时器进入阻塞 AMQP 客户端接收循环时。然后我可能只是将收到的 AMQP 消息复制到本地 GlassFish JMS 提供程序并使用 MDB 轮询它们,但我不喜欢这样,因为我必须监视多个 GlassFish JMS 提供程序以了解事情的进展,而不是仅仅检查RabbitMQ。

我正在努力寻找有关如何互连 AMQP 和 JMS 的任何信息,以前有没有人做过类似的事情?任何想法表示赞赏。

【问题讨论】:

    标签: ejb jms rabbitmq ejb-3.1


    【解决方案1】:

    您不能互连 AMQP 和 JMS,因为它们是根本不同的概念。 AMQP 是一个标准,它定义了数据在网络上的外观以及代理应该如何工作,JMS 是一个 api 定义。

    也就是说,一个 AMQP 代理实现可以提供一个 JMS api,我相信 RabbitMQ 已经有了这个功能。

    【讨论】:

    • 我认为 RabbitMQ 没有任何 JMS 功能(
    • 任何 amqp 代理都与在线上的任何其他 amqp 代理兼容,因此任何公司都可以为 amqp 提供 jms 实现,它适用于所有代理实现。这里有一个 RabbitMQ 从他们的网站链接。 lshift.net/blog/2009/03/16/…
    • 那个仓库不存在。
    【解决方案2】:

    让我们这样说吧:在撰写本文时,GlassFish 还没有与 MDB 兼容的 AMQP 连接器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      相关资源
      最近更新 更多