首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用seneca-amqp-transport向邮件添加标头属性

如何使用seneca-amqp-transport向邮件添加标头属性
EN

Stack Overflow用户
提问于 2019-09-20 00:05:31
回答 1查看 333关注 0票数 0

我正在做一个需要使用一些rabbitmq队列的项目。其中一个队列要求延迟消息,以便在将来的某个时间进行处理。我注意到在rabbmitmq的文档中有一个新的插件,叫做RabbitMQ Delayed plugin,它似乎允许这个功能。在过去的基于rabbmitmq的项目中,我使用seneca-amqp-transport来添加和处理消息。问题是,我没有看到任何关于seneca的文档,也没有找到任何概述如何添加标题属性的示例。

似乎我需要首先确保队列是使用x-delayed-type创建的。此外,当每条消息被添加到队列中时,我需要确保在将消息发送到rabbbitmq之前将x-delay头参数添加到消息中。有没有办法用seneca-amqp-transport传递这个参数x-delay?

下面是我将消息添加到队列的当前代码:

代码语言:javascript
复制
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);
            });
        });
}

在上面的代码中,与头相关的数据应该放在哪里?

EN

回答 1

Stack Overflow用户

发布于 2019-09-20 19:42:29

我只是查找了这个库的代码,在lib/client/publisher.js下,应该可以这样做

代码语言:javascript
复制
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毫秒。您还可以重载publish方法以将该值作为参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58015018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档