我有ActiveMQ Artemis。生产者生成1000条消息,消费者一一处理它们。现在,我想在两个使用者的帮助下处理此队列。我开始新的使用者,并且新消息在两个运行的使用者之间分配。我的问题:是否有可能在所有开始的消费者之间重新分配旧消息?
一旦消息由代理发送给消费者,则代理不能简单地将其撤回,因为消费者可能正在处理它们。消费者可以取消消息返回队列(例如,通过关闭其连接/会话)。
我的建议是调整consumerWindowSize
(在客户端的URL上设置),以便将适当数量的消息发送给您的使用者。默认consumerWindowSize
为1M(1024 * 1024字节)。较小的consumerWindowSize
意味着更多的客户端将能够并发接收消息,但是这也意味着客户端将需要进行更多的网络往返,以告诉代理在它们运行不足时调度更多的消息。您需要运行基准测试来找到适合您的用例和性能需求的consumerWindowSize
值。