spring cloud stream由乙個中介軟體中立的核組成。應用通過spring cloud stream插入的input(相當於
消費者consumer,它是從佇列中接收訊息的)和output(相當於生產者producer,它是從佇列中傳送消
息的。)通道與外界交流。通道通過指定中介軟體的binder實現與外部**連線。業務開發者不再關注具
體訊息中介軟體,只需關注binder對應用程式提供的抽象概念來使用訊息中介軟體實現業務即可。
1、新建專案,新增pom依賴
org.springframework.cloud
spring-cloud-starter-stream-rabbit
2、編寫配置檔案
server:
port: 8801
spring:
name: stream-rabbitmq-provider
cloud:
stream:
binders: # 在此處配置要繫結的rabbitmq的服務資訊;
defaultrabbit: # 表示定義的名稱,用於於binding整合
type: rabbit # 訊息元件型別
environment: # 設定rabbitmq的相關的環境配置
spring:
rabbitmq:
host: ***.***.***.***
port: 5672
username: guest
password: guest
bindings: # 服務的整合處理
output: # 這個名字是乙個通道的名稱
destination: studyexchange # 表示要使用的exchange名稱定義
default-binder: defaultrabbit # 設定要繫結的訊息服務的具體設定
3、編寫service
@enablebinding(source.class)
@slf4j
public class messageserviceimpl implements messageservice
}4、編寫controller
@autowired
private messageservice service;
@value("$")
private string port;
public string sendmsg()
5、訪問rabbitmq的15672埠可以看到傳送的資訊波峰
1、新建專案,新增pom依賴
org.springframework.cloud
spring-cloud-starter-stream-rabbit
2、編寫配置檔案
server:
port: 8803
spring:
name: stream-rabbitmq-consumer
cloud:
stream:
binders: # 在此處配置要繫結的rabbitmq的服務資訊;
defaultrabbit: # 表示定義的名稱,用於於binding整合
type: rabbit # 訊息元件型別
bindings: # 服務的整合處理
myinput: # 這個名字是乙個通道的名稱
destination: studyexchange # 表示要使用的exchange名稱定義
default-binder: defaultrabbit # 設定要繫結的訊息服務的具體設定
注意上面的bindings下的myinput可以自己指定名字,提供者使用的output可以通過source.class直接引用,如果使用自定義的名字,需要編寫乙個介面:
3、編寫介面
public inte***ce mystream
4、編寫消費者類
@component
@enablebinding(mystream.class)
@slf4j
public class recevicemessagecontroller ")
private string port;
@streamlistener(mystream.myinput)
public void input(messagemsg)
}注意這裡的@enablebinding(mystream.class)不是用的sink.class,sink.class引用的名字為input,此處使用的是自定義名字。
5、啟動提供者和消費者,提供者傳送資訊,消費者可以接收到。
1、將上述消費者clone乙份,發現傳送訊息會被消費兩次,因為廣播的型別是topic,凡是訂閱的都可以接收
2、在兩個消費者的配置檔案上給其分組,新增相同的group即可
spring:
cloud:
stream:
bindings: # 服務的整合處理
myinput: # 這個名字是乙個通道的名稱
group: groupa
3、相同的分組之間只會被乙個消費者消費,例如出現第三個消費者,分組是groupb,傳送訊息後,第一和第二個消費者只有乙個人可以消費到訊息,第三個消費者可以一直收到資訊,因為他自己一組。
1、沒有被分組的消費者在關閉服務的時候傳送訊息,啟動消費者不會收到已經傳送的訊息
2、被分組的消費者在關閉服務的時候傳送訊息,啟動消費者會收到之前已經傳送的訊息
SpringCloud之訊息匯流排
spring cloud bus通過輕量訊息 連線各個分布的節點。這會用在廣播狀態的變化 例如配置變化 或者其他的訊息指令。spring bus的乙個核心思想是通過分布式的啟動器對spring boot應用進行擴充套件,也可以用來建立乙個多個應用之間的通訊頻道。目前唯一實現的方式是用amqp訊息 作...
Spring Cloud 訊息匯流排 Bus
spring cloud bus 是用輕量的訊息中介軟體將分布式的節點連線起來,可以用於廣播配置檔案的更改或者服務的監控管理。關鍵的思想就是,訊息匯流排可以為微服務做監控,也可以實現應用程式之間相通訊。spring cloud bus 可選的訊息中介軟體包括 rabbitmq 和 kafka rab...
SpringCloud 之Bus訊息匯流排
流程總結 架構優化 之前使用actuator監控中心完成重新整理功能,但是在config client服務端需要傳送post請求來手動重新整理,如果config client有很多的話,那麼需要乙個乙個地傳送post請求,這顯然是不現實的做法。使用訊息佇列中的topic,通過訊息實現通知。目前spr...