MQ
MQ
一.同步与异步
同步:
顺序执行,下一步为阻塞状态

优点:可以得到即使结果
缺点:
1.执行效率低
2.可能产生级联失败(某一步失败回滚)的结果
3.耦合度高
查找居多
异步:
没有先后顺序
可以理解为子线程处理先后没有要求的事情
增删改居多
二.种类
RabbitMQ(使用率高)\RocketMQ\Kafka(大数据通常使用)
概述:消息中间件
MQ容器的运行命令:
docker run \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123321 \
-v mq-plugins:/plugins \
--name mq \
--hostname mq \
--restart=always \
-p 15672:15672 \
-p 5672:5672 \
-d \
rabbitmq:3-management
消息模型:

三.基本代码
3.1快速入门
生产者:
1.创建连接工厂(先要连接上)
2.设置具体参数
分别是:主机名、端口号、vhost(设置虚拟主机。参数: virtualHost - 连接到代理时使用的虚拟主机)、用户名、密码
3.获取连接
4.创建通道
5.声明队列
5个参数的含义
队列名称\是否持久化\独占 - 如果我们声明一个独占队列,则为真(仅限于此连接)\自动删除 – 如果我们声明自动删除队列,则为 true(服务器将在不再使用时将其删除)\参数 – 队列的其他属性(构造参数)
6.发送消息
参数的含义:
交换 ― 将消息发布到的交换\routingKey – 路由键\props - 消息的其他属性 - 路由标头等\正文 - 消息正文
7.关闭通道和连接

消费者:
到声明队列和生产者一致
三个参数含义:消费队列,是否签收,怎么回调
queue – 队列的名称
autoAck – 如果服务器应考虑消息在传递后确认,则为 true;如果服务器应该期待明确的确认,则为 false
回调——消费者对象的接口
消息标签/额外扩展参数(唯一tag)/和前者类似(唯一标识)/消息体
重写方法的含义:


四.特殊情况
错误记录:

@Qualifier注解:
默认情况下,@Autowired 按类型装配 Spring Bean。
如果容器中有多个相同类型的 bean,则框架将抛出 NoUniqueBeanDefinitionException, 以提示有多个满足条件的 bean 进行自动装配。
通过使用 @Qualifier 注解,我们可以消除需要注入哪个 bean 的问题。让我们重新回顾一下前面的例子,看看我们如何通过包含 @Qualifier 注释来指出我们想要使用哪个 bean 来解决问题
@Component
public class FooService {
@Autowired
@Qualifier("fooFormatter")
private Formatter formatter;
//todo
}
小写变大写:
ctrl +shirt + u

浙公网安备 33010602011771号