【问题标题】:MassTransit and RabbitMQ, history of messagesMassTransit 和 RabbitMQ,消息历史
【发布时间】:2020-05-01 11:31:31
【问题描述】:

我的问题更多的是架构性而非程序性,但我认为它符合 S.​​O. 的 T&C。

我们有一个负责发送大量电子邮件的应用程序。 架构组成如下:

  • 消费者通过 MassTransit 发送请求以准备电子邮件
    • 电子邮件包含:HTML 内容、发件人、收件人列表

此时,MassTransit Handler 执行第二步:

这是必需的,因为在第一步中,创建了一个电子邮件模板,它可能会生成 30'000 封电子邮件。对于每封电子邮件,都会将特定的消息发送到 RabbitMQ,然后单独发送电子邮件。

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

【问题讨论】:

    标签: email rabbitmq masstransit


    【解决方案1】:

    RabbitMQ 不保留消息的历史记录,一旦它们被分派和消费,该消息的任何残余都会被删除。而且也不应该。

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

    您可以生成一个电子邮件发送后事件,一个单独的消费者(或批量消费者,给定数量)将使用该事件并将其写入与电子邮件发件人分开的审计数据库。

    【讨论】:

    • 我没有考虑后处理消息。太棒了 :-) 我们支持我公司的许多数据库,所以我可能会进入一个 blob 来存储电子邮件状态的 JSON。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    相关资源
    最近更新 更多