fanout: 所有bind到該交換機的佇列都可以接收訊息。
訊息的接受者需要建立乙個佇列,繫結到該fanout交換機上,監聽來自傳送端的訊息廣播。fanout模式和topic模式基本是一樣的,唯一的乙個區別在於topic可以根據不同的主題路由到不同的佇列,但是fanout模式是沒有路由這個過程的,所有繫結到該交換機上的佇列都會收到這一條廣播訊息。
基於上文中封裝的rabbitmq**rabbitmq c++封裝,在此實現fanout廣播訊息的傳送和訊息。
傳送端**:
std::string err;
//mq連線
crabbitmqclient mqclient;
if (0 != mqclient.connect(err))
//宣告交換機
cexchange exchange(exchange_name, "fanout", true, false);
if (0 != mqclient.declareexchange(exchange, err))
amqp_basic_properties_t properties;
getproperties(properties);
for (int i = 0; i < 5; i++)
//printf("傳送訊息成功:%s\n", szbuf);
}
消費端**,需要找到對應的交換機,並建立屬於自己的佇列,繫結到該交換機上,進行廣播訊息的接收:
std::string err;
//mq連線
crabbitmqclient mqclient;
if (0 != mqclient.connect(err))
//宣告交換機
cexchange exchange(exchange_name, "fanout", true, false);
if (0 != mqclient.declareexchange(exchange, err))
//宣告佇列
cqueue queue(queue_name);
if (0 != mqclient.declarequeue(queue, err))
//佇列繫結到交換機上
if (0 != mqclient.bindqueuetoexchange(queue, exchange, routing_keys_name, err))
do } while (1);
消費端需要宣告乙個和生產端一模一樣的交換機(包括交換機的名稱,屬性),然後再宣告乙個臨時佇列(各個消費者需要各自宣告乙個唯一佇列,因為rabbitmq只會把訊息傳送到乙個佇列一次,比如:comsumer1和comsumer2宣告了同乙個佇列,producer生產了3條訊息,那麼可能comsumer1收到了2條,comsumer2收到了1條;也有可能comsumer1收到了3條,comsumer2一條都沒收到),繫結到該互動機上,在乙個while迴圈中不停消費該佇列上的訊息。 rabbitmq fanout廣播模式
publisher端 py import pika import sysconnection pika.blockingconnection pika.connectionparameters host localhost channel connection.channel channel.exc...
RabbitMQ fanout廣播交換器模式
當訂單服務向交換器傳送請求的時候,需要簡訊服務和push服務進行工作,如果使用傳統的服務呼叫的話,是強耦合不利於擴充套件開發,此時可以使用rabbitmq提供的交換器中的fanout 廣播模式 進行解決,中介軟體通過廣播模式同時將請求放入訂單服務的佇列中。進行業務的處理 fanout不會進行路由鍵匹...
SpringBoot websocket廣播式應用
1 建立乙個簡單的springboot 專案,推薦使用idea,這裡我只選擇了websocket,thymeleaf。2 配置websocket,需要使用 enablewebsocketmessagebroker 註解開啟stomp協議來傳輸基於 message broker 的訊息,並通過實現we...