【问题标题】:Receive Multiple JMS Messages in a single transaction using MDP使用 MDP 在单个事务中接收多个 JMS 消息
【发布时间】:2012-04-05 22:57:19
【问题描述】:

我需要批量处理消息,比如说 10 个。在 10 个事务(或超时)之后,所有 10 个事务都会有一个提交,如果发生任何异常,所有 10 个消息都将回滚并重新交付。

我们的应用程序在 Weblogic 11g 上运行,我知道此功能使用 weblogic MDB 存在(批处理 jms 消息 http://docs.oracle.com/cd/E13222_01/wls/docs90/bridge/tuning.html)。

我们在我们的应用程序中严重依赖 Spring,并且出于各种原因宁愿不使用任何 EJB。有没有办法使用弹簧 MDP 来实现这一点?或者有什么工具可以吗?

【问题讨论】:

    标签: spring transactions jms weblogic11g


    【解决方案1】:

    这不是你自己实现的大事。事实上我昨天就做到了(尽管在 c# 中它仍然反对 JMS)

    因此,虽然我无法为您提供直接答案,但我可以告诉您我在实现相同要求时的经验

    我遇到的一个问题是我在一个队列上运行多个消费者(每个消费者都提供批处理),而队列上的预取意味着我的 JMS 代理正在循环向我的消费者传递消息

    这是完全可以接受的行为,但有点违背批处理的想法。我最终在消费者之间滚动了自己的同步机制,以协调谁在消费,更重要的是关闭预取。

    【讨论】:

    • 我正在考虑做的是扩展 DefaultMessageListenerContainer 并覆盖 receiveAndExecute(),这是 spring 处理事务的地方。我宁愿使用内置的弹簧功能,但它可能不存在。感谢回复
    猜你喜欢
    • 2018-09-07
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2017-06-29
    • 2013-07-30
    • 2014-11-05
    相关资源
    最近更新 更多