簡體   English   中英

異步 AMQP 生產者和消費者

[英]Asynchronous AMQP producer and consumer

我有一個雙向 AMQP 服務,它既使用隊列中的消息又發布到扇出交換。 客戶端對稱地從交換中消費並發布到隊列中。 (這不是聊天服務器,但可以很容易地將其視為聊天服務器。)傳入和傳出的消息不是 1:1 的。 傳出消息可能是對傳入消息的響應,也可能是基於時間或其他異步因素(例如對數據庫的更改)生成的。

我目前使用 Pika 和 BlockingConnection 在 Python 中構建了這個,但它需要兩個完整的連接(每個連接一個通道)和線程。 通道在 AMQP 中不是雙向的,我還沒有找到一種使用 BlockingConnection 同時管理兩個通道的方法。 基於時間的消息非常笨拙和有限,因為它們基於connection.sleep() 我嘗試將其轉換為SelectConnection ,但是在管理兩個通道的回調時遇到了問題。

我想將其轉換為具有兩個通道的單個連接的非線程異步系統。 我在 Python 3.5 中工作,所以基於協程或 asyncio 的東西似乎很理想。 我也很高興離開 Pika(我正在探索 Kombu,因為我們已經在使用 Celery,但我仍然無法處理生產者和消費者;我也看過 amqpstorm,雖然我更喜歡 async而不是螺紋)。 唯一的要求是 Python 3.5。 性能不是最緊迫的問題(我預計低於 100 msg/sec); 實現的簡單性和靈活性更為重要。

在 Pika(或任何其他 Python AMQP 系統)中管理兩個通道(每個方向一個)是否可行?

我不知道您是否找到了解決方案,但是有一個pika 端口來支持 asyncio ,可能值得一試!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM