RocketMQ學習總結2- SpringBoot整合RocketMQ開發

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

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章