美文网首页Rabbit MQ
(四)RabbitMQ的Node.js代码实现

(四)RabbitMQ的Node.js代码实现

作者: 冯艳辉brook | 来源:发表于2018-01-29 19:17 被阅读0次

详细接口介绍如下 http://www.squaremobius.net/amqp.node/channel_api.html

1、Exchange Type

RabbitMQ的Exchange Type有direct、fanout、topic、headers这四种,用户将消息发给交换器,交换器根据交换类型,发送给对应的队列。

direct

https://github.com/fengyh13/rabbitmq_test/blob/master/direct

fanout

https://github.com/fengyh13/rabbitmq_test/tree/master/fanout

topic

https://github.com/fengyh13/rabbitmq_test/tree/master/topic

headers

不常用

2、

下边这种方式不指定绑定交换器,是因为系统有一个默认交换器,没有指定的队列会绑定到默认的交换器上,之后的操作就同上边一样。

https://github.com/fengyh13/rabbitmq_test/tree/master/work

3、持久化

交换器、队列、消息都可以做持久化,这样在服务重启之后就不会清空{durable: true}

 如:https://github.com/fengyh13/rabbitmq_test/tree/master/work/receive.js 代码中的队列持久化

let ok = await ch.assertQueue(queueName, {durable: true});

4、可靠性

消费者在从队列取出消息的时候可以设置是否需要回复。如果设置了不需要回复,消费者从队列里取出消息后,消息将被删除。如果设置了需要回复,只有在消费者回复之后才会将消息从队列里删除;如果没有回复,消费者从队列取出信息的操作会被堵塞,直到消费者回复了之后,才可以继续从队列取出信息。

如: https://github.com/fengyh13/rabbitmq_test/tree/master/work/receive.js 代码中的

ch.ack(msg);

5、有效期、长度、优先级

队列、消息都可以设置有效期,即超时之后会被自动删除

//创建队列

let ok = await ch.assertQueue(q, {

durable: true,    //持久化

messageTtl:  10000,  //队列里所有消息的有效期 10000ms

expires: 10000,   //队列的有效期,超时队列被删除,消息也被删除  10000ms

maxLength: 100,     //队列的最大长度 为100

maxPriority: 10      //设置队列支持的优先级,最多支持10个优先级,发送消息到该队列可以设置有优先级

});

//往指定队列发送消息

await ch.sendToQueue(q, Buffer.from("Hello World!"), {

deliveryMode: true,

expiration: "10000",   //发送单个消息的有效期

priority: 1    //设置的优先级,数越大优先级越大

});

6、RPC

   https://github.com/fengyh13/rabbitmq_test/tree/master/rpc

相关文章

网友评论

    本文标题:(四)RabbitMQ的Node.js代码实现

    本文链接:https://www.haomeiwen.com/subject/xqdfzxtx.html