0

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

请注意,在 JMS 中,同时也是事务客户端的事件驱动消费者将无法按预期工作。通常,当事务中的代码抛出异常时,事务会回滚,但 MessageListener.onMessage 签名不提供抛出异常(例如 JMSException),并且运行时异常被认为是程序员错误。如果发生运行时异常,JMS 提供者通过传递下一条消息进行响应,因此导致异常的消息丢失。要成功实现事务、事件驱动的行为,请使用消息驱动的 EJB。

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

4

1 回答 1

0

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

于 2012-12-03T23:20:25.993 回答