1. 程式人生 > >python使用rabbitmq例項三,交換機

python使用rabbitmq例項三,交換機

交換機的工作原理:訊息傳送端先將訊息傳送給交換機,交換機再將訊息傳送到繫結的訊息佇列,而後每個接收端都能從各自的訊息佇列裡接收到資訊。

rabbitmq交換機工作原理

rabbitmq交換機工作原理

下面用send.py和receive.py來模擬實現交換機的功能。send.py表示傳送端,receive.py表示接收端。

receive.py程式碼分析

和第一篇裡的receive.py相比,主要是做了兩個改動:

  • 定義交換機
  • 不使用hello隊列了,隨機生成一個臨時佇列,並繫結到交換機上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #!/usr/bin/env python
#coding=utf8 import pika connection = pika.BlockingConnection(pika.ConnectionParameters( 'localhost')) channel = connection.channel() #定義交換機 channel.exchange_declare(exchange='messages', type='fanout') #隨機生成佇列,並繫結到交換機上 result = channel.queue_declare(exclusive=True) queue_name = result.method.queue
channel.queue_bind(exchange='messages', queue=queue_name) def callback(ch, method, properties, body): print " [x] Received %r" % (body,) channel.basic_consume(callback, queue=queue_name, no_ack=True) print ' [*] Waiting for messages. To exit press CTRL+C' channel.start_consuming()

上例程式碼中,queue_declare的引數exclusive=True表示當接收端退出時,銷燬臨時產生的佇列,這樣就不會佔用資源。執行這個程式,然後使用rabbitmqctl list_exchanges命令來檢視交換機資訊:

rabbitmq交換機資訊檢視

rabbitmq交換機資訊檢視

其中紅色框就是上例定義的交換機了。再使用rabbitmqctl list_queues檢視下訊息佇列情況:

rabbitmq佇列資訊檢視

rabbitmq佇列資訊檢視

其中紅色框就是隨機產生的訊息隊列了。

send.py程式碼分析

和第一篇的send.py相比,也只做了兩個改動:

  • 定義交換機
  • 不是將訊息傳送到hello佇列,而是傳送到交換機
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/usr/bin/env python #coding=utf8 import pika connection = pika.BlockingConnection(pika.ConnectionParameters( 'localhost')) channel = connection.channel() #定義交換機 channel.exchange_declare(exchange='messages', type='fanout') #將訊息傳送到交換機 channel.basic_publish(exchange='messages', routing_key='', body='Hello World!') print " [x] Sent 'Hello World!'" connection.close()

上例程式碼中, basic_publish方法的引數exchange被設定為相應交換機,因為是要廣播出去,傳送到所有佇列,所以routing_key就不需要設定了。

exchange如果為空,表示是使用匿名的交換機,在上面交換機資訊的圖片中可以看到有amq.*這樣的交換機,就是系統預設的交換機了。routing_key在使用匿名交換機的時候才需要指定,表示傳送到哪個佇列的意思。第一篇的例子演示了這個功能。

開啟另外一個終端,執行send.py,可以觀察到receive.py接收到了訊息。如果有多個終端執行receive.py,那麼每個receive.py都會接收到訊息。

相關推薦

python使用rabbitmq例項交換機

交換機的工作原理:訊息傳送端先將訊息傳送給交換機,交換機再將訊息傳送到繫結的訊息佇列,而後每個接收端都能從各自的訊息佇列裡接收到資訊。 rabbitmq交換機工作原理 下面用send.py和receive.py來模擬實現交換機的功能。send.py表示傳送端,recei

華為交換機實現不同vlan不同網段的互通

子網 interface 實驗 連接 efault sha isp tor roman 實驗任務:1. 不同vlan,不同網段實現互通;2. 路由AR11用默認路由配置;3. LSW8實現三層交換機功能;如下華為拓撲圖:配置思路:1.將LSW8看成一個路由器,LSW8下面連

交換機靜態路由&VLAN配置例項(華為)

/*telnet配置請回顧之前的部落格*/ LSW1 vlan batch 2 to 3 12            //2 和 3 為PC1和PC2 的VLAN  12為LSW1與LSW2的直連VLAN interface Vlanif2        

集線器路由器二層交換機交換機的作用和區別

首先說集線器: 集線器是物理層的共享裝置,不能識別MAC地址和IP地址,區域網內資料包在HUB上是以廣播的方式傳播的,由每一臺終端通過驗證資料報頭的MAC地址來確定是否接收。如果傳輸過程中發生碰撞,則需要重新發送資料!它的工作模式是半雙工的,同一時刻只能有兩個埠傳送資料,所

華為交換機埠匯聚和交換機備份 例項介紹

1. 組網及功能實現 如圖,配置以三層太網埠匯聚和交換機備份功能 2. 三層交換機配置步驟 (1)配置介面IP地址 在SW1和SW2上分別建立VLAN1的三層地址10.1.1.1/30和10.1.1.2/30。 (2)配置匯聚的埠屬性 在配置埠匯聚之前,首先要保證Sw

交換機與路由器區別二、交換機工作原理

最近上班就是開會、寫文件,閒的時候也不想幹什麼事,真心沒學什麼技術上的東西,這樣真的不行啊!先發篇之前學的東西激勵下自己! 內容為網上找的多篇文章融合並總結而來,圖有一些是自己畫的,也算是原創了吧。 交換機與路由器區別,工作流程 核心層與核心交換機: 在網路行業中核心交

