Вторая часть моей статьи здесь посвящена обсуждению ошибок компонента Service Broker, их возникновению и способам их устранения. Для вас важно различать две категории ошибок:
- восстанавливаемый : проблемы с транспортом, большинство ошибок конфигурации, например, неправильная маршрутизация, недоступный сервер. Все это приведет не к ошибке SSB, а к задержке. Сообщения будут оставаться в файле application_queue, ожидая, что проблема временная и может быть решена, , включая некоторые проблемы конфигурации . Как только проблема решена, SSB повторит попытку и сообщение будет доставлено.
- неисправимо : эти проблемы SSB считает невосстановимыми, например. плохой формат сообщения. В таком случае диалог будет прерван, и обе конечные точки получат сообщение об ошибке.
У меня также есть статья Обработка ошибок в процедурах компонента Service Broker , в которой рассматриваются некоторые темы, относящиеся к обработке исключений в активированном контексте SSB.
Последнее замечание: я настоятельно не рекомендую выключать функцию обнаружения ядовитых сообщений. Гораздо лучше отключить обработку, чем раскручивать ad-nauseam без прогресса из-за ядовитого сообщения.
Как и в теме о том, как симулировать поврежденное сообщение: сложно симулировать (вы можете попробовать настроить перенаправитель портов, который пропускает весь трафик, но случайным образом портит часть из него), но довольно бессмысленно. Весь трафик SSB, даже если он находится в открытом виде, имеет криптографическую подпись, и любое повреждение сообщения может привести к внезапному отключению из-за ошибки проверки подписи сообщения.