异步
实现异步的几个方法
引入MQ架构
引入 MQ之后. 获取 机器人通过 MQ 调用 淘宝客对应的商品信息
使用
下载
rocketMQ
或者看这个: 中文版的文档
RocketGithub
慕课网
看不懂英文可以按照慕课手记进行配置.
插件
这个是 github 上的文档.照着走就行
概念 & 术语
概览
进阶
SpringCloud 下 可以使用任意 MQ.
生产者
- 依赖
这里的starter 使用的版本和 目标不符合. 所以需要自己只需版本
2.0.3
- 配置
rocketmq:
name-server: 127.0.0.1:9876
producer:
# 指定 group
# 这里的 group 必填.
group: test-group
- 代码
@AUtowrited
private RocketMQTempalte rocketMQTempalte;
rocketMQTempalte.convertAndSend("topic","payload");
- 定义 payload
public class UserDto{
}
消费者
- 依赖
之前的 - 配置
rocketmq:
name-server: 127.0.0.1:9876
- 代码
- 添加注解
@RockeMQMessageListener(consumerGroup="",topic="")
这里的group是消费者的group. 和生产者不一样
topic 则 是主题,要和生产者一致 - 重写 RockerMQLinstener<?>(这里填写消息体类型)
- 重写 onMessage 方法
- 编写业务逻辑
- 添加注解
分布式事务01
分布式事务编码
发送 &半消息& 发送成功
- 新增表(内容中心)
- 发送半消息
这里的 auditDTO 是 自定义 JavaBean 对象
执行本地事务
@RocketMQTransactionListener(txProducerGroup = "")
public class addBoundsTransactionListener implements RocketMQTransactionListener{
@Override
public RocketMQLocalTransactionState executeLocalTransaction(Message msg,Object arg){}
// 第四步,检查本地事务有没有执行成功
@Override
public RocketMQLocalTransactionState checkLocalTransaction(Message msg){}
}
执行本地事务
就是本地的Mapper的代码
回查方法
回查方法 使用一开始添加的 表:
如果有数据,则执行成功,如果没数据,则执行失败
具体代码
插入一条表数据.
回查是否有对应的数据