RabbitMQ fanout廣播交換器模式

2021-09-26 15:34:14 字數 1789 閱讀 3810

當訂單服務向交換器傳送請求的時候,需要簡訊服務和push服務進行工作,如果使用傳統的服務呼叫的話,是強耦合不利於擴充套件開發,此時可以使用rabbitmq提供的交換器中的fanout(廣播模式)進行解決,中介軟體通過廣播模式同時將請求放入訂單服務的佇列中。進行業務的處理

fanout不會進行路由鍵匹配的進行訊息的傳送,而是以廣播的方式將訊息傳送到所有的佇列中,所以不管是消費端還是生產端都不需要路由鍵的存在

1.全域性配置檔案

1.設定交換器的名字

2.設定佇列的名稱,fanout不需要進行設定路由鍵

spring.rabbitmq.host=192.168.177.140

spring.rabbitmq.port=5672

spring.rabbitmq.username=oldlu

spring.rabbitmq.password=123456

#配置交換器的名字

spring.rabbitmq.exchange.name=order-topic

#設定簡訊佇列名稱

spring.rabbitmq.queue.sms=order-sms

#設定push佇列名稱

spring.rabbitmq.queue.push=order-push

sms佇列

fanout是不需要路由的

smsqueue

@component

@rabbitlistener(

bindings = @queuebinding(

value = @queue(value = "$"),

exchange = @exchange(value = "$",type = exchangetypes.fanout)

))public class smsqueue

}

@component

@rabbitlistener(

bindings = @queuebinding(

value = @queue(value = "$"),

exchange = @exchange(value = "$",type = exchangetypes.fanout)

))public class pushqueue

}

1.全域性配置檔案

只需要新增交換器的名字即可

spring.rabbitmq.host=192.168.177.140

spring.rabbitmq.port=5672

spring.rabbitmq.username=oldlu

spring.rabbitmq.password=123456

#配置交換器的名字

spring.rabbitmq.exchange.name=order-topic

使用fanout進行設定的時候路由key值給空字串即可

@component

public class sender

") private string exchange;

public void send(string msg)

}

結果

RabbitMQ fanout廣播模式

fanout 所有bind到該交換機的佇列都可以接收訊息。訊息的接受者需要建立乙個佇列,繫結到該fanout交換機上,監聽來自傳送端的訊息廣播。fanout模式和topic模式基本是一樣的,唯一的乙個區別在於topic可以根據不同的主題路由到不同的佇列,但是fanout模式是沒有路由這個過程的,所有...

rabbitmq fanout廣播模式

publisher端 py import pika import sysconnection pika.blockingconnection pika.connectionparameters host localhost channel connection.channel channel.exc...

SpringBoot websocket廣播式應用

1 建立乙個簡單的springboot 專案,推薦使用idea,這裡我只選擇了websocket,thymeleaf。2 配置websocket,需要使用 enablewebsocketmessagebroker 註解開啟stomp協議來傳輸基於 message broker 的訊息,並通過實現we...