Как отслеживать возраст сообщений в SQL Service Broker?

У меня есть очередь SQL Server 2008 Service Broker, которая обрабатывает сообщения, вызывая хранимую процедуру CLR (которая, в свою очередь, передает сообщения через HTTP в сторонний REST API). Мне нужно разобраться в вопросе "какое резервное копирование?" или "насколько далеко?" это очередь. Хотя я понимаю, что общее количество сообщений в очереди является хорошим индикатором прогресса, меня интересует вопрос: «Как долго последнее обработанное сообщение ожидало обработки в очереди?» Насколько я могу судить, выбор из очереди дает вам все сообщения в ней, но не дает возраст сообщения. Например:

SELECT TOP 100 *, casted_message_body = 
CASE message_type_name WHEN 'X' 
  THEN CAST(message_body AS NVARCHAR(MAX)) 
  ELSE message_body 
END 
FROM [SyncReadTargetQueue] WITH(NOLOCK)

Но ни в одной из колонок не указан возраст.

Есть идеи?


person Matt K    schedule 30.08.2012    source источник


Ответы (1)


Чтобы получить время получения сообщения, вы можете использовать «security_timestamp» в sys.conversation_endpoints< /а>.

Как отслеживать Service Broker — может помочь это.

person Jānis    schedule 05.09.2012