【问题标题】:Control consumption of multiple JMS queues控制多个 JMS 队列的消耗
【发布时间】:2020-04-04 05:40:52
【问题描述】:

我在任何地方都找不到此信息。我有两个队列,@JmsListener(destination = "p1")@JmsListener(destination = "p2")。如何确保我一次只处理 1 条消息,即使我正在监听 2 个队列,以及如何配置轮询我首先从哪个队列获取消息,即在处理我想要轮询的消息之后p1 首先。或者进行加权轮询:p1:90%、p2:10%。等等。

基本上我在问如何为Spring 实现消息的优先处理。我正在使用不支持优先级的SQS

【问题讨论】:

    标签: spring spring-jms


    【解决方案1】:

    使用JmsTemplate receive()receiveAndConvert() 方法之一,而不是消息驱动模型。

    如果您想确保没有消息丢失,请使用事务。

    【讨论】:

    • 感谢您的回复。我需要一点关于如何使用JmsTemplate 来实现这一点的指导,所以我要覆盖这个方法吗?我应该在其中做什么?交易与这个问题有什么关系?
    • 重写哪个方法?您可以随时在您想要的任何队列上调用其中一种接收方法。通常,receive() 方法会立即确认消息;您需要在事务中运行,以便在执行接收的方法退出之前不会提交消息删除。
    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 2011-10-23
    • 2014-09-11
    • 2014-04-03
    • 2019-02-20
    • 1970-01-01
    • 2014-09-29
    • 2013-06-30
    相关资源
    最近更新 更多