Сопоставление ошибочных сообщений с их исключениями в NServiceBus с использованием MSMQ

При настройке NServiceBus с помощью MSMQ с использованием стандартных параметров конфигурации IServer вы определяете:

  • входная очередь
  • очередь ошибок.

Когда ваш обработчик сообщений NServiceBus по какой-либо причине не может обработать сообщение, он генерирует исключение и перемещает сообщение в очередь ошибок.

Является ли сообщение в очереди ошибок тем же самым сообщением, которое было в очереди ввода? Если да, как я себе представляю, есть ли способ узнать, почему эти сообщения не сработали? Прикреплены ли к ним какие-либо метаданные, которые могут содержать исходное исключение?

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

Любые идеи?

ваше здоровье


person andy    schedule 02.05.2011    source источник


Ответы (1)


Это точная копия сообщения, которое отправляется с ошибкой q. Идентификатор сообщения и исходная очередь хранятся в заголовках, чтобы сообщение можно было воспроизвести. В версии 2.5 нет хорошего способа получить сведения об исключении для ошибочного сообщения, поэтому вам необходимо сопоставить идентификатор сообщения с записями в файлах журнала. Тот факт, что NSB отвечает за вас, часто приводит к тому, что одно и то же сообщение журнала отображается несколько раз для сообщения, поэтому обязательно используйте последнюю запись.

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

person Andreas Öhlund    schedule 02.05.2011
comment
+1 хм... я так и думал. 3.0 звучит хорошо, а вот 2.5 жалко, особенно, как вы говорите, из-за повторных попыток. Спасибо. - person andy; 02.05.2011