【问题标题】:Dealing with transactions and event driven consumer with ActiveMQ NMS使用 ActiveMQ NMS 处理事务和事件驱动的消费者
【发布时间】:2012-11-21 12:25:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net activemq messaging message-driven-bean nms


    【解决方案1】:

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

    【讨论】:

    • 我不确定你在说什么。你能举个例子吗?
    • 要获得更具体的答案,您需要提出更具体的问题。您正在尝试完成什么以及目前不适合您的工作。
    • 我希望通过实现事务来拥有可靠的消息传递基础架构,尤其是在请求/回复方面。现在没有什么是一成不变的,只是考虑实施。例如在回复部分,我可以使用 try/catch 和 Begin/Commit 对吗?
    • 没有开始,在您的处理程序中,您可以提交或回滚,或者您可以在更高级别执行此操作,会话是 TX 提交/回滚的仲裁者。由您决定这是每条消息还是绑定到正在接收的某批消息。
    猜你喜欢
    • 2018-02-20
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    相关资源
    最近更新 更多