MQ基本使用及重点内容

RabitMQ(消息中间件):

一、使用方法:

1、引入依赖:

MQ基本使用及重点内容_第1张图片

2、添加配置:

MQ基本使用及重点内容_第2张图片

3、在服务者端注入RabbitTemplate实现消息发送:

MQ基本使用及重点内容_第3张图片

4、消费者端添加配置:

MQ基本使用及重点内容_第4张图片

5、bean一个Queue对象,交给IOC容器管理:

MQ基本使用及重点内容_第5张图片

6、消费者端创建监听类RabbitListener,并交给spring管理:

MQ基本使用及重点内容_第6张图片

二、使用MQ的优缺点:

优点:1、异步;2、解耦;3、削峰。(吞吐量提升、故障隔离)

缺点:1、系统可用性降低;2、系统复杂度提高;3、一致性问题。

三、Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别?

MQ基本使用及重点内容_第7张图片

追求可用性:Kafka、 RocketMQ 、RabbitMQ

追求可靠性:RabbitMQ、RocketMQ

追求吞吐能力:RocketMQ、Kafka

追求消息低延迟:RabbitMQ、Kafka

四、MQ的基本结构:

MQ基本使用及重点内容_第8张图片

RabbitMQ中的一些角色:

  • broker:消息队列服务器实体
  • publisher:生产者 发布者
  • consumer:消费者 订阅者
  • exchange个:交换机,负责消息路由,转发消息给队列,注:如果找不到队列,则消息会丢失
  • queue:消息队列载体,存储消息
  • virtualHost:虚拟主机,隔离不同用户|环境的exchange、queue、消息的隔离
  • Routing Key: 路由关键字,exchange根据这个关键字进行消息投递
  • Binding Key:绑定,它的作用就是把exchange和queue按照路由规则绑定起来

五、RabbitMQ的消息模型:

1、普通消息队列;

MQ基本使用及重点内容_第9张图片

2、工作消息队列;

MQ基本使用及重点内容_第10张图片

3、广播消息队列;

MQ基本使用及重点内容_第11张图片

4、路由消息队列;

MQ基本使用及重点内容_第12张图片

5、主题消息队列。

MQ基本使用及重点内容_第13张图片

六、使用RabbitMQ的场景:

1、服务间异步通信;2、顺序消费;3、定时任务;4、请求削峰。

七、如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?

1、发送方确认模式:将信道设置成confirm模式(发送方确认模式),则所有在信道上发布的消息都会被指派一个唯一的ID。

2、接收方确认机制:消费者接收每一条消息后都必须进行确认。

八、如何避免消息重复投递或重复消费?

1、在消息生产时,MQ内部针对每条生产者发送的消息生成一个inner-msg-id,作为去重的依据(消息投递失败并重传),避免重复的消息进入队列;

2、在消息消费时,要求消息体中必须要有一个 bizId(对于同一业务全局唯一,如支付ID、订单ID、帖子ID 等)作为去重的依据,避免同一条消息被重复消费。

九、如何保证消息的可靠传输:

MQ基本使用及重点内容_第14张图片

希望对大家有帮助,有用的大家可以关注点个赞~~~

你可能感兴趣的:(java,java-rabbitmq,rabbitmq,kafka)