java遠端操控linuxwindows交換機。對其進行關機和重啟

最近有幾個需求,對linux,windows伺服器和三層交換機進行重啟和關機。 Linux: 首先說原理:對linux是通過ssh協議,賬號密碼登陸後使用命令。直接上程式碼。使用jsch-0.1.48.jar包 import java.io.BufferedReader;

什麼叫一層交換機二層交換機交換機

下面我就交換機二層和三層粗糙通俗的說一下二層交換機就相當於把一個介面分成了多個介面,只是用於提供很多介面的時候用的;(樓主如果不是專業人士可以將以下內容忽視)從理論上可以這樣理解:交換機不分割廣播域,但分割衝突域三層交換機就有了一定的路由功能(不知道樓主對路由器知道多少,如

交換機配置例項及說明

   這個不像路由器那個,那個是show run出來的,這個就是自己直接寫的了。是我在畢業設計中,使用在匯聚層的三層交換機的配置。Enable    //進入私有模式Configure terminal    //進入全域性模式service password-encryption   //對密碼進行加密ho

C# EF Core 簡單工廠模式介面多繼承例項()

一、說明 1.本例項是基於.Net Core 1.1,EF Core 1.1的程式碼例項,僅供參考 2.當前版本的EF Core好像還沒有提供模型驗證,異常跟蹤等 二、實體層,自動 生成 三 、介面層 1.基礎 介面  /// <summary> /// 基礎訪

RabbitMQ學習()——探索交換機(Exchange)結合SpringBoot實戰

在上一篇文章中,我們講解了RabbitMQ中的AMQP協議,對RabbitMQ中的基本概念和工作流程有了大致的瞭解,同時也知道了RabbitMQ當中的重要元件,如果你忘記了內容,可以先複習一下,再學習接下來的內容。RabbitMQ學習(二)——AMQP協議。

Cisco之交換機

cisco 三層交換機一 三層交換機端口模式(默認為二層接口):二層接口:access模式、trunk模式三層接口:路由接口(no swithport)、SVI接口(虛接口)本文出自 “一萬年太久,只爭朝夕” 博客,請務必保留此出處http://zengwj1949.blog.51cto.com/107473

2014025670《嵌入式系統程序設計》第四周學習總結

進行 中學 linu 搭建 學習總結 64位 系統 問題 com 第三周我們在帶三周的嵌入式程序設計中學到了如何搭建嵌入式Linux交叉開發環境。其實主要是解決64位系統下如何安裝32位程序的問題。 進行實驗樓實驗的時候真的一定要特別細致,環環相扣,做了兩次實驗到最後都

        vlan上交換機路由互通

三層交換機 vlan上三層交換機路由互通介紹: vlan是交換機組網才有的概念,按部門或者管理的要求來創造 局域網,而不是按位置劃分網段 更加的靈活和更加的安全。一.實驗拓撲圖: 二.實驗目標: vlan上三層交換實現路由互通三.實驗環境: 路由器Ip地址Pc 0192.168.

華為交換機綁定IP和MAC地址基礎命令

流程 bsp tab mac地址 基本 tegra 端口 root權限 如果 //本文檔主要介紹交換機地址綁定基本流程和用到的命令; //不記得命令可以輸入?查看,或在一段命令中用‘TAB’鍵進行命令補全:如”user-b s mac-a ‘TAB‘ //此處,將自動補全命

交換機如何設置IP-MAC綁定?跨網段IP-MAC綁定方案。

ip mac 綁定 交換機上配置IP-mac綁定,主要需要考慮兩個因素:該交換機是否開啟DHCP服務?是采用端口綁定還是ARP綁定?端口綁定或者ARP綁定,只是強制了IP-MAC的對應關系。但是,對於自動獲取IP地址的客戶機而言,還需要在DHCP服務器上分配固定IP才可以;否則客戶機重新獲取IP後

路由交換機

路由交換機的主要作用是為了解決因為沖突而導致的資源浪費問題,交換機將每一個主機或分為一個沖突域,也就是劃分物理網段,這樣主機與主機之間就不會再產生沖突,這種劃分方式叫做微分段; 路由器的主要作用是去實現網絡層的網絡異構功能,將一個局域網劃分成一個個子網即邏輯網段,分別進行管理,將廣播域劃分,劃分成一個個小的

前端---JS最基本的創建對象的方法

多個 con return 定義 字面量 nbsp 調用 對象實例 this 1:工廠模式  function createPerson(name, job){    var person = new Object();    person.name = name;    

在思科交換機配置網關的兩種方式

在思科三層交換機配置網關的兩種方式隨著交換技術的發展,三層交換機在網絡匯聚層與核心層的應用越來越多。在內網中子網與子網之間的通訊越來越少依賴於路由(幾乎見不到了),而是使用帶有路由功能的三層交換機,這對於內網中子網之間的通信效率的提高是顯著的。在三層交換機配置子網之間的通訊有一個關鍵的地方,就是子網網關的配置

Cisco PT模擬實驗(9) 交換機的VLAN間路由

ccna cisco 交換實驗 Cisco PT模擬實驗(9) 三層交換機的VLAN間路由實驗目的: 掌握交換機 Tag VLAN 的配置 掌握三層交換機 VLAN 路由 的配置方法 通過三層交換機實現 VLAN 間相互通信實驗背景: