Rabbitmq 介绍

rabbitmq 是一个基于AMQP协议的轻量级,可靠,可扩展且可移植的消息中间件。

消息发送到消息消费共需要以下组件支持:

1、消息提供者

  1)用于发送消息

2、交换机

  1)交换机用于接收提供者发送的消息,再将消息转发到与之绑定并路由规则相同的消息队列

  2)交换机共分一下4中类型:direct, topic, headers,fanout

    direct: direct类型交换机可以指定一个routingKey,用来进行消息过滤以及转发匹配

        当交换机于消息队列进行绑定时,可以指定一个routingKey,如果提供者发送

        消息时同样可以指定一个routingKey,如果该routingKey于交换机和消息队列

        绑定时指定的routingKey相同,则该消息将由交换机转发到消息队列,否则消息将发送失败

    topic:  direct类型交换机相同,topic类型交换机同样可以指定一个routingKey,但是不同的是

          该routingKey必须由“.”分隔的单词,单词内容可以自定义,例如 routingKey.rk,同时支持

          “*”号和“#”号,*号代表一个单词,#代表一个或多个单词,例如:

          routingkey.*  可以匹配 routingkey.rr或者routingkey.tt

          routingkey.#  可以匹配 routingkey.rr.ee或者routingkey.tt.yy.dd 

   fanout:  fanout 类型交换机则不支持路由,只要提供者发送消息到该交换机,消息就会被转发给与该交换机绑定的消息队列中

  headers:   heanders类型交换机可以根据提供者发送的消息中的MessageProperties类中设置的headers属性进行匹配消息队列,

            headers的值是以键值对的格式设置,值可以使任意类型,如果消息提供者发送的消息中的header交换机与消息队列

         绑定时设置的header属性值匹配成功,交换机则转发消息到消息队列

3、消息队列

  1)存储消息提供者发送的消息

4、消费者

  1)接收其监听的消息队列,获取消息

工作模式共分为以下6种:

1、最简单的一提供、一消费模式:提供者消息->消息队列->消费者接受消息

2、一提供多消费模式:提供者发送消息->消息队列->多个消费者接收消息并消费(C1和C2接收的消息不相同)

3、发布与订阅模式:提供者发送消息->交换机->消息队列->消费者接收。

 4、提供者发送消息到交换机,通过交换机进行路由规则匹配将消息发送某个消息队列,消费者消费监听的消息队列中的消息

5、提供者发送消息到topic类型交换机,通过匹配routingkey转发消息到消息队列

6、远程过程调用(RPC)

原文地址:https://www.cnblogs.com/shiguotao-com/p/10443545.html