MassTransit и RabbitMQ, история сообщений - PullRequest
0 голосов
/ 01 мая 2020

мой вопрос скорее архитектурный, чем процедурный, но я думаю, что он подойдет для T & C SO

У нас есть приложение, которое отвечает за рассылку массовых писем. Архитектура выглядит следующим образом:

enter image description here

  • Потребитель отправляет запрос через MassTransit для подготовки электронного письма
    • Электронное письмо содержит: HTML Содержимое, Отправитель, Список получателей

На этом этапе обработчик MassTransit выполняет второй шаг:

enter image description here

Это необходимо, поскольку на первом этапе создается шаблон электронной почты, который может генерировать 30 000 сообщений электронной почты. Для каждого электронного письма определенное c Сообщение отправляется в RabbitMQ, и электронное письмо отправляется индивидуально.

Что нам нужно, это история шаблона и все электронные письма, отправленные Шаблон. Поскольку наша платформа отправляет миллионы сообщений электронной почты (только для внутренних сообщений), мы беспокоимся о том, чтобы сохранить это на сервере SQL, поэтому мне было интересно, можно ли каким-либо образом запросить RabbitMQ, чтобы получить историю созданных сообщений и обработан или если есть лучший способ добиться этого.

1 Ответ

1 голос
/ 01 мая 2020

RabbitMQ не хранит историю сообщений, после отправки и использования все остатки этого сообщения удаляются. И не должен.

Если вам нужно вести историю для целей аудита или даже для отслеживания (например, обратные вызовы по электронной почте или ссылки для отмены подписки, что угодно), вы можете использовать любую базу данных для отслеживания идентификатор, пункт назначения, дата отправки и все остальное, что необходимо. Я бы не стал предлагать SQL Сервер, но если он у вас уже есть, вы можете настроить довольно узкую таблицу, разбитую по дате и времени, и удалить старые файловые группы, как только вы больше не захотите хранить старые записи (скажем, через 3 месяца). Вы можете использовать любое хранилище данных, это зависит только от того, что ваши команды могут оперативно поддерживать в производстве. Добавление новой технологии может быть неоптимальным или управляемым.

Вы можете создать событие после отправки по электронной почте, которое будет потреблять отдельный потребитель (или пакетный потребитель, учитывая объем), и записать его в базу данных аудита отдельно от отправитель электронной почты.

...