跳到主要內容

發表文章

目前顯示的是 9月, 2019的文章

分散式系統的好幫手-RabbitMQ (上)

在分散式系統架構中,子系統之間應該要遵守低耦合的設計原則,盡可能地減少它們之間的相依性,然而我們要如何才能達到解耦合? 一般來說我們會使用Message Queue 作為分散式系統架構中的一個解耦合手段,簡單說地說一下它的運作方式,一般會有發佈者、接收者這兩種角色,發佈者將Message送到Queue ,接收者可以訂閱Queue,以便接收發佈者所傳送過來的Message,這種設計模式也就是所謂的觀察者模式。 目前市面上已經有很多Message Queue的框架,如ActiveMQ、RabbitMQ和RocketMQ, 而我們今天來簡單的地介紹最知名也最多人使用的RabbitMQ框架,它是由Erlang 語言開發且基於AMQP (Advanced Message Queuing Protocol) ,因此包含訊息、佇列、路由、可靠性、易用性、擴展性、安全性重要特徵,同時RabbitMQ也支援多樣的用戶端程式語言如Python、Ruby、.NET、Java、JavaScript、C、PHP。 現在我們以簡單的程式碼來介紹一下,如何在.NET使用RabbitMQ Client來建立MQ,並且進行發送與收取訊息: 1. 安裝 RabbitMQ.Client 。 2. 建立Queue後,接著綁定路由規則Exchange與RoutingKey 。 ConnectionFactory factory = new ConnectionFactory() { HostName = "localhost" }; using (IConnection connection = factory.CreateConnection()) { using (IModel channel = connection.CreateModel()) { channel.QueueDeclare(queue: "test-queue", durable: false, exclusive: false, autoDelete: false, argume