springcloud 訊息中介軟體使用

2021-08-20 09:52:10 字數 2430 閱讀 4119

一。rabbitmq amqptemplate使用

1.引入依賴

org.springframework.boot

spring-boot-starter-amqp

2.訊息傳送方

先注入amqptemplate類

@autowired

private amqptemplate amqptemplate;

amqptemplate.convertandsend("佇列名稱"  , "訊息內容");

amqptemplate.convertandsend("exchange名稱" , "key值", "訊息內容");

3.訊息接收方

@rabbitlistener(queuestodeclare = @queue("佇列名稱"))

public void mqreceiver(string message) " , message);

}

#只用exchange和key值匹配的訊息才能接收

@rabbitlistener(bindings = @queuebinding(

value = @queue("佇列名稱"),

key = "key值",

exchange = @exchange("exchange值")

))

踩過的坑,需要在接收內增加@component註解,才能正常接收到訊息

二。stream的方式

準備工作:安裝rabbitmq

在訊息接收方和傳送方配置檔案增加rabbitmq的連線資訊:

spring:

rabbitmq:

host: rabbitmq主機ip

port: rabbitmq對程式呼叫暴露的埠(預設5672),而不是15672

username: 使用者名稱

password: 密碼

1.引入依賴

org.springframework.cloud

spring-cloud-starter-stream-rabbit

2.0.0.release

2.定義傳送管道

public inte***ce mysource
3.定義接收管道

public inte***ce mysink
4.訊息傳送方

@restcontroller

@enablebinding(value = )

public class mqstreamcontroller

}

5.訊息接收方

@slf4j

@enablebinding(value = )

public class mystreamreceiver " , msg);

}}

踩過的坑:發現接收方並不能接收到訊息,自己觀察發現,傳送管道和接收管道並沒有做關聯。所以還需要進行下面的配置,在配置檔案增加以下的配置資訊:

spring:

cloud:

stream:

bindings:

demoinput: #接收管道的名稱

destination: demoexchange #相當於exchange,定義訊息的接收路徑

group: demo #分組之後就將該訊息佇列持久化了

demoinput: #接收管道名稱

destination: demoexchage

group: demo2

orderoutput:

destination: demoexchange #定義訊息的傳送路徑

rabbit:

bindings:

demoinput:

consumer:

bindingroutingkey: demokey.* #定義訊息的key,只有訊息和接收定義的key匹配才能被該消費者消費

demoroutput:

producer:

routing-key-expression: '''demokey.*''' #定義訊息傳送的key,只有匹配的接收方才能收到

配置完之後,便能正常的傳送和接收訊息了。

踩過的坑:rabbitmq如果是帶有manage後台管理工具的版本,會發現rabbitmq啟動時會暴露兩個埠,預設分別是5672和15672,這裡就是大坑了,15672是管理後台的埠,5672是程式連線的埠,也是springcloud連線rabbitmq的埠。

springcloud中介軟體

概述 毫無疑問,spring cloud是目前微服務架構領域的翹楚,無數的書籍部落格都在講解這個技術。不過大多數講解還停留在對spring cloud功能使用的層面,其底層的很多原理,很多人可能並不知曉。因此本文將通過大量的手繪圖,給大家談談spring cloud微服務架構的底層原理。實際上,sp...

SpringCloud 訊息驅動

spring cloud stream由乙個中介軟體中立的核組成。應用通過spring cloud stream插入的input 相當於 消費者consumer,它是從佇列中接收訊息的 和output 相當於生產者producer,它是從佇列中傳送消 息的。通道與外界交流。通道通過指定中介軟體的bi...

SpringCloud之訊息匯流排

spring cloud bus通過輕量訊息 連線各個分布的節點。這會用在廣播狀態的變化 例如配置變化 或者其他的訊息指令。spring bus的乙個核心思想是通過分布式的啟動器對spring boot應用進行擴充套件,也可以用來建立乙個多個應用之間的通訊頻道。目前唯一實現的方式是用amqp訊息 作...