国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringCloud之消息總線Spring Cloud Bus實例代碼

SpringCloud之消息總線Spring Cloud Bus實例代碼

2021-04-20 14:51smartdt Java教程

這篇文章主要介紹了SpringCloud之消息總線Spring Cloud Bus實例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、簡介

在微服務架構的系統中,我們通常會使用輕量級的消息代理來構建一個共用的消息主題讓系統中所有微服務實例都連接上來,由于該主題中產生的消息會被所有實例監聽和消費,所以我們稱它為消息總線

二、消息代理

消息代理(message broker)是一種消息驗證、傳輸、路由的架構模式。它在應用程序之間起到通信調度并最小化應用之間的依賴的作用,使得應用程序可以高效地解耦通信過程。消息代理是一個中間件產品,它的核心是一個消息的路由程序,用來實現接收和分發消息, 并根據設定好的消息處理流來轉發給正確的應用。 它包括獨立的通信和消息傳遞協議,能夠實現組織內部和組織間的網絡通信。設計代理的目的就是為了能夠從應用程序中傳入消息,并執行一些特別的操作,下面這些是在企業應用中,我們經常需要使用消息代理的場景:

  1. 將消息路由到一個或多個目的地。
  2. 消息轉化為其他的表現方式。
  3. 執行消息的聚集、消息的分解,并將結果發送到它們的目的地,然后重新組合響應返回給消息用戶。
  4. 調用web服務來檢索數據。
  5. 響應事件或錯誤。
  6. 使用發布-訂閱模式來提供內容或基千主題的消息路由。

目前已經有非常多的開源產品可以供大家使用, 比如:

  1. activemqkafka
  2. rabbitmq
  3. rocketmq
  4. 等......

三、springcloud+rabbitmq

(1)rabbitmq簡介、安裝不贅述。

(2)pom.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
<dependencies>
 <dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-amqp</artifactid>
 </dependency>
 
 <dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-test</artifactid>
 <scope>test</scope>
 </dependency>
</dependencies>

(3)application.yml

?
1
2
3
4
5
6
7
8
spring:
 application:
 name: rabbitmq-hello
 rabbitmq:
 host: ***.***.***.***
 port: 5672
 username: guest
 password: guest

(4)發送者sender

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@component
public class sender {
 
 private static final logger log = loggerfactory.getlogger(sender.class);
 @autowired
 private amqptemplate amqptemplate;
 
 public void send() {
 string context = "hello " + new date();
 log.info("sender : " + context);
 this.amqptemplate.convertandsend("hello", context);
 }
}

(5)接受者receiver

?
1
2
3
4
5
6
7
8
9
10
11
@component
@rabbitlistener(queues = "hello")
public class receiver {
 
 private static final logger log = loggerfactory.getlogger(receiver.class);
 
 @rabbithandler
 public void process(string hello) {
 log.info("receiver : " + hello);
 }
}

(6)創建rabbitmq的配置類 rabbitconfig

?
1
2
3
4
5
6
7
8
@configuration
public class rabbitconfig {
 
 @bean
 public queue helloqueue(){
 return new queue("hello");
 }
}

(7)創建單元測試類, 用來調用消息生產

?
1
2
3
4
5
6
7
8
9
10
11
12
@runwith(springjunit4classrunner.class)
@springboottest(classes = springcloudbusrabbitmqapplication.class)
public class helloapplicationtests {
 
 @autowired
 private sender sender;
 
 @test
 public void hello() throws exception {
 sender.send();
 }
}

(8)測試,執行helloapplicationtests

SpringCloud之消息總線Spring Cloud Bus實例代碼

(9)訪問host:15672

SpringCloud之消息總線Spring Cloud Bus實例代碼

四、改造config-client(整合springcloud bus)

(1)pom.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<dependencies>
 <dependency>
 <groupid>org.springframework.cloud</groupid>
 <artifactid>spring-cloud-starter-config</artifactid>
 </dependency>
 <dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-web</artifactid>
 </dependency>
 <dependency>
 <groupid>org.springframework.cloud</groupid>
 <artifactid>spring-cloud-starter-eureka</artifactid>
 </dependency>
 <dependency>
 <groupid>org.springframework.cloud</groupid>
 <artifactid>spring-cloud-starter-bus-amqp</artifactid>
 </dependency>
 <dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-actuator</artifactid>
 </dependency>
 
 <dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-test</artifactid>
 <scope>test</scope>
 </dependency>
