publisher端(.py):
importpika
import
sysconnection =pika.blockingconnection(pika.connectionparameters(
host = "
localhost"))
channel =connection.channel()
channel.exchange_declare(exchange = "
logs
",exchange_type = "
fanout")
message = "
info:hello world!
"channel.basic_publish(exchange = "
logs",
routing_key=""
, body =message)
#不用對佇列進行宣告,所以routing_key為空
print("
[x] sent %r
" %message)
connection.close()
subscriber端(.py):
importpika
connection =pika.blockingconnection(pika.connectionparameters(
host = "
localhost"))
channel =connection.channel()
channel.exchange_declare(exchange = "
logs",
exchange_type = "
fanout")
#對交換器進行宣告fanout模式,名稱為「logs」
result = channel.queue_declare(queue = "",exclusive =true)
queue_name =result.method.queue
#隨機的佇列名
channel.queue_bind(exchange ="
logs
",queue =queue_name)
print("
[*] waiting foor logs. to exit press ctrl+c")
defcallback(ch,method,properties,body):
print("
[x] %r
" %body)
channel.basic_consume(on_message_callback =callback,
queue =queue_name,
auto_ack =true)
channel.start_consuming()
#消費資訊
subscriber端需實時接收publisher端所傳送的資料,若先開啟publisher端傳送資訊,然後開啟subscriber端會發現先前所發訊息丟失,就像女神對你說這週日她有空,你當時耳鳴,而當你恢復聽覺想再聽她說什麼卻已經錯過那個女神了。
RabbitMQ fanout廣播模式
fanout 所有bind到該交換機的佇列都可以接收訊息。訊息的接受者需要建立乙個佇列,繫結到該fanout交換機上,監聽來自傳送端的訊息廣播。fanout模式和topic模式基本是一樣的,唯一的乙個區別在於topic可以根據不同的主題路由到不同的佇列,但是fanout模式是沒有路由這個過程的,所有...
RabbitMQ fanout廣播交換器模式
當訂單服務向交換器傳送請求的時候,需要簡訊服務和push服務進行工作,如果使用傳統的服務呼叫的話,是強耦合不利於擴充套件開發,此時可以使用rabbitmq提供的交換器中的fanout 廣播模式 進行解決,中介軟體通過廣播模式同時將請求放入訂單服務的佇列中。進行業務的處理 fanout不會進行路由鍵匹...
SpringBoot websocket廣播式應用
1 建立乙個簡單的springboot 專案,推薦使用idea,這裡我只選擇了websocket,thymeleaf。2 配置websocket,需要使用 enablewebsocketmessagebroker 註解開啟stomp協議來傳輸基於 message broker 的訊息,並通過實現we...