私は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;
}
上記のコードでは、1 つの Service Bus クライアントのみのメソッドを示しています。私のワーカー ロールでは、3 つのサービス バス クライアントを使用しています。つまり、異なるキューからメッセージを非同期的に送受信しています。いくつかのメッセージがどのように機能し、いくつかのメッセージが理由もなくデッドレターになるのは本当に奇妙です。何が問題なのか分からない人がいたら教えてください