是否可以在所有启动的消费者之间重新分配现有消息

Is it posible redistribute existing messages between all started consumers

我有 ActiveMQ Artemis。生产者生成 1000 条消息,消费者一条一条地处理它们。现在我想在两个消费者的帮助下处理这个队列。我开始新的消费者,新消息分布在两个运行的消费者之间。我的问题:是否可以在所有启动的消费者之间重新分发旧消息?

一旦消息被代理发送给消费者,代理就不能简单地召回它们,因为消费者可能正在处理它们。由消费者取消消息返回队列(例如,通过关闭其 connection/session)。

我的建议是调整您的 consumerWindowSize(在客户端的 URL 上设置),以便向您的消费者发送适当数量的消息。默认 consumerWindowSize 为 1M(1024 * 1024 字节)。较小的 consumerWindowSize 意味着更多的客户端能够同时接收消息,但这也意味着客户端需要进行更多的网络往返以告诉代理在它们 运行 低的。您需要 运行 基准测试才能找到适合您的用例和性能需求的 consumerWindowSize 值。