我的问题与其说是程序性的,不如说是架构性的,但我认为它适合S.O.的T&C。
我们有一个应用程序,它负责发送批量邮件.其架构组成如下。
此时,第二步由MassTransit Handler执行。
因为在第一步中,创建了一个E -mail模板,可能会产生30000封E -mail。对于每封电子邮件,都会向 RabbitMQ 发送特定的 Message,并单独发送电子邮件。
我们需要的是模板的历史记录和模板发送的所有电子邮件。由于我们的平台发送了数百万封 E-mail(仅内部 E-mail),我们担心将其存储到 SQL Server 中,因此我想知道是否有任何方法可以查询 RabbitMQ 以获取生成和处理的消息的历史记录,或者是否有更好的方法来实现。
RabbitMQ不保留消息的历史记录,一旦消息被发送和消耗,该消息的任何残余都会被删除。而且也不应该这样做。
如果您需要维护历史记录以用于审计目的,或甚至用于跟踪(例如电子邮件打开回调,或退订链接等),您可以使用任何类型的数据库来跟踪标识符、目的地、发送日期以及其他任何必要的内容。我不建议使用SQL Server,但如果你已经有了它,你可以设置一个相当窄的表,按日期时间分区,一旦你不再想保留旧的记录(比如3个月后),就放弃旧的文件组。你可以使用任何数据存储,只是取决于你的团队在生产中能够支持的操作。增加一项新的技术可能不是最佳的或可管理的。
你可以制作一个邮件发送后的事件,由一个单独的消费者(或批量消费者,考虑到数量)来消费,并单独写入邮件发送者的审计数据库。