繁体   English   中英

带有RabbitMQ的春季云流

[英]Spring cloud stream with RabbitMQ

目前,在我的项目中,我正在使用Rabbitmq的Spring Cloud Stream。 一切都很好,但是问题是当我在StreamListener中为消息类型设置条件时。 如果RabbitMQ与类型不匹配(找不到ID为ZZZZZZ的消息的@StreamListener匹配项),则此消息将从队列中消失。 如果邮件类型错误,我不想删除此邮件。 这个问题有解决方案吗?

有两种方法可以做到:

  • 如果消息的类型错误,则引发异常。 在这种情况下,由于未成功处理消息且未收到ACK,因此不会从队列中删除该消息。
  • 一旦检测到类型错误,就可以自己将消息插入队列中。

两种方法都可能遭受无限循环的困扰。 消息已处理,类型错误,重新插入,然后重复此过程。 为了避免这种情况,您可以添加一些重新插入策略,例如:指数延迟或有限数量的重新插入等。

但是会引起一些疑问:为什么您的服务会消耗本不应该的消息? 也许您需要特定处理器的此消息? 在这种情况下,您可以路由到合适的处理器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM