我一直在使用 azure 服务总线在 web 角色和工作角色之间来回发送消息,我真的认为这是一个非常好的解决方案,但最近我发现服务总线非常不稳定,有时它可以工作,有时消息会消失无缘无故变成一纸空文。我不知道它是否在我的代码中存在问题,但在我看来它只是不稳定的,因为有时它有效,有时它不起作用。所以我想知道是否有任何替代服务总线的解决方案,或者我很高兴知道在服务总线实现中出现的任何错误导致我的上述问题。下面是我的代码
public override void Run()
{
while (!IsStopped)
{
try
{
if (BroadcastReceived)
{
BroadcastReceived = false;
// Receive the message from Web Role to upload the broadcast to queue
BroadcastClient.BeginReceive(OnWebRoleMessageReceived, null);
}
if (SignalRMessageReceived)
{
SignalRMessageReceived = false;
// Receive the message from SignalR BroadcastHub
SignalRClient.BeginReceive(OnSignalRMessageReceived, null);
}
if (SignalRFirstTimeMessageReceived)
{
SignalRFirstTimeMessageReceived = false;
// Receive the message from SignalR BroadcastHub
SignalRFirstTimeClient.BeginReceive(OnSignalRFirstTimeMessageReceived, null);
}
}
}
public void OnWebRoleMessageReceived(IAsyncResult iar)
{
BrokeredMessage receivedBroadcastMessage = null;
receivedBroadcastMessage = BroadcastClient.EndReceive(iar);
if (receivedBroadcastMessage != null)
{
// Process the message
receivedBroadcastMessage.Complete();
}
BroadcastReceived = true;
}
在上面的代码中,我只展示了一个服务总线客户端的方法。在我的工作角色中,使用了 3 个服务总线客户端,即异步发送和接收来自不同队列的消息。它真的很奇怪,有些消息是如何工作的,有些消息是无缘无故地死信的,有时它是替代的,所以我认为我的代码中一定有问题,但我找不到任何问题。如果有人不知道问题是什么,请告诉我