Broker: 简单来说就是消息队列服务器实体
Exchange: 消息交换机,它指定消息按什么规则,路由到哪个队列
Queue: 消息队列载体,每个消息都会被投入到一个或多个队列
Binding: 绑定,它的作用就是把exchange和queue按照路由规则绑定起来
Routing Key: 路由关键字,exchange根据这个关键字进行消息投递
VHost: vhost 可以理解为虚拟 broker ,即 mini-RabbitMQ server。其内部均含有独立的 queue、exchange 和 binding 等,但最最重要的是,其拥有独立的权限系统,可以做到 vhost 范围的用户控制。当然,从 RabbitMQ 的全局角度,vhost 可以作为不同权限隔离的手段(一个典型的例子就是不同的应用可以跑在不同的 vhost 中)。
Producer: 消息生产者,就是投递消息的程序
Consumer: 消息消费者,就是接受消息的程序
Channel: 消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务
由Exchange、Queue、RoutingKey三个才能决定一个从Exchange到Queue的唯一的线路。
消息到MQ的过程中搞丢,MQ自己搞丢,MQ到消费过程中搞丢。
生产者到RabbitMQ:事务机制和/confirm/i机制,注意:事务机制和 Confirm 机制是互斥的,两者不能共存,会导致 RabbitMQ 报错。
RabbitMQ自身:持久化、集群、普通模式、镜像模式。
RabbitMQ到消费者:关闭RabbitMQ自动ACK
引入依赖
org.springframework.boot spring-boot-starter-amqp
application.yml文件
server:
port: 8001
spring:
application:
name: myrabbitMqDemo-provider
#配置rabbitMq 服务器
rabbitmq:
host: 192.168.232.134
port: 5672
username: guest
password: guest
#虚拟host 可以不设置,使用server默认host
#virtual-host: tmp
#确认消息已发送到交换机(Exchange) 发送确认
#publisher-/confirm/is: true
publisher-/confirm/i-type: correlated
#确认消息已发送到队列(Queue) 发送回调
publisher-returns: true
listener:
simple:
#程序中设置:rabbitTemplate.setMandatory(true);
acknowledge-mode: manual
#并发消费者初始化值
concurrency: 10
#并发消费者的最大值
max-concurrency: 20
#每个消费者每次监听时可拉取处理的消息数量
prefetch: 1



