1、普通方式生产消费
生产者:
1)依赖:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>${rocketmq-spring-boot-starter-version}</version>
</dependency>
2)配置文件
# application.properties
rocketmq.name-server=192.168.25.135:9876;192.168.25.138:9876
rocketmq.producer.group=my-group
3)启动类:
Springboot启动类
4)注入并使用:
@Autowired
private RocketMQTemplate rocketMQTemplate;
消费者:依赖、配置文件、启动类相同
使用:
@Component
@RocketMQMessageListener(topic = "springboot-mq",consumerGroup = "springboot-mq-consumer-1")
public class Consumer implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
log.info("Receive message:"+message);
}
}
2、跨系统微服务Dubbo的使用:
1)SpringBoot整合Dubbo面向接口的:下载dubbo-spring-boot-starter依赖包 安装到本地仓库
2)搭建Zookeeper集群
3)Dubbo是面向接口的RPC,定义接口X
4)生产者项目添加依赖包括dubbo、zookeeper和对接口X项目的依赖,并提供对接口X的实现
5)消费者项目添加相同依赖,用@Reference注入接口X,就可以使用生产者对接口X的实现了
3、使用案例:
在商城项目中下订单会依次对库存、优惠券、余额等进行扣减,如果发生异常,在异常捕获中可通过MQ对以上服务发送回退消息同时进行异常回退处理。
下单过程如下
先定义接口,然后定义接口实现:
@Service(interfaceClass = IOrderService.class)
public class OrderServiceImpl implements IOrderService {
@Override
public Result confirmOrder(TradeOrder order) {
//1.校验订单
//2.生成预订单
try {//通过dubbo调用 :
//3.扣减库存
//4.扣减优惠券
//5.使用余额
//6.确认订单
//7.返回成功状态
} catch (Exception e) {
//1.确认订单失败,发送MQ消息
//2.返回失败状态
}
}
}
订单如果支付成功,支付服务payService发送MQ消息,订单服务、用户服务、日志服务需要订阅消息进行处理,