2015-05-21 3 views
0

я собирался через учебник разделяемого 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 хорошо подходит для него, но общий код клиента имеет этот недостаток, который бы оценил обратную связь.

ответ

0

На самом деле я не совсем понял вашу цель, но когда вы создаете модель RPC, вам нужно создать «очередь ответов», эта очередь привязана только к клиенту. Это означает, что вы получите обратно только клиентские сообщения, а не все сообщения. Поскольку модель RPC Rabbitmq является асинхронной, вы можете выполнить несколько запросов, не дожидаясь ответа, и ответы не могут иметь тот же порядок публикации.

Корреляция идентификатор необходимо сопоставить клиентские запросы с ответами, так что не «т.к» сообщения

надеюсь, что это помогает

+0

Что я на самом деле хочу, чтобы объявить одну очередь, где все потребительские будут получать сообщения. – azimyasin

+0

Я думаю (мое личное мнение), что то, что вы хотите построить, не является правильным. Может быть, тема с «ключом маршрутизации» лучше. RPC предназначен для классической модели RPC, но несинхронно. – Gabriele

Смежные вопросы