MassTransit和RabbitMQ,消息的历史。

问题描述 投票:0回答:1

我的问题与其说是程序性的,不如说是架构性的,但我认为它适合S.O.的T&C。

我们有一个应用程序,它负责发送批量邮件.其架构组成如下。

enter image description here

  • 一个消费者通过MassTransit发送一个请求,准备一封邮件
    • 该邮件有。HTML内容,发件人,收件人列表。

此时,第二步由MassTransit Handler执行。

enter image description here

因为在第一步中,创建了一个E -mail模板,可能会产生30000封E -mail。对于每封电子邮件,都会向 RabbitMQ 发送特定的 Message,并单独发送电子邮件。

我们需要的是模板的历史记录和模板发送的所有电子邮件。由于我们的平台发送了数百万封 E-mail(仅内部 E-mail),我们担心将其存储到 SQL Server 中,因此我想知道是否有任何方法可以查询 RabbitMQ 以获取生成和处理的消息的历史记录,或者是否有更好的方法来实现。

email rabbitmq masstransit
1个回答
1
投票

RabbitMQ不保留消息的历史记录,一旦消息被发送和消耗,该消息的任何残余都会被删除。而且也不应该这样做。

如果您需要维护历史记录以用于审计目的,或甚至用于跟踪(例如电子邮件打开回调,或退订链接等),您可以使用任何类型的数据库来跟踪标识符、目的地、发送日期以及其他任何必要的内容。我不建议使用SQL Server,但如果你已经有了它,你可以设置一个相当窄的表,按日期时间分区,一旦你不再想保留旧的记录(比如3个月后),就放弃旧的文件组。你可以使用任何数据存储,只是取决于你的团队在生产中能够支持的操作。增加一项新的技术可能不是最佳的或可管理的。

你可以制作一个邮件发送后的事件,由一个单独的消费者(或批量消费者,考虑到数量)来消费,并单独写入邮件发送者的审计数据库。

© www.soinside.com 2019 - 2024. All rights reserved.