在我们的应用程序中,我们已经使用sql server实现了signalr scaleout。背板已配置,但似乎无法向连接到它的所有服务器发送消息。是否存在事件或任何其他方式来记录发送到backpalne的请求以及它然后发送这些消息的服务器,以便我们可以确定问题的位置。我们可以在每个服务器中启用信号器跟踪日志,以下是来自它的跟踪。但是这里的信息太少,我们无法找到问题。
2017-02-02 04:05:11.7642 TRACE SignalR.SqlMessageBus Stream 0 : No records received (System.Diagnostics.TraceSourceExtensions.Trace)
2017-02-02 04:05:11.7798 TRACE SignalR.SqlMessageBus Stream 0 : Waiting 3000ms before checking for messages again (System.Diagnostics.TraceSourceExtensions.Trace)
2017-02-02 04:05:14.8111 TRACE SignalR.SqlMessageBus Created DbCommand: CommandType=Text, CommandText=SELECT [PayloadId], [Payload], [InsertedOn] FROM [SignalR].[Messages_0] WHERE [PayloadId] > @PayloadId, Parameters= [Name=PayloadId, Value=51373] (System.Diagnostics.TraceSourceExtensions.Trace)
2017-02-02 04:05:14.8111 TRACE SignalR.SqlMessageBus Stream 0 : No records received (System.Diagnostics.TraceSourceExtensions.Trace)
2017-02-02 04:05:14.8267 TRACE SignalR.SqlMessageBus Stream 0 : Setting up SQL notification (System.Diagnostics.TraceSourceExtensions.Trace)
2017-02-02 04:05:14.8267 TRACE SignalR.SqlMessageBus Created DbCommand: CommandType=Text, CommandText=SELECT [PayloadId], [Payload], [InsertedOn] FROM [SignalR].[Messages_0] WHERE [PayloadId] > @PayloadId, Parameters= [Name=PayloadId, Value=51373] (System.Diagnostics.TraceSourceExtensions.Trace)
我怎么知道sql背板是否已经工作,如果没有?
答案 0 :(得分:2)
简短回答:验证后座是否正常工作必须满足以下条件,您应该能够看到
SignalR.SqlMessageBus
的消息(启用时)更多信息:
我们还将SignalR与SQL scaelout一起使用,当新消息持久保存到数据库表时,我们会得到以下跟踪日志:
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Saving payload with 1 messages(s) to SQL server
在此之后我们可以在相应的SignalR表中识别消息(取决于您的配置可能有多个):
在您的日志中,我只看到来自SignalR.SqlMessageBus
的邮件。要获得更多详细信息,您还应将与横向扩展相关的跟踪源设置为Verbose,ActivityTracing
,如下所示(请参阅显示SignalR.ScaleoutMessageBus
日志消息的最后两行):
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : SqlReceiver last payload ID=8390, new payload ID=8391
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : SqlReceiver last payload ID=8390, new payload ID=8391
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Updated receive reader initial payload ID parameter=8391
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Updated receive reader initial payload ID parameter=8391
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Payload 8391 containing 1 message(s) received
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Payload 8391 containing 1 message(s) received
SignalR.ScaleoutMessageBus Information: 0 : OnReceived(0, 8391, 1)
SignalR.ScaleoutMessageBus Information: 0 : OnReceived(0, 8391, 1)
配置SignalR.ScaleoutMessageBus
跟踪源可以这样完成:
<source name="SignalR.ScaleoutMessageBus" switchName="SignalRSwitch" >
<listeners>
<add name="SignalR-Bus" />
</listeners>
</source>