Использование SQL Server Service Broker для обмена сообщениями между приложениями .NET - PullRequest
0 голосов
/ 21 октября 2011

Я рассматриваю возможность использования Service Broker для обмена сообщениями между двумя приложениями .NET, где одно приложение должно надежно отправлять сообщения другому.У меня есть довольно хорошее представление о том, как это выглядит на стороне инициатора.

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

Насколько я могу судить, сообщение удаляется из очереди, когда я делаю ПРИЕМ.Так что же делать потребительскому приложению в случае сбоя?Снова отправить сообщение в очередь?Могу ли я пометить сообщение как "в процессе обработки", а затем удалить его после успешного завершения моей задачи?

Как бы я смоделировал это с помощью Service Broker?

1 Ответ

3 голосов
/ 21 октября 2011

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

...