AMQP 1.0 Временные очереди в Node.js с rhea - PullRequest
0 голосов
/ 18 октября 2018

Я использую RabbitMQ некоторое время.У меня есть несколько микросервисов, использующих базовый механизм RPC, очень похожий на тот, который описан в Кроликах .Я пытаюсь перейти на AMQP 1.0 с помощью rhea, потому что мне нужно использовать Amazon Active MQ.Но я все еще застрял в репликации этого простого шаблона:

ch.assertQueue('', {exclusive: true}, function(err, q) {
 let corr = //some UUID
   ch.consume(q.queue, function(msg) {
     /* */
   });

ch.sendToQueue('rpc_queue',
      "TEST2",
      { correlationId: corr, replyTo: q.queue });
    });
})

Что я не получаю от rhea, так это возможность иметь временную очередь (связанную с клиентским подключением) и затем нажать «replyTo» дляэти очереди.

Я пробовал:

client.open_receiver({
    source: { address: "rpc:callback", expiry_policy: "connection-close" }
  });

с использованием expiry_policy, но это не работает (я пробую даже RabbitMQ с плагином AMQP 1.0, а затем Apache Active MQ).

Дело в том:

  1. Я хотел бы иметь временную (эксклюзивную) очередь, которая автоматически удаляется при разрыве клиентского соединения
  2. Использовать эту временную очередь (Iмогу вручную назначить ему временное имя, это не имеет смысла) для обращения к сообщению replyTo

, но я не могу ни получить временную очередь (исключая AMQP 0.9.1), нииспользуйте это имя для адресации сообщения.Чего мне не хватает?

1 Ответ

0 голосов
/ 23 октября 2018

Вот пример запроса-ответа из исходного дерева Rhea:

https://github.com/amqp/rhea/blob/master/examples/client.js

Часть, которая создает временную очередь, находится здесь (обратите внимание на часть о "динамическом" - этоесть, сгенерированный сервером - адрес источника):

https://github.com/amqp/rhea/blob/master/examples/client.js#L40

Очередь ответов устанавливается на запрос здесь:

https://github.com/amqp/rhea/blob/master/examples/client.js#L34

И он используется при обработке ответов на сервере здесь:

https://github.com/amqp/rhea/blob/master/examples/server.js#L26

Это еще один пример.Он использует тот же механизм запроса-ответа:

https://github.com/ssorj/messaging-examples/blob/master/rhea/request.js https://github.com/ssorj/messaging-examples/blob/master/rhea/respond.js

Я знаю, что ActiveMQ работает с динамическими источниками AMQP 1.0, но я не уверен насчет RabbitMQ.Я рекомендую тестировать с ActiveMQ, так как это то, что вы хотите использовать в конце.

...