Rabbitmq 拉比特旺';服务再次启动后,请勿发送信息

Rabbitmq 拉比特旺';服务再次启动后,请勿发送信息,rabbitmq,spring-cloud,spring-cloud-stream,spring-rabbit,Rabbitmq,Spring Cloud,Spring Cloud Stream,Spring Rabbit,在我的系统中,我使用springcloudstream和RabbitMQ来发送和接收事件。我让RabbitMQ运行,服务A启动,服务B关闭服务A向服务B发送事件。然后我打开了我的服务B,现在我希望Rabbit能够取消活动,但什么也没发生。这是正确的行为吗?我不熟悉RabbitMQ,但我认为它应该保证所有事件最终都会找到它的接收者。我的应用程序很简单,基于,没有额外的配置。我错过了什么?如果您的消费者没有组,则该队列是一个匿名的自动删除队列。你需要一个团队来坚持。看 生产者不会将队列绑定到exch

在我的系统中,我使用
springcloudstream
和RabbitMQ来发送和接收事件。我让RabbitMQ运行,服务A启动,服务B关闭服务A服务B发送事件。然后我打开了我的服务B,现在我希望Rabbit能够取消活动,但什么也没发生。这是正确的行为吗?我不熟悉RabbitMQ,但我认为它应该保证所有事件最终都会找到它的接收者。我的应用程序很简单,基于,没有额外的配置。我错过了什么?

如果您的消费者没有
,则该队列是一个匿名的自动删除队列。你需要一个团队来坚持。看

生产者不会将队列绑定到exchange,消费者会

如果先绑定生产者,再绑定新的消费者组,则消息也将丢失

使用RabbitMQ绑定器,如果您提前知道消费者组,则可以设置
…producer.requiredGroups
属性,队列将被绑定

所需的组

以逗号分隔的组列表,生产者必须确保将消息传递到这些组,即使这些组在消息创建之后才开始传递(例如,通过在RabbitMQ中预先创建持久队列)


我对spring cloud stream了解不多,但从RabbitMQ的角度来看,如果您的制作人发送消息
,但没有队列可以路由此消息,则消息将被丢弃。我建议您阅读一点关于RabbitMQ及其管理API的内容,它允许您检查是否存在任何队列以及消息发生了什么。RabbitMQ不保证消息能够找到其接收者、生产者和消费者,以便通过它进行正确通信。队列是匿名的,除非配置消费者组,否则将自动删除。新消费者只会收到新消息。看看我的答案。