我有一个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)
但是,没有一列表示年龄。
有什么想法吗?
答案 0 :(得分:0)
要获取消息到达的时间,您可以使用sys.conversation_endpoints中的“security_timestamp”。
如何监控Service Broker-也许this有帮助。