rabbitmq 传递文件_使用RabbitMQ进行消息传递
rabbitmq 傳遞文件
RabbitMQ是一個強大的消息代理,可用于實現不同的消息傳遞模式。 即使有出色的教程 (使用不同的語言和框架),也很難理解這些概念。 在這篇文章中,我想展示一些可以用RabbitMQ實現的不同范例,以及為什么要為某些概念而苦惱。
使用隊列發送和接收
最簡單的方法是使用隊列發送消息,并讓使用者從同一隊列中讀取數據。
沒有什么可以阻止您擁有多個使用者,每個使用者都可以處理隊列中的消息。 使用完一條消息后,該消息將從隊列中消失。
當具有需要執行的任務并且無論哪個消費者處理任務都無關緊要時,這特別適合。
發布/訂閱
并非所有用例都只消耗一條消息的方式。 通常,您希望擁有多個應該全部處理所有消息的使用者。 一個示例可以是將對象存儲在不同的數據存儲中(例如,搜索索引和數據庫),另一種是域事件,例如已提交并應由訂單管理系統和庫存系統處理的訂單。 這需要一種發布/訂閱機制,RabbitMQ當然已經涵蓋了這一點。
與僅使用隊列相比,最大的區別是在這種情況下,生產者不再直接寫隊列。 一個稱為Exchange的實例將接受郵件并將其轉發到一個或多個隊列。
要使用經典的發布/訂閱模型,您可以使用FanoutExchange將消息轉發到一個或多個隊列。 要連接交換和隊列,您需要聲明一個綁定,在這種情況下,特定交換的所有消息都應轉發到特定隊列。
每個使用者都從專用隊列中讀取消息。 這也意味著您將需要為每個正在監聽的使用者綁定一個綁定。
使用RabbitMQ,可以使用在使用者停止監聽時自動刪除的隊列。 這允許消費者加入和離開時具有非常動態的行為。
看我們的第一個示例,您可能想知道為什么有不同的方式來發送消息,發送隊列和進行交換。 事實證明,發送到隊列確實是不可能的。 總是存在一個默認交換,它僅轉發消息。 此默認交換僅獲取消息的某個路由鍵(即隊列名稱),然后將它們以相同的名稱放入隊列中。
發布/訂閱過濾
除了將消息發送到已注冊進行交換的所有隊列之外,還可以根據路由密鑰對消息進行過濾。 所有消息都被發送到一個交換機,該交換機通過查看路由鍵來決定將消息發送到哪個隊列。
如果您想與路由鍵完全匹配,請執行DirectExchange。
將DirectExchange綁定到隊列時,您需要提供一個路由密鑰,該路由密鑰將確定將為此隊列考慮的路由密鑰。 如果要分配多個路由鍵,則可以為同一隊列添加多個綁定。
您還可以提供通配符來確定應將哪些路由密鑰用于隊列,這可以通過使用需要分層路由密鑰的TopicExchange來完成。
一開始,這兩個交流-直接交流和主題交流-可能最讓我感到困惑。 當涉及到主題時,我正在考慮經典的發布訂閱系統,例如使用FanoutExchange時。 交換名稱是客戶端正在注冊的主題。 但是這里的主題是指在現有交換機上的一種路由。 與DirectExchange相同:我希望直接交換類似于第一個直接將消息發送到隊列的示例。 但是在這種情況下,直接交換是指直接路由,因此您始終需要為此提供路由密鑰。
如果您想進一步了解各種交流,請轉到RabbitMQ網站上的教程 。
翻譯自: https://www.javacodegeeks.com/2018/03/messaging-with-rabbitmq-2.html
rabbitmq 傳遞文件
總結
以上是生活随笔為你收集整理的rabbitmq 传递文件_使用RabbitMQ进行消息传递的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类似cs扫描全能王的电脑软件(cs全能扫
- 下一篇: 电脑登录密码忘记怎样删除密码电脑如何删除