【问题标题】:Can client receive multiple messages of the queue before acknowledging them?客户端可以在确认之前接收队列的多条消息吗?
【发布时间】:2013-01-12 04:33:01
【问题描述】:

我的程序接收消息的速度会很慢;我希望他们坚持排队,直到我收到所有这些并确认所有这些。在收到一堆消息之前,我不知道我是否有足够的消息。

我的问题:队列会阻塞,等待第一条消息的确认,然后再传递第二条消息吗?

【问题讨论】:

    标签: jms activemq


    【解决方案1】:

    我使用示例生产者/消费者代码运行了一个测试。消费者实际上有一些代码(如果您切换到 ClientAcknowledge)。它收到一堆消息(其中 10 条)并且只确认最后一条。

    【讨论】:

      【解决方案2】:

      将确认模式设置为Session.CLIENT_ACKNOWLEDGE 时,您可以获得所需的尽可能多的消息。消息将被锁定在服务器上,因此其他消费者无法同时检索它们。所以答案是否定的,队列不会阻塞(即使可能有特定于提供商的设置可以做到这一点,我不知道)。

      但是,您只能一次确认所有内容。因此,当您收到 10 条消息并确认其中一条(不管是哪条)时,所有消息都会被确认。

      检查您的参考Controlling Message Acknowledgment

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-13
        相关资源
        最近更新 更多