【问题标题】:Pause MDB message Processing暂停 MDB 消息处理
【发布时间】:2012-01-13 04:32:32
【问题描述】:

我们可以暂停 MDB 消息处理一段时间吗?例如:Jboss 1 部署的 MDB 用于消息处理。 Jboss 2:-Bean 用于收集用户详细信息。如果 jboss 1 中的 MDB 调用 jboss 2 中的 bean 来获取用户详细信息。如果是这种情况,当我们重新启动 Jboss 2 时,我们需要暂停 jboss 1 中的 MDB,直到 jboss 2 启动。是否有任何选项可以暂停 MDB,以避免消息失败?

【问题讨论】:

  • 在 JBoss4,5 中,您可以设置 JMX bean 之间的依赖关系 - BarrierController / Barrier 并使 MDB 依赖于 Barrier,因此可以通过启动和停止屏障来完成暂停。我无法在 JBoss 7 AS 中找到此功能的直接替代品。我仍在寻找 - 任何帮助将不胜感激!

标签: jboss queue jms message-driven-bean hornetq


【解决方案1】:

您可以在 HornetQ 上停止队列。 (我不确定 JBoss Messaging,但我很确定你知道)

在 JMX 控制台上查找消息暂停和恢复

【讨论】:

    【解决方案2】:

    在 JBoss(4.x 和 5.x)中,您可以通过 JMX 控制台查找 MDB 并暂停消息传递。

    1. 转到 jmx 控制台(http://yourserver:8080/jmx-console/,其中 8080 是 HTTP 端口)
    2. 点击左侧窗格中的jboss.j2ee
    3. 在右侧窗格中,找到并单击您的 MDB。通常,它看起来像

      jar=file-containing-your-MDB.jar,name=NameOfYourMDB,service=EJB3

    4. 要暂停,请点击“stopDelivery”旁边的“Invoke”按钮
    5. 要恢复,请点击“startDelivery”旁边的“Invoke”按钮

    【讨论】:

    • 你找到了 JBoss 7 的等价物吗?
    • @pjklauser JBoss 7 在 JMX 控制台中没有这个吗?我以前从未使用过。
    【解决方案3】:

    我怀疑您是否可以在不停止整个应用程序的情况下停止 MDB。可以使用 Spring JMS,但不能使用常规的消息驱动 bean。

    你能做的,显然是可能的,是pausing a queue。 HornetMQ 确实让您可以将队列切换到“仅接收模式”,但我不知道这是否可以通过管理控制台使用。

    【讨论】:

    • 是的..你可以暂停一个队列。
    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2011-12-23
    • 2014-06-20
    • 2019-06-21
    • 1970-01-01
    • 2018-03-26
    • 2016-05-12
    相关资源
    最近更新 更多