如何使用RabbitMQ处理应用程序崩溃

时间:2018-04-28 18:29:06

标签: rabbitmq jms spring-amqp spring-rabbit spring-rabbitmq

最近,我已经针对几个用例实现了RabbitMQ。发送邮件就是其中之一(在实践中很常见)

我的问题陈述

Web服务(比如服务A)需要在队列中发布1000条消息(某些邮件发送引擎将选择这些消息)。但不幸的是,在将500条消息发布到队列后,我的应用程序崩溃了。

现在,如果我再次点击相同的服务,那么将再次推送已在第一次推送中推送的500条消息。虽然邮件重复现在并不是什么大不了的事,但绝对不是理想的。如何应对这一个。有什么想法吗?

我提出的解决方案

  1. 使用批处理功能 - 但AsyncRabbitTemplate不支持它,所以我不能使用它。

  2. 使用数据库。但这绝对是麻烦的。我也不会使用这个。

1 个答案:

答案 0 :(得分:0)

如果您可以识别重复项,则可以在消费者端使用Idempotent Receiver企业集成模式。

Spring Integration has an implementation

但是,由于那是用于发送和接收操作,因此不清楚为什么使用异步模板。这个应用程序听起来只需要发送请求,而不是等待回复。

还不清楚批处理如何帮助,因为在处理完一半批次后,可能会在消费者方面发生崩溃。

在任何一种情况下,您都需要跟踪崩溃前的位置。