好程序员Java 学习资源分享 RabbitMQ 介绍,前言,RabbitMQ 是基于 AMQP 协议( Advanced Message Queue Protocol )的消息中间件
什么是消息队列
消息队列属于进程间通信的一种方式,使用消息队列可以通过异步方式处理数据,借此可以提高系统性能。我们可以把消息当作存放数据的容器,消息的消费者可以从队列中获取数据,进行处理。常见的消息队列有:ActiveMQ , RabbitMQ , Kafka , RocketMQ 等。
RabbitMQ 中用到基本概念
Broker :消息队列的服务器实体
Exchange :消息交换机,它指定消息按什么规则,路由到哪个队列
Queue :消息队列载体,每个消息都会被投入到一个或多个队列
Binding :绑定,它主要是把 exchange 和 queue 按照路由规则绑定起来
Routing Key :路由关键字, exchange 根据这个关键字进行消息投递
vhost :虚拟主机,一个 broker 里可以开设多个 vhost ,用作不同用户的权限分离
producer :消息生产者,投递消息的程序
consumer :消息消费者,接收消息的程序
channel :消息通道,在客户端的每个连接里,可以建立多个 channel ,每个 channel 代表一个会话任务
RabbitMQ 中消息模式
1 简单队列
一个生产者对应一个消费者
2 工作队列
一个生产者,多个消费者,一个消息只能发给一个消费者,spring 中整合 rabbitmq 时,默认采用公平分发
3 发布订阅模式
传递一个消息到多个消费者中,借助该模式可以发布的消息将被广播给所有接收者。
使用该模式需要借助交换机,生产者将消息发送到交换机,再通过交换机到达队列。
RabbitMQ 中有四种交换机: direct/topic/headers/fanout 。默认交换机是 direct ,发布与订阅的实现使用 fanout 。
使用交换机时,每个消费者有自己的队列,生产者将消息发送到交换机(X),每个队列都要绑定到交换机。
4 路由模式
生产者将消息发送到direct 交换机(路由模式需要借助直连交换机实现),在绑定队列和交换机的时候有一个路由 key ,生产者发送的消息会指定一个路由 key ,那么消息只会发送到相应 key 相同的队列,接着监听该队列的消费者消费消息。也就是让消费者有选择性的接收消息。
5 主题模式
又称通配符模式。
使用直连交换机可以改善我们的系统,但是它仍有局限性,它不能实现多重条件的路由。在消息系统中,我们不仅想要订阅基于路由键的队列,还想订阅基于生产消息的源,这时候可以使用topic 交换机。
使用主题交换机时,路由键的语法形式是采用点分割的有意义的单词。例如"goods.stock.info" 。
其中:* 星号代表一个单词, # 井号代表 0 个或多个单词
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913892/viewspace-2655602/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69913892/viewspace-2655602/