2011-12-05 136 views
1

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

+0

在JBoss4,5你可以JMX豆之间建立依赖关系 - BarrierController/Barrier并使MDB依赖Barrier,因此可以通过启动和停止屏障来完成暂停。我一直无法在JBoss 7 AS中直接找到这个功能。我仍在寻找 - 任何帮助将不胜感激! – pjklauser

回答

1

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

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

+0

是的..你可以暂停队列。 –

+1

我该怎么做。 – vairam

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”
  5. 要恢复按钮,单击“调用”下一个按钮为“startDelivery”
+0

你有没有发现JBoss 7的一些等价物? – pjklauser

+0

@pjklauser JBoss 7在JMX控制台中没有这个吗?我从来没有用过它。 – GreenGiant

0

您可以停止HornetQ上的队列。 (我不知道的JBoss Messaging,但我敢肯定,你这样做)

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