RabbitMQ

2018-07-14  本文已影响0人  李小二的倔强

RabbitMQ的工作队列模式

1.Work queues——工作队列模式

    1、一条消息只会被一个消费者接收;

    2、rabbit采用轮询的方式将消息是平均发送给消费者的;

    3、消费者在处理完某条消息后,才会收到下一条消息。

2.Publish/subscribe——发布订阅模式

    1、每个消费者监听自己的队列。

    2、生产者将消息发给broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息

  publish/subscribe与work queues有什么区别。

        1)work queues不用定义交换机,而publish/subscribe需要定义交换机。

        2)publish/subscribe的生产方是面向交换机发送消息,work queues的生产方是面向队列发送消息(底层使用默认交换机)。

        3)publish/subscribe需要设置队列和交换机的绑定,work queues不需要设置,实质上work queues会将队列绑定到默认的交换机 。

    相同点:

        所以两者实现的发布/订阅的效果是一样的,多个消费端监听同一个队列不会重复消费消息。

        2、实质工作用什么 publish/subscribe还是work queues。建议使用 publish/subscribe,

        发布订阅模式比工作队列模式更强大,并且发布订阅模式可以指定自己专用的交换

机。

3.Routing——路由模式

1、每个消费者监听自己的队列,并且设置routingkey。

    2、生产者将消息发给交换机,由交换机根据routingkey来转发消息到指定的队列。

Routing模式和Publish/subscibe有啥区别?

    Routing模式要求队列在绑定交换机时要指定routingkey,消息会转发到符合routingkey的队列。

    路由模式指定多个routingkey可以实现发布订阅模式

4.Topics——路由通配符模式

    1、每个消费者监听自己的队列,并且设置带统配符的routingkey。

    2、生产者将消息发给broker,由交换机根据routingkey来转发消息到指定的队列。

队列绑定交换机指定通配符:统配符规则:

        中间以“.”分隔。符号#可以匹配多个词,符号*可以匹配一个词语。

Topic模式更多加强大,它可以实现Routing、publish/subscirbe模式的功能

5.Header 模式

    header模式与routing不同的地方在于,header模式取消routingkey,使用header中的 key/value(键值对)匹配队列

6.RPC——远程调用模式

    RPC即客户端远程调用服务端的方法,使用MQ可以实现RPC的异步调用,基于Direct交换机实现,流程如下:

    1、客户端即是生产者就是消费者,向RPC请求队列发送RPC调用消息,同时监听RPC响应队列。

    2、服务端监听RPC请求队列的消息,收到消息后执行服务端的方法,得到方法返回的结果

    3、服务端将RPC方法 的结果发送到RPC响应队列

    4、客户端(RPC调用方)监听RPC响应队列,接收到RPC调用结果。

    解决:RPC远程调用中的响应问题

上一篇下一篇

猜你喜欢

热点阅读