美文网首页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