nservicebus: события и очередь недоставленных сообщений

При использовании модели Pub / Sub с NSB следующие два сценария, по-видимому, вызывают заполнение очереди недоставленных сообщений, что в конечном итоге приводит к ошибке «Недостаточно ресурсов».

1) Публикация типа события, у которого нет подписчиков 2) Подписчик не в сети

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

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


person user3429570    schedule 23.06.2014    source источник


Ответы (1)


При использовании NServiceBus события считаются такими же важными, как и команды, и поэтому на них распространяются те же гарантии в отношении долговечности, доставки и т. Д.

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

Другой вариант - предоставить атрибут [TimeToBeReceived(...)] в сообщениях о событиях, но его следует использовать только в том случае, если можно безопасно определить, что содержимое события теряет свою актуальность по прошествии фиксированного времени для всех подписчиков.

person mookid8000    schedule 23.06.2014
comment
Спасибо за понимание. Я пойду как с отказом от подписки при завершении работы, так и с установкой TimeToBeReceived. - person user3429570; 23.06.2014