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消息,訂單服務、用戶服務、日誌服務需要訂閱消息進行處理,