最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud?Stream?整合RabbitMQ的基本步驟

 更新時間:2022年03月30日 10:39:13   作者:毛毛的貓毛  
這篇文章主要介紹了SpringCloud?Stream?整合RabbitMQ的基本步驟,從項(xiàng)目介紹到生產(chǎn)者結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

本篇簡單介紹SpringCloud Stream 整合RabbitMQ基本步驟:

  • 引入SpringCloud
  • 引入SpringCloud Stream相關(guān)依賴
  • 定義綁定接口: 消息生產(chǎn)者(Output…Binding) 、消息消費(fèi)者(Input…Binding)
  • @EnableBinding 在對應(yīng)類上進(jìn)行定義
  • @StreamListener 在對應(yīng)方法上創(chuàng)建監(jiān)聽用來消費(fèi)消息
  • 調(diào)用output的send()方法生產(chǎn)消息

一、項(xiàng)目介紹

演示SpringCloud Stream 整合RabbitMQ,項(xiàng)目可以在一個工程里完成,本次建立了一個工程mq-service,其中包含三個Module:

  • mq-service-base :基礎(chǔ)模塊(包含了共用依賴、共用變量)
  • mq-service-producer :生產(chǎn)者
  • mq-service-consumer :消費(fèi)者

注: 完全可以在一個工程里實(shí)現(xiàn),這里為了區(qū)分,并為了后續(xù)單獨(dú)啟動或停止生產(chǎn)者或消費(fèi)者做實(shí)驗(yàn),也為了適應(yīng)實(shí)際應(yīng)用項(xiàng)目,所以創(chuàng)建了不同Module

(1)版本

  • SpringBoot : 2.0.6.RELEASE
  • SpringCloud : Finchley.SR2
  • RabbitMQ : 3.8.1

(2)項(xiàng)目整體結(jié)構(gòu)

在這里插入圖片描述

(3)基礎(chǔ)模塊

1)pom.xml

這里作為公共模塊引入SpringCloud、Spring Cloud Stream等,其中也再此引入fastjson、lombok等工具依賴
(完整代碼見文章最下面)
其中Spring Cloud Stream如下:

<!-- Spring Cloud Stream, 用于MQ消息發(fā)送-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-stream</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>

2) model

定義共用的變量,如CollectionRequest.java

二、生產(chǎn)者

(1)結(jié)構(gòu)

在這里插入圖片描述

(2)pom.xml

導(dǎo)入base的依賴即可,因?yàn)橄嚓P(guān)共用依賴在base中已經(jīng)引入

<dependency>
	<groupId>com.zrk</groupId>
	<artifactId>mq-service-base</artifactId>
	<version>0.0.1-SNAPSHOT</version>
</dependency>

(3)定義綁定(接口)

OutputMessageBinding.java

public interface OutputMessageBinding {
    /** Topic 名稱*/
    String OUTPUT = "message-center-out";
    @Output(OUTPUT)
    MessageChannel output();

}

(4)添加配置

# rabbitmq連接信息
spring.rabbitmq.addresses=192.168.1.125
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456

spring.cloud.stream.bindings.message-center-out.destination=message-center
spring.cloud.stream.rabbit.bindings.message-center-out.consumer.exchangeType=fanout

(5) 調(diào)用方法

CollectionServiceImpl.java

@Service
@EnableBinding(OutputMessageBinding.class)
public class CollectionServiceImpl implements CollectionService{
    @Resource
    private OutputMessageBinding outputMessageBinding;
    /**
     * @param schoolName
     * @param content
     */
    @Override
    public void getCollection(String schoolName, String content) {
        CollectionRequest request = new CollectionRequest();
        request.setSchoolName(schoolName);
        request.setContent(content);
        outputMessageBinding.output().send(MessageBuilder.withPayload(request).build());
    }
}

注: 主要是兩點(diǎn)

  • @EnableBinding 定義
  • outputMessageBinding.output().send(MessageBuilder.withPayload(request).build()); 生產(chǎn)消息

三、消費(fèi)者

(1)結(jié)構(gòu)

在這里插入圖片描述

(2)pom.xml

導(dǎo)入base的依賴即可,因?yàn)橄嚓P(guān)共用依賴在base中已經(jīng)引入

<dependency>
	<groupId>com.zrk</groupId>
	<artifactId>mq-service-base</artifactId>
	<version>0.0.1-SNAPSHOT</version>
</dependency>

(3)定義綁定(接口)

InputMessageBinding.java

public interface InputMessageBinding {
    String INPUT = "message-center-input";
    @Input(INPUT)
    SubscribableChannel input();
}

注: 消費(fèi)者這里與生產(chǎn)者不同,用的是SubscribableChannel ,而生產(chǎn)者用的是MessageChannel

(4)添加配置

# rabbitmq連接信息
spring.rabbitmq.addresses=192.168.1.125
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
spring.cloud.stream.bindings.message-center-input.destination=message-center
spring.cloud.stream.bindings.message-center-input.group=${spring.application.name}

(5) 調(diào)用方法

CollectionReceiver.java

@Slf4j
@EnableBinding(InputMessageBinding.class)
public class CollectionReceiver {
    @StreamListener(InputMessageBinding.INPUT)
    public void handle(String value){
        log.info("[消息] 接收到發(fā)送消息MQ: {}", value);
        CollectionRequest request = JSON.parseObject(value, CollectionRequest.class);
        log.info("處理收集信息:" + request.toString());
    }
}

注: 主要是兩點(diǎn)

  • @EnableBinding 定義
  • @StreamListener 注冊監(jiān)聽

至此,生產(chǎn)者與消費(fèi)者都創(chuàng)建完成,分別啟動兩個項(xiàng)目,并調(diào)用生產(chǎn)者接口進(jìn)行驗(yàn)證:

四、驗(yàn)證 在postman 訪問生產(chǎn)者接口:

localhost:30110/collection/getCollectionschoolName=‘zrk’&content=‘send message to rabbitmq’

在這里插入圖片描述

觀察消費(fèi)者日志:

在這里插入圖片描述

查看rabbitmq首頁

在這里插入圖片描述

在這里插入圖片描述

則證明已經(jīng)整合成功,接下來將研究一下更多的配置與用法。

如果有需要,可以參考項(xiàng)目完整代碼:https://github.com/zrk333/mq-service

到此這篇關(guān)于SpringCloud Stream 整合RabbitMQ的文章就介紹到這了,更多相關(guān)SpringCloud Stream 整合RabbitMQ內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

浪卡子县| 怀集县| 井研县| 敦化市| 响水县| 宣恩县| 木里| 新建县| 江源县| 绥滨县| 公主岭市| 杨浦区| 冕宁县| 扎兰屯市| 罗源县| 胶南市| 丽江市| 鸡泽县| 上栗县| 万盛区| 高雄县| 吕梁市| 凉城县| 天祝| 武陟县| 稻城县| 吉首市| 荣成市| 会理县| 兰考县| 远安县| 福鼎市| 定州市| 中方县| 凤凰县| 大渡口区| 海林市| 湖南省| 沁源县| 景东| 蒙山县|