rabbitMq
解耦、削峰、异步
步骤:消费者订阅消息,生产者创建消息,最后将消息发送给消费者进行消费
rabbitmq是一个基于amqb模型的消息队列
AMQP协议:
AMQP是一个消息队列的协议
交换机根据路由规则将收到的消息分发给与该交换机绑定的队列
AMQP 模块包含了一个消息确认(Message Acknowledgements)机制:当一个消息从队列中投递给消费者后,不会立即从队列中删除,直到它收到来自消费者的确认回执(Acknowledgement)后,才完全从队列中删除。
交换机可以有两个状态:持久(durable)、暂存(transient)。
持久化的交换机会在消息代理(broker)重启后依旧存在,而暂存的交换机则不会
(例如当一个消息无法被成功路由时(无法从交换机分发到队列),消息或许会被返回给发布者并被丢弃。或者,如果消息代理执行了延期操作,消息会被放入一个所谓的死信队列中。此时,消息发布者可以选择某些参数来处理这些特殊情况。)
总结:amqb流程:
生产者通过信道发送交换机,交换机根据路由key绑定队列,队列通过信道发送消费者,消费者消费消息,通过信道返回确认回执。
代码部分
理解AMQB协议的流程下,实现代码自然就非常容易。
1.maven工程的pom文件中添加依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.1.0</version>
</dependency>
2.消息生产者
package org.study.rabbitmq;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import<