【发布时间】:2010-11-18 15:34:22
【问题描述】:
我的设置:在 JBoss 4.2.3 上运行的 JBoss Messaging 1.4
我有几个订阅一个主题的 MDB,MDB 的 onMessage() 尝试将收到的消息分别传递到一个 Web 服务。
我的问题是我不知道在网络服务离线的情况下如何暂停订阅。
我的计划是在 onMessage() 中执行以下操作:
- 尝试传送到网络服务
- 如果离线:
- --> 暂停订阅
- --> 在 onMessage() 中抛出异常以使 JMS 重新传递消息 直到网络服务再次上线
- -->开始订阅
我只想暂停一个有问题的订阅 - 而不是我的所有订阅者。
关于如何解决这个问题的任何建议?
【问题讨论】:
-
感谢所有提示! :-) 作为一个临时解决方案,我现在已经实现了这个: 1. 如果主机离线,抛出 RuntimeException 导致回滚 2. 通过使用“@ActivationConfigProperty(propertyName = "DLQMaxResent",属性值="151200")"。我的 MDB 需要 4 秒才能理解主机脱机 * 151200 = 重新交付 1 周......我希望这应该足够了 :) 这不是一个很好的解决方案,但它有效,并且数字的默认值为 15同时消息,我的目的地不会受到 DoS 攻击:)
标签: jboss jms messaging subscriber