RabbitMQ-Java客戶端API指南-上

RabbitMQ-Java客戶端API指南-上

客戶端API嚴格按照AMQP 0-9-1協議規範進行建模,並提供了易於使用的附加抽象。
RabbitMQ Java客戶端使用com.rabbitmq.client做爲其頂層包。關鍵的類和接口是:java

  • Channel
  • Connection
  • ConnectionFactory
  • Consumer

協議操做可經過Channel接口得到。Connection用於打開通道,註冊鏈接生命週期事件處理程序,並關閉再也不須要的鏈接。 鏈接是經過ConnectionFactory實例化的,這就是你如何配置各類鏈接設置,如虛擬主機或用戶名。api

Connections和Channels

import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;

鏈接到Broker

如下代碼使用給定的參數(主機名,端口號等)鏈接到AMQP代理:服務器

ConnectionFactory factory = new ConnectionFactory();
factory.setUsername(userName);
factory.setPassword(password);
factory.setVirtualHost(virtualHost);
factory.setHost(hostName);
factory.setPort(portNumber);
Connection conn = factory.newConnection();

全部這些參數都對本地運行的RabbitMQ服務器具備合理的默認值。函數

或者,可使用URI:代理

ConnectionFactory factory = new ConnectionFactory();
factory.setUri("amqp://userName:password@hostName:portNumber/virtualHost");
Connection conn = factory.newConnection();

全部這些參數都對本地運行的RabbitMQ服務器有合理的默認值。code

而後接口能夠用於打開一個通道:對象

Channel channel = conn.createChannel();

如今可使用該通道發送和接收消息,如後面的部分所述。接口

要斷開鏈接,只需關閉通道和鏈接:生命週期

channel.close();
conn.close();

使用Exchanges和Queues

客戶端應用程序與AMQP的高級構建塊交換和排隊。這些必須被「聲明」纔可使用。聲明任何一種類型的對象只是確保其中一個名稱存在,若是有必要的話建立它。rabbitmq

繼續前面的例子,下面的代碼聲明一個Exchange和一個Queue,而後將它們綁定在一塊兒。

channel.exchangeDeclare(exchangeName, "direct", true);
String queueName = channel.queueDeclare().getQueue();
channel.queueBind(queueName, exchangeName, routingKey);

這將主動聲明如下對象,這兩個對象均可以使用附加參數進行定製。這裏他們都沒有任何特別的論點。

  • 一個耐用,非自動刪除「直接」類型的交換
  • 一個具備生成名稱的非持久,獨佔,自動刪除隊列

上面的函數調用而後用給定的路由密鑰將隊列綁定到交換機上。

請注意,這將是一個典型的方式來聲明一個隊列,當只有一個客戶端想要使用它:它不須要一個衆所周知的名稱,沒有其餘客戶端可使用它(獨佔),將自動清理(自動刪除)。若是有幾個客戶想共享一個知名名字的隊列,這個代碼將是合適的:

channel.exchangeDeclare(exchangeName, "direct", true);
channel.queueDeclare(queueName, true, false, false, null);
channel.queueBind(queueName, exchangeName, routingKey);

這將主動宣佈:

  • 一個耐用,非自動刪除「直接」類型的交換
  • 一個具備衆所周知名稱的持久的,非排他性的非自動刪除隊列

請注意,全部這些Channel API方法都被重載。這些便捷的exchangeDeclare,queueDeclare和queueBind 使用合理的默認值。還有更多的參數更多的形式,讓你根據須要重寫這些默認值,在須要的地方給予徹底控制。

這個「短形式,長形式」模式在整個客戶端API使用。

相關文章
相關標籤/搜索