</dependencies>

(2)bootstrap.properties

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
spring.application.name=configspace
spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.uri= http://localhost:5588/
eureka.client.serviceurl.defaultzone=http://localhost:5555/eureka/
 
server.port=5589
 
spring.rabbitmq.host=118.89.237.88
spring.rabbitmq.port= 5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
 
management.security.enabled=false

(3)其他不用改變

五、測試

(1)測試準備

一個服務注冊中心,eurekaserver,端口為5555;

一個分布式配置中心,configserver,端口為5588;

二個分布式配置,configclient,端口為5589、5590;(2)訪問http://localhost:5589/from

SpringCloud之消息總線Spring Cloud Bus實例代碼

(3)訪問http://localhost:5590/from

SpringCloud之消息總線Spring Cloud Bus實例代碼

rabbitmq:

SpringCloud之消息總線Spring Cloud Bus實例代碼

(4)去倉庫修改password的值

?
1
2
3
from=git-dev-v1.0 by springcloud config-server
username=springcloud
password=1234567890

(5)post請求http://localhost:5589/bus/refresh或者http://localhost:5590/bus/refresh

SpringCloud之消息總線Spring Cloud Bus實例代碼

成功請求后config-client會重新讀取配置文件

SpringCloud之消息總線Spring Cloud Bus實例代碼

(6)再次訪問

  1. 如果post請求的是:http://localhost:5589/bus/refresh,請訪問http://localhost:5590/from
  2. 如果訪問出現401,則配置需要加上management.security.enabled=false

SpringCloud之消息總線Spring Cloud Bus實例代碼

如果post請求的是:http://localhost:5590/bus/refresh,請訪問http://localhost:5589/from

SpringCloud之消息總線Spring Cloud Bus實例代碼

另/bus/refresh接口可以指定服務,即使用“username”參數,比如 “/bus/refresh?destination=username:**”即刷新服務名為username的所有服務,不管ip地址。

(7)架構

SpringCloud之消息總線Spring Cloud Bus實例代碼

(8)架構調整

既然springcloud bus的/bus/refresh接口提供了針對服務和實例進行配置更新的參數,那么我們的架構也可以相應做出一些調整。在之前的架構中,服務的配置更新需要通過向具體服務中的某個實例發送請求,再觸發對整個服務集群的配置更新。雖然能實現功能,但是這樣的結果是,我們指定的應用實例會不同千集群中的其他應用實例,這樣會增加集群內部的復雜度,不利于將來的運維工作。比如, 需要對服務實例進行遷移,那么我們不得不修改web hook中的配置等。所以要盡可能地讓服務集群中的各個節點是對等的。

因此, 我們將之前的架構做了 一些調整, 如下圖所示:

SpringCloud之消息總線Spring Cloud Bus實例代碼

主要做了以下這些改動:

  1. 在configserver中也引入springcloud bus,將配置服務端也加入到消息總線中來。
  2. /bus/refresh請求不再發送到具體服務實例上,而是發送給config server,并通過des巨nation參數來指定需要更新配置的服務或實例。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/smartdt/article/details/79073765

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人资源在线观看 | 久久久精品亚洲 | 免费福利视频一区二区三区 | 国产日韩欧美在线 | 性色视频在线 | 亚洲精选一区 | 亚洲免费美女视频 | 欧美午夜精品久久久久久浪潮 | 国产高清视频一区二区 | 成人久久久| 亚洲成人免费 | 欧美成人精品一区二区男人看 | 色婷婷综合久久久中文字幕 | 男女激情网址 | 亚洲欧美在线播放 | 欧美日韩久久久 | 荷兰欧美一级毛片 | 欧美日一区 | 精品视频在线观看 | 草久在线视频 | 久久久久久久国产视频 | 五月天婷婷在线视频 | 性高湖久久久久久久久aaaaa | 寡妇高潮一级片 | 天天干天天搞天天射 | 成人1区2区| 国产高清视频一区二区 | 亚洲精品91 | 久久大陆 | 91精品福利 | 午夜影视免费观看 | 免费黄色av | 精品福利片 | 成人精品影院 | 欧美亚洲高清 | 亚洲一区二区三区四区五区午夜 | 亚洲欧洲一区二区三区 | 国产精品久久久久国产a级 九九在线精品视频 | 亚洲精品一区二三区 | 伊人伊成久久人综合网站 | www.在线播放|