#masstransit
#массовый переход
Вопрос:
Я начинаю шире использовать функцию передачи данных сообщений masstransit и подхожу к тому, что мне нужно управлять данными сообщений в хранилище, то есть удалять старые данные.
Очевидный выбор — поручить какому-либо внешнему процессу привести в порядок данные, но очевидно, что запланированная (или нет) очистка может привести к удалению данных, которые все еще используются или на которые ссылаются из-за ошибок или очередей просроченных писем.
В идеале я хотел бы ограничить хранение сохраненных данных сообщений сообщениями только в очередях ошибок или неработающих писем и автоматически удалять данные для сообщений, которые были успешно обработаны.
Какой был бы наилучший подход для достижения этого с помощью MassTransit? Возможно, с использованием подхода промежуточного программного обеспечения или аналогичного, и если это так, то каков правильный подход?
Ответ №1:
Рекомендуется выполнять ручную очистку, используя все, что имеет смысл для используемого репозитория. Поскольку сообщения все еще могут находиться в очередях или в очередях ошибок / неработающих писем, как вы указали, на самом деле команда разработчиков / операций должна знать, когда подходящее время для удаления старых данных сообщения.
Я бы посоветовал более агрессивно отслеживать очереди ошибок / просроченных писем и управлять ими, сохраняя их пустыми. И затем просто определите подходящие временные рамки для удаления старых данных сообщения — одну неделю, десять дней, что угодно — и разберитесь с этим таким образом.
У меня был элемент невыполненной работы, чтобы придумать способ автоматического управления данными сообщений, но поскольку данные сообщения могут пересылаться (используя те же сохраненные данные) либо через publish, либо через send, хорошего способа отслеживать ссылки нет.
Комментарии:
1. Спасибо, Крис, я пришел к тому же выводу. Вскоре после того, как я опубликовал вопрос, я понял, что на самом деле у меня бывают ситуации, когда данные сообщения пересылаются без повторного создания.