代码之家  ›  专栏  ›  技术社区  ›  Ankit Singodia

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

  •  1
  • Ankit Singodia  · 技术社区  · 7 年前

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

    我的问题陈述 :

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

    现在,如果我再次点击相同的服务,那么在第一次点击时已经推送的500条消息将再次推送。虽然邮件复制目前不是什么大问题,但绝对不是人们想要的。如何处理这个问题。有什么想法吗?

    我想出的解决方案 :

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

    2. 使用数据库。但这肯定很麻烦。我也不会用这个。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Gary Russell    7 年前

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

    Spring集成 has an implementation

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

    目前还不清楚批处理有何帮助,因为在处理了一半批处理后,崩溃可能会发生在消费者端。

    无论是哪种情况,你都需要追踪坠机前的情况。