帶你玩轉RabbitMQ的五種佇列
package com.yixin.routing;
import com.rabbitmq.client.*;
import com.yixin.util.ConnectionUtil;
import java.io.IOException;
public class Consumer2 {
//需要繫結的交換機
private final static String EXCHANGE_NAME = "direct-exchange";
//佇列的名稱
private final static String QUEUE_NAME = "direct-queue-2";
public static void main(String[] args) {
Connection connection = null;
Channel channel = null;
try {
// 1: 從連線工廠中獲取連線
connection = connection = ConnectionUtil.getConnection("消費者2","伺服器地址",5672,"/","yixin","123456");
// 2: 從連線中獲取通道channel
channel = connection.createChannel();
// 3: 宣告佇列,如果queue已經被建立過一次了,則可以不需要定義
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
//繫結佇列到交換機
//4:繫結佇列到交換機,指定路由key為update、delete、add(可以多個也可以單個)
channel.queueBind(QUEUE_NAME,EXCHANGE_NAME,"select");
//5:同一時刻伺服器只會傳送一條訊息給消費者
channel.basicQos(1);
// 6: 定義接受訊息的回撥
Channel finalChannel = channel;
//引數2:手動返回完成狀態
finalChannel.basicConsume(QUEUE_NAME, false, new DeliverCallback() {
public void handle(String s, Delivery delivery) throws IOException {
System.out.println(QUEUE_NAME + ":外匯跟單gendan5.com收到訊息是:" + new String(delivery.getBody(), "UTF-8"));
//返回確定狀態,由於我們是設定手動返回狀態的,如果沒有呼叫該方法,那麼訊息仍然在我們佇列中,不會被刪除
finalChannel.basicAck(delivery.getEnvelope().getDeliveryTag(),false);
}
}, new CancelCallback() {
public void handle(String consumerTag) throws IOException {
}
});
System.out.println(QUEUE_NAME + ":開始接受訊息");
//使我們的程式一直處於執行狀態,也就是一直處於監聽的狀態,這樣就不需要使用while(true)了。
System.in.read();
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("傳送訊息出現異常...");
} finally {
// 7: 釋放連線關閉通道
if (channel != null && channel.isOpen()) {
try {
channel.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
if (connection != null && connection.isOpen()) {
try {
connection.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2884070/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【RabbitMQ】一文帶你搞定RabbitMQ延遲佇列MQ佇列
- RabbitMQ六種佇列模式-路由模式MQ佇列模式路由
- RabbitMQ的佇列模式你真的懂嗎MQ佇列模式
- RabbitMQ .NET訊息佇列使用入門(五)【RabbitMQ例子】MQ佇列
- 一張圖帶你理解和實現RabbitMQ的延遲佇列功能MQ佇列
- RabbitMQ訊息佇列(五):Routing 訊息路由MQ佇列路由
- Springboot + rabbitMq佇列Spring BootMQ佇列
- RabbitMQ,RocketMQ,Kafka 幾種訊息佇列的對比MQKafka佇列
- RabbitMQ 訊息佇列之佇列模型MQ佇列模型
- 延時佇列(RabbitMQ)佇列MQ
- [訊息佇列]RabbitMQ佇列MQ
- RabbitMQ訊息佇列MQ佇列
- Laravel RabbitMQ 工作佇列LaravelMQ佇列
- 帶你重新“玩轉”FlutterFlutter
- RabbitMQ延時佇列的使用MQ佇列
- 【轉】Android三種姿勢帶你玩轉360度全景圖功能Android
- 玩轉陣列各種方法陣列
- 乾貨!基於SpringBoot的RabbitMQ多種模式佇列實戰Spring BootMQ模式佇列
- MQ訊息佇列_RabbitMQMQ佇列
- lumen 8.0 使用 rabbitmq 佇列MQ佇列
- RabbitMQ 高階 - 死信佇列MQ佇列
- 訊息佇列之RabbitMQ佇列MQ
- rabbitmq訊息佇列原理MQ佇列
- RabbitMQ-簡單佇列MQ佇列
- RabbitMQ:偽延時佇列MQ佇列
- RabbitMQ 入門 - 工作佇列MQ佇列
- Golang 實現 RabbitMQ 的死信佇列GolangMQ佇列
- netcore下RabbitMQ佇列、死信佇列、延時佇列及小應用NetCoreMQ佇列
- 沒用過訊息佇列?一文帶你體驗RabbitMQ收發訊息佇列MQ
- 手把手帶你玩轉LinuxLinux
- 手摸手帶你玩轉Xcode ExtensionsXCode
- CryptAssist-帶你玩轉幣圈
- 【訊息佇列】RabbitMq-宣告佇列與交換機佇列MQ
- RabbitMQ 佇列使用基礎教程MQ佇列
- RabbitMQ實現延遲佇列MQ佇列
- SpringBoot:初探 RabbitMQ 訊息佇列Spring BootMQ佇列
- 《RabbitMQ》什麼是死信佇列MQ佇列
- RabbitMQ實戰《延遲佇列》MQ佇列