跳到主要內容

發表文章

目前顯示的是有「RabbitMQ」標籤的文章

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

在上次的 文章 中間單的介紹RabbitMQ 如何發送和接收訊息,今天我們要來介紹一下RabbitMQ的四種 Exchange以及其路由規則。 1. Fanout Exchange: 就像是廣播一樣,發送時會將資料送到有綁定Fanout Exchange的Queue中。 例如:發送資料到fanout.exchange,則queue-1和queue-2都會收到資料。 public void FanoutPublisher() { ConnectionFactory factory = new ConnectionFactory() { HostName = "localhost" }; using (IConnection connection = factory.CreateConnection()) { using (IModel channel = connection.CreateModel()) { channel.QueueDeclare(queue: "queue-1", durable: false, exclusive: false, autoDelete: false, arguments: null); channel.QueueDeclare(queue: "queue-2", durable: false, exclusive: false, autoDelete: false, arguments: null); channel.ExchangeDeclare(exchange: "fanout.exchange", type: ExchangeType.Fanout, durable: true, autoDelete: false); channel.QueueBind(queue: "queue-1...

分散式系統的好幫手-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...