關於python和rabbitmq的那點事兒

2021-08-26 07:32:08 字數 1103 閱讀 2603

rabbitmq是乙個訊息中介軟體,在之前的zmq介紹中有略帶提過。

由於zmq的硬傷(無法方便儲存、監控中間過程),故而工作中一直都是使用的"兔子"。從1.7.0到現在的2.6.1版本(個人嘗試過的),rabbitmq有著許多令人欣喜、驚嘆的變化(或者說是進步)。

先來簡單介紹下當前版本"兔子"的閃光點:

1.內建了ha,如果組建cluster,負載均衡之類的問題就無需擔憂了。

2.可以設定佇列映象。(這算是呼聲比較大的需求了,簡單來說"再也不用擔心單點的問題了")

雖然相對於zmq的去中心化,"兔子"的server端看起來比較臃腫,不過如果在同乙個工作域中,完全可以所有的機器"統統連起來",於是乎,所有的訊息互動對於上層**而言就變成localhost互動了。底層傳信交給"兔子",是不是對於普通coder而言,效果和zmq差不多了?

底層的東西是不錯,下面要講到上層的東西了。

"人生苦短,我用python"。

python的amqp庫種類也著實不少。原來是amqplib一統天下的,後來由於原作者大半年沒有更新(前段日子更新了一次,可惜只支援amqp0.8協議),現在"兔子「官方推薦鏈條的第一位是pika,這位兄台也算是很勤快了,不過遲遲沒有出大版本號,目前版本停留在0.9.5,(時不時不變更版本號的更新一下)。

個人目前主要用kombu(基於amqplib的乙個框架),但由於當前版本的amqplib並不能很好的支援"兔子"的第二個閃光點(佇列映象),所以pika自然就進入了眼簾(啥時候出大版本1啊)。後來又發現了amqpctl,可以控制佇列等rabbitmqctl不支援的東東,蠻好用的,由於他也是基於amqplib的,所以我簡單修改了一下,基於pika,這樣就可以宣告"佇列映象了",東西在附件給出,與第三方類庫一樣使用即可,不過要記得先安裝pika。

注意:如果用到附件,其中的映象佇列引數宣告是這個樣子的:

amqpctl --host x.x.x.x --declare-queue -q test --arguments ''
官網參考在這:

目前還有乙個問題:並不支援指定的node間的映象,按照官方的說法是」靜待下個版本「~

其實本來是想寫個類似"吐槽"之類的東東,為了整「安全、備份,排除單點"可是折騰死哥了。以上,作為乙個方案寫在這兒,便宜乃們了!

rabbit和kafka的優劣點(個人記憶)

核心點 資料結構的差異 順序性 訊息留存 rabbit無法保證broker儲存資料的有序性,佇列是先入先出,消費者消費了,資料就出對了,這個資料就被刪除。假如多個消費者消費同一佇列時,某一消費者消費失敗,資料回退到佇列了,但其他消費者卻已經消費成功了。這個時候順序就亂了,針對順序性要求高的業務就不支...

關於python的 和

在python中的 和 除了分別表示乘法運算和冪運算外還有其它作用。在python中可能會經常看到類似於def function1 args,kwargs 的函式定義形式,或者看到function1 v1,v2 的函式呼叫形式,很多沒看到過的人可能會不知所以。下面分別說明 在函式定義時,表示可變位置...

python關於類和物件

類是python中很重要的資料型別,類的出現可以實現物件的兩量產化。物件等於屬性和方法,比如說人是乙個物件,人的眼睛鼻子等屬於其屬性,而人的運動屬於其方法。簡而言之,就是屬性是靜態的,方法是動態的。python本來就是一種以物件導向解釋性的程式語言。有三個特徵 1 封裝,資訊隱蔽 2 繼承 3 多型...