2010-06-01 4 views
0

Я пишу приложение C#, которое использует очереди SSB для связи с другими системами. При получении сообщения из очереди SSB я не всегда уверен, что смогу обработать его. Поэтому я хотел бы заглянуть в очередь (или, может быть, просто получил уведомление о том, что есть сообщение, не обязательно его содержимое), но в то же время используя синтаксис SSB, включая WAITFOR.SQL Service Broker Peek on queue

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

+0

Что вы собираетесь делать, если решите, что не можете обрабатывать следующее сообщение в очереди? –

+0

Запишите сообщение журнала и выйдите из него, возможно. Но я иду по маршруту транзакций, не нашел способа просто заглянуть. – Jonny

ответ

0

Сначала вы должны получить сообщение, а затем решить, сможете ли вы его обработать. Если вы не можете, «напишите сообщение журнала и выйдите из системы», но зафиксируйте транзакцию получения. Если вы откат транзакции (или просто загляните в очередь, как вы намеревались), вы попадете в ситуацию, когда есть сообщение, которое вы не можете обработать в очереди, и вы продолжаете подглядывать (или получать/откатывать) его на неопределенный срок.

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