Раньше я использовал RabbitMQ в качестве платформы обмена сообщениями, и у меня никогда не было никаких проблем с этим - к сожалению, мы недавно перевели нашу инфраструктуру на Azure, t обеспечивают серверы RabbitMQ, поэтому я подумал о попытке расширения служебной шины.C# Service Bus несколько слушателей получают одно и то же сообщение (BrokeredMessage)
У меня есть один писатель и несколько читателей. В настоящее время каждый читатель будет читать другое сообщение (конкурирующий шаблон сообщения - например, хороший для балансировки нагрузки).
Что я хочу, это то, что все читатели получают то же сообщение и обрабатывают его сами.
Читатель (ы):
string connectionKey = "....";
this.client = QueueClient.CreateFromConnectionString(connectionKey, "dev");
this.client.OnMessage((message) =>
{
try
{
Console.WriteLine("Message received: " + message.GetBody<string>());
Console.WriteLine("Message ID: " + message.MessageId);
// message.Complete();
}
catch (Exception e)
{
Console.WriteLine("Exception " + e.Message);
}
});
Автор:
Console.WriteLine("Sending message " + message);
BrokeredMessage msg = new BrokeredMessage(message);
this.client.Send(msg);
Я искал решение в течение двух часов и не смогли найти ничего. В RabbitMQ это будет поведение по умолчанию.
Image showing pattern of what I have vs. what I need
Кажется, мой код работает, если я использую 1 подписку для каждого слушателя. Это верно? Итак, если у меня будет 100 000 пользователей, у меня будет 100 000 подписчиков? – TheWalkingPanda
@ TheWalkingPanda Что вы считаете читателем, зависит от вас. Существуют и другие технологии, которые могут помочь вам, если вы ищете способ сделать трансляцию. Одним из них является SignalR. Вы знакомы с тем, как это работает? Теоретически вы можете вывести сообщение из очереди или темы и использовать SignalR для трансляции этого сообщения для всех или для определенной группы подключенных пользователей. Если ваши пользователи являются мобильными пользователями, вы можете пойти также с Azure Notification Hub и настраиваемыми тегами. –
Я читал о SignalR, ища решение. Моя настройка не требует большого количества подключенных потребителей, мне просто интересно, есть ли у вас несколько подписчиков, как работают темы, или если я что-то делаю неправильно. Темы Nevermind подходят для меня;) – TheWalkingPanda