Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 зависают сообщения в исходящей очереди ServiceBroker  [new]
Leax
Member

Откуда: Киев
Сообщений: 438
Приветствую!

Иногда при отправке сообщений через ServiceBroker сообщения никуда не уходят из исходящей очереди.
SELECT message = cast(message_body as xml), *  FROM sys.transmission_queue


При этом у них пустой статус (поле transmission_status). Самое странное, что незадолго до этого сообщения отправлялись нормально.

Profiler не показывает никакой информации, связанной с зависнувшими в исходящей очереди.

Обычно помогает принудительное закрытие всех диалогов в данной очереди (end conversation), после чего сообщения снова начинают уходить нормально. Однако при закрытии диалогов будет утеряна вся информация в очереди. Поэтому часто данный вариант неприемлем.

Можно ли как то восстановить работоспособность очереди без перезапуска сервера-отправителя и без удаления сообщений из исходящей очереди (принудительного закрытия диалогов)?
7 июн 12, 19:22    [12684169]     Ответить | Цитировать Сообщить модератору
 Re: зависают сообщения в исходящей очереди ServiceBroker  [new]
Leax
Member

Откуда: Киев
Сообщений: 438
Решено с помощью Profiler - контролем событий ServiceBroker на стороне сервера-приёмника.
Там выдавалась ошибка: "This message could not be delivered because it is duplicate".

Оказалось, что отсутствовал маршрут с приемника на отправитель (т.е. обратный маршрут) для отправки подтверждения о получении сообщения. Как оно сразу работало нормально без наличия обратного маршрута - непонятно.
8 июн 12, 12:57    [12687121]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить