Как добавить свойства заголовка к сообщениям, используя seneca-amqp-transport - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю над проектом, который требует использования нескольких очередей rabbitmq.Одна из очередей требует, чтобы сообщения были отложены для обработки одновременно в будущем.Я заметил, что в документации к rabbmitmq есть новый плагин под названием RabbitMQ Delayed Message Plugin, который, кажется, разрешает эту функцию.В прошлом для проектов на основе rabbmitmq я использовал seneca-amqp-transport для добавления и обработки сообщений.Проблема в том, что я не видел никакой документации для seneca или не смог найти никаких примеров, описывающих, как добавить свойства заголовка.

Кажется, мне нужно сначала убедиться, что очередь создана с типом x-delayed.Кроме того, поскольку каждое сообщение добавляется в очередь, мне необходимо убедиться, что параметр заголовка x-delay добавлен к сообщению перед его отправкой в ​​rabbbitmq.Есть ли способ передать этот параметр, x-delay, с помощью seneca-amqp-transport?

Вот мой текущий код для добавления сообщения в очередь:

return new Promise((resolve, reject) => {
    const client = require('seneca')()
        .use('seneca-amqp-transport')
        .client({
            type: 'amqp',
            pin: 'action:perform_time_consuming_act',
            url: process.env.AMQP_SEND_URL
        }).ready(() => {
            client.act('action:perform_time_consuming_act', {
                message: {data: 'this is a test'}
            }, (err, res) => {
                if (err) {
                    reject(err);
                }

                resolve(true);
            });
        });
}

ВПриведенный выше код, куда пойдут данные, связанные с заголовком?

1 Ответ

0 голосов
/ 20 сентября 2019

Я только что посмотрел код библиотеки и в lib / client / publisher.js это должно сработать

function publish(message, exchange, rk, options) {
const opts = Object.assign({}, options, {
  replyTo: replyQueue,
  contentType: JSON_CONTENT_TYPE,
  x-delay: 5000,
  correlationId: correlationId
});
return ch.publish(exchange, rk, Buffer.from(message), opts);

}

Дайте попробовать, должно сработать,Здесь значение задержки, если установлено 5000 миллисекунд.Вы также можете перегрузить метод публикации, чтобы принять значение в качестве параметра.

...