建筑网站建设,wordpress毛玻璃主题,国外做vj的网站,个旧网站建设0. 消息中间件 1.RabbitMQ的核心概念 2. 工作流程
整体架构#xff1a; 相关细节#xff1a; 上述要注意的是#xff1a;
路由键包含在message的头中#xff0c;其作用是用于指定该消息存储与哪个消息队列中。
信道是客户端#xff08;包括生产者和消费者#xff09;用…0. 消息中间件 1.RabbitMQ的核心概念 2. 工作流程
整体架构 相关细节 上述要注意的是
路由键包含在message的头中其作用是用于指定该消息存储与哪个消息队列中。
信道是客户端包括生产者和消费者用来与RabbitMQ建立联系的一个客户端只和RabbitMQ存在一个连接但一个连接里面包含多条信道。
2.1Exchange(交换机)类型
交换机的原理就是每一个消息都有其路由键(routing key)每一个消息队列有自己的binding key。交换机就是通过这两个的匹配关系将消息绑定到对应的队列中
2.1.1direct类型
如果routing keybinding key交换机就会把这个消息绑定到对应的队列中。 2.1.2fanout类型
fanout类型类似于广播他不查看routing key与binding key的匹配关系而是将消息绑定到所有队列。 2.1.3topic类型
将routing key与binding key按照模式匹配的方式进行匹配。 2.1.4headers模式不用性能差
Headers 类型的交换器不依赖于路由键的匹配规则来路由消息而是根据发送的消息内容中的 headers 属性进行匹配。在绑定队列和交换器时制定一组键值对headers是键交换机是值。
3.Springboot整合RabbitMQ(订单微服务)
首先需要引入spring-boot-starter-amqp: dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId/dependency
配置相关的配置
# RabbitMQ配置
spring.rabbitmq.hostlocalhost
spring.rabbitmq.port5672
# 虚拟主机配置
spring.rabbitmq.virtual-host/
# 开启发送端消息抵达Broker确认
spring.rabbitmq.publisher-confirmstrue
# 开启发送端消息抵达Queue确认
spring.rabbitmq.publisher-returnstrue
# 只要消息抵达Queue就会异步发送优先回调returnfirm
spring.rabbitmq.template.mandatorytrue
# 手动ack消息不使用默认的消费端确认
spring.rabbitmq.listener.simple.acknowledge-modemanual
4.Springboot使用RabbitMQ
创建交换机 Autowiredprivate AmqpAdmin amqpAdmin;/*** 1、如何创建Exchange、Queue、Binding* 1、使用AmqpAdmin进行创建* 2、如何收发消息*/Testpublic void createExchange() {Exchange directExchange new DirectExchange(hello-java-exchange,true,false);amqpAdmin.declareExchange(directExchange);log.info(Exchange[{}]创建成功,hello-java-exchange);}
AmqpAdmin用于对RabbitMQ中的交换机、队列和交换机与队列的绑定关系进行实例化的管理类。
创建队列 创建绑定类 这里的routing key就相当于binding key。
发送消息 如果希望消息内容是一个类对象需要先对对象进行序列化需要在配置类中先配置序列化操作 随后再发送实体类 接收消息——RabbitListener
通过RabbitListener监听相应的队列: 5.RabbitMQ消息确认机制——可靠抵达
目的如果系统发生故障需要保证消息不会产生丢失。
生产者的确认机制确认模式、退回模式 受到消息返回成功回调未收到消息用退回回调。
消费者确认机制消息确认机制ack