一。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訊息 作...