使用ActiveMQ NMS处理事务和事件驱动的消费者



引用Hohpe G.和Woolf B.的EIP模式书:

请注意,在 JMS 中,事件驱动的消费者也是一个 事务客户端将无法按预期工作。通常是一笔交易 当事务中的代码引发异常时回滚, 但 MessageListener.onMessage signiture 不提供 引发异常(如 JMSException)和运行时异常 被视为程序员错误。如果发生运行时异常,JMS 提供程序通过传递下一条消息来响应,因此消息 导致异常丢失。为了成功实现交易, 事件驱动的行为,使用消息驱动的 EJB。

我明白这一点,但是如果我从.Net客户端使用Apache NMS(ActiveMQ)怎么办?我没有MDB,所以我应该如何解决这个问题?

ActiveMQ NMS客户端异步消费者的功能与Java版本基本相同。 您应该在回调中处理异常,因为它们在 NMS 中也被视为程序员错误,并且在事务中传递下一条消息。

最新更新