я собирался через учебник разделяемого RabbitMQ hereRabbitMQ RPC учебник запрос
Я предполагаю, что клиентский код ниже
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
if (ea.BasicProperties.CorrelationId == corrId)
{
return Encoding.UTF8.GetString(ea.Body);
}
}
получает ли все сообщения в очереди и без необходимости перебирать сообщения не предназначенный для этого. Является ли это их в любом случае, мы можем избежать этого. Мы можем изменить клиента, чтобы получать только сообщения, предназначенные для него.
Основная работа, которую я намереваюсь достичь через RabbitMQ, это шаблон запроса-ответа, в котором запрос будет получен веб-службой, которая будет отправлять данные в очередь, у объекта данных будет уникальный ссылочный номер. Это будет получено асинхронным tcp-клиентом, который будет отправлять данные на уровне tcp/ip на основе полученного им сообщения.
При получении ответа от асинхронного канала tcp/ip канал будет анализировать данные и отвечать на запросы в очереди с соответствующим ссылочным номером запроса.
Подход RPC хорошо подходит для него, но общий код клиента имеет этот недостаток, который бы оценил обратную связь.
Что я на самом деле хочу, чтобы объявить одну очередь, где все потребительские будут получать сообщения. – azimyasin
Я думаю (мое личное мнение), что то, что вы хотите построить, не является правильным. Может быть, тема с «ключом маршрутизации» лучше. RPC предназначен для классической модели RPC, но несинхронно. – Gabriele