Я использую шину служебной шины azure для отправки сообщений туда и обратно между ролью в Интернете и ролью пользователя, и я действительно думал, что это действительно хорошее решение, но в последнее время я обнаружил, что служебная шина очень неустойчива, иногда она работает, а иногда и сообщения идут в мертвую букву без всякой причины. Я не знаю, есть ли проблема в моем коде, но мне кажется, что это просто неустойчиво, потому что иногда это работает, а иногда и нет. Поэтому я хотел знать, есть ли альтернативное решение для служебной шины, или я был бы очень рад узнать о любых ошибках, которые я совершаю в реализации служебной шины, что приводит к моей вышеупомянутой проблеме. Ниже мой кодКак отправлять сообщения между ролью в Интернете и ролью, отличной от Service Bus?
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 клиентов сервисной шины, то есть асинхронная отправка и получение сообщений из разных очередей. Его действительно странно, как работают некоторые сообщения, а некоторые идут на мертвую букву без какой-либо причины, иногда ее чередуют, поэтому я думал, что в моем коде должна быть проблема, но я не могу найти ее. Пожалуйста, дайте мне знать, если кто-нибудь знает, в чем проблема
Но с очередями хранения в лазури, я должен был бы повторно опросить очереди, чтобы проверить, есть ли в очереди новые сообщения! Я не хочу этого делать, так как это увеличит мою стоимость с огромным запасом ..... вот почему я предпочитал служебную шину, но, к сожалению, сервисная шина, похоже, не достаточно надежна! Любые другие идеи? – Bitsian
ОК, редактируя мой ответ – Igorek
Спасибо, проверим! Также если вы не возражаете, можете ли вы посмотреть на мой код служебной шины и сообщить мне, если вы обнаружите ошибки, которые могут вызвать проблему? – Bitsian