目录
五种消息模型
直连模型
work模型
订阅模型-Fanout(广播)
订阅模型-Direct(路由)
订阅模型-Topic(通配符)
持久化
消息确认机制(ACK)
五种消息模型
RabbitMQ提供了7种消息模型。其中3、4、5这三种都属于订阅模型,只不过进行路由的方式不同。67这里暂时不表。
总结:直连模式1v1,work模式抢红包,广播模式公众号,路由模式小团体,Topic模式土豪版小团体
直连模型
原理
P(producer/ publisher):生产者,发送消息到消息队列
C(consumer):消费者从消息队列中取出消息进行消费
Queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。
总之:生产者将消息发送到队列,消费者从队列中获取消息,队列是存储消息的缓冲区。注意,当消费者从队列中消费消息后,这条消息是否还存在队列中,以及这个队列是否存在,都需要你自定义进行设置,在“持久化”这一节里面有讲。
举例
producer
新建一个ems用户,新建一个/ems虚拟主机,让ems用户与ems虚拟主机进行绑定
新建一个maven父子项目,父项目空即可,子项目中导入rabbitmq和junit依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
我们先新建一个工具类,用来创建连接对象,这里用到了单例模式!
public class RabbitMQUtils {
private static ConnectionFactory connectionFactory;
static {
connectionFactory = new ConnectionFactory();