【发布时间】:2018-10-16 21:33:30
【问题描述】:
我正在使用订阅 3 个不同队列的 SimpleMessageListenerContainer。 SimpleMessageListenerContainer 已配置了具有指数退避策略的 RetryOperationsInterceptor。
我的 SimpleMessageListenerContainer 已配置:
container.addQueueNames("news.politics","news.science","news.tech");
container.setMaxConcurrentConsumers(10);
container.setAdviceChain(new Advice[]{retryInterceptor});
如果来自已消费的 3 个队列之一的消息进入错误状态导致异常,则消费者会按预期触发策略的指数回退。但是,我注意到消费者停止循环,以处理其他 2 个队列上的消息。我在想,既然消费者的“MaxConcurrentConsumer”设置为 10,消费者将开始生成消费者线程并循环其余队列。
- 这是 SimpleMessageListenerContainer 的正常行为吗?
- 可以调整此行为吗?
- 对于我的用例,是否建议每个队列有一个 SimpleMessageListenerContainer 以保持它们隔离?也许想出一个装饰器 CompositeSimpleMessageListener 容器,它在每个队列内部都有一个 SimpleMessageListenerContainers 映射?
【问题讨论】:
标签: spring-boot rabbitmq spring-rabbit