【发布时间】:2019-01-08 17:14:03
【问题描述】:
我正在尝试按照此处提到的博客演示 RabbitMQ 信用流机制的用法:https://www.rabbitmq.com/blog/2015/10/06/new-credit-flow-settings-on-rabbitmq-3-5-5/
作为我演示的一部分,我想表明如果消费者无法处理消息,RabbitMQ 将阻止发布者进一步发布消息。
在消费者方面,我将消息保存在数据库中。我已将 RabbitMQ 确认模式设置为 MANUAL。消息成功持久化到数据库后,消费者端的代码会显式确认。
作为演示的一部分,我已将 rabbitmq.config 文件中的 credit_flow_default_credit 参数设置为 2。
因此,我的 rabbitmq.config 文件如下所示:
[
{rabbit,[
{loopback_users, []},
{credit_flow_default_credit, {2,1}}
]
}
].
据我了解,如果 RabbitMQ 无法处理 2 条消息,则必须阻止发布者发布的第 3 条消息。
为了实现我想要的,我锁定了数据库中的表,这样消费者就无法持久化记录。因此,它也将无法 ACKNOWLEDGE。
但是,我认为发布者在发布消息时没有任何问题,即使它已经发布了 2 条消息。为什么 RabbitMQ 不应该阻止消息的进一步发布?
有没有办法可以从 Spring AMQP 检查 rabbitmq.config?我想确保 credit_flow_default_credit 确实设置为 2。
【问题讨论】:
标签: rabbitmq spring-amqp