Задержка обработки сообщений при использовании NServiceBus pub / sub без Sagas - PullRequest
0 голосов
/ 22 ноября 2011

Я использую NServiceBus в приложении pub / sub для уведомлений о событиях в веб-приложении.Прямо сейчас, когда что-то происходит (например, создается заметка), сообщение создается и отправляется на шину, и абонент забирает его и определяет, кому необходимо получить уведомление по электронной почте или SMS-сообщение о событии.

Я хочу сделать задержку в потоке обработки для некоторых событий.Цель этой задержки аналогична старой 7-секундной задержке в прямом эфире - она ​​дает пользователю, который запустил время события, чтобы отменить то, что они сделали.

Рассмотрим наше событие CommentCreated.Это событие отправляется, когда мой сервисный слой сохраняет новый комментарий.Этот комментарий может быть помечен как частный или внутренний, и пользователь нередко создает комментарий, а затем понимает, что он должен был пометить его как частный.

Я хотел бы выполнить эту задержку без Саги, потому что, с одной стороны, я не разбираюсь в них, на двоих они кажутся излишним для этого простого требования, а для трех я не хочу иметь дело с другим сервером базы данныхсохранить свои данные.Опция гетто будет состоять в том, чтобы установить таймер в обработчике моего подписчика и подождать несколько минут перед обработкой, но это просто кажется неправильным.

Возможно ли сделать это в NServiceBus? Я знаюнекоторые люди скажут, что нужно создать службу опроса, но такого рода вызов поражению цели служебной шины ...

1 Ответ

2 голосов
/ 23 ноября 2011

Я не знаю какого-либо приятного способа, кроме саг - либо с помощью собственного Saga<...> NServiceBus, либо путем эффективной реализации саги самостоятельно - и используя какой-то механизм тайм-аута, такой как, например, служба тайм-аутов NServiceBus.

Я согласен с вами, что выполнить это требование может быть просто - учитывая, что необходимая инфраструктура на месте!Однако, если вы настаиваете на построении этого метода гетто, я не думаю, что удовлетворить это требование просто.

Т.е. когда у вас настроен NServiceBus с надлежащим сервисом тайм-аута и способом сохранения саг, реализация этого будет простой.

Но взломать это, используя таймеры и еще много чего, просто пригласитвсе виды неполадок, например, таймеры не срабатывают при перезапуске IIS вашего веб-приложения и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...