Я использую NServiceBus для выполнения некоторой работы в обработчике, где информация сохраняется в базе данных. В рамках этого процесса я отправляю сообщение через веб-сокет, чтобы сообщить клиентам обновить свою информацию.
Проблема заключается в том, что, поскольку работа с БД выполняется в транзакции, клиенты, получающие сообщение веб-сокета, могут попытаться прочитать данные до того, как транзакция будет зафиксирована, что приведет к возврату устаревших данных.
Поскольку весь обработчик работает в области транзакции, невозможно выполнить эту работу только в конце транзакции. Есть ли крючок, позволяющий мне выполнять работу после фиксации транзакции?
В качестве альтернативы я хотел бы создать «Издателя транзакций», в котором издатель будет зачислен в транзакцию, однако это не кажется таким простым.
Как вы думаете, какой подход лучше всего подходит для решения этой проблемы? Отключение транзакций не вариант.
Похожая проблема может возникнуть, например, при попытке отправить письмо. т. е. я хочу, чтобы почта отправлялась только после фиксации транзакции.