1

我有一个 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)

但是,没有一列表明年龄。

有任何想法吗?

4

1 回答 1

0

要获取消息到达的时间,您可以在sys.conversation_endpoints中使用“security_timestamp” 。

如何监控 Service Broker - 也许会有所帮助。

于 2012-09-05T11:42:33.303 回答