~~~
private final static String QUEUE_NAME = "simple_queue";
/**
* 如果消息不太重要,丟失也沒有影響,那么自動ACK會比較方便
* 如果消息非常重要,不容丟失。那么最好在消費完成后手動ACK,否則接收消息后就自動ACK,RabbitMQ就會把消息從隊列中刪除。如果此時消費者宕機,那么消息就丟失了
*/
public static void main(String[] args) throws Exception {
//獲取連接
Connection connection = ConnectionUtil.getConn();
// 創建通道
final Channel channel = connection.createChannel();
// 聲明隊列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
//設置每個消費同時只能處理一條消息
channel.basicQos(1);
// 消費者
DefaultConsumer consumer = new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
// body 消息體
String msg = new String(body);
System.out.println("recv " + msg);
//channel.basicAck(envelope.getDeliveryTag(), false); 手動ack
}
};
// 監聽隊列, 第二個參數false:手動ack, true:自動ack
channel.basicConsume(QUEUE_NAME, true, consumer);
}
~~~
- JMS vs AMQP
- ActiveMQ
- 安裝
- 簡介
- 知識點
- 點對點
- 發布訂閱
- 對比
- 安全認證
- 持久化
- Api
- Productor
- 發送消息
- 消息有效期
- 消息優先級
- 開啟
- 嚴格順序
- 強順序
- Consumer
- 消息確認
- 消息的過濾
- 客戶端
- java
- 點對點
- 生產者
- 消費者
- 發布訂閱
- 生產者
- Springboot
- 配置
- QueueConfig
- 生產者
- 消費者
- 集群
- RabbitMQ
- 安裝
- 主要概念
- 消息模型
- 基本消息模型
- 簡介
- java
- 消費者
- 生產者
- 工具類
- work消息模型
- 簡介
- java
- 消費者
- 生產者
- 訂閱模型-Fanout
- 簡介
- java
- 生產者
- 消費者
- 訂閱模型-Direct
- 簡介
- java
- 生產者
- 消費者
- 訂閱模型-Topic
- 簡介
- java
- 生產者
- 消費者
- 持久化
- Spring-AMQP
- 消費者
- 生產者