2014-06-23 9 views
1

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

1) Публикация типа события, которое не имеет абонентов 2) Абонент вне форума

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

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

ответ

1

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

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

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

+0

Спасибо за понимание. Я поеду с отменой подписки на выключение, а также с установкой TimeToBeReceived. – user3429570

Смежные вопросы