### 消費者
```
我們此處假設消費者1只接收兩種類型的消息:更新商品和刪除商品
```
~~~
public class Recv {
private final static String QUEUE_NAME = "topic_exchange_queue_1";
private final static String EXCHANGE_NAME = "topic_exchange_test";
public static void main(String[] argv) throws Exception {
// 獲取到連接
Connection connection = ConnectionUtil.getConnection();
// 獲取通道
Channel channel = connection.createChannel();
// 聲明隊列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// 綁定隊列到交換機,同時指定需要訂閱的routing key。需要 update、delete
channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "item.update");
channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "item.delete");
// 定義隊列的消費者
DefaultConsumer consumer = new DefaultConsumer(channel) {
// 獲取消息,并且處理,這個方法類似事件監聽,如果有消息的時候,會被自動調用
@Override
public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
byte[] body) throws IOException {
// body 即消息體
String msg = new String(body);
System.out.println(" [消費者1] received : " + msg + "!");
}
};
// 監聽隊列,自動ACK
channel.basicConsume(QUEUE_NAME, true, consumer);
}
}
~~~
### 消費者2
```
我們此處假設消費者2接收所有類型的消息:新增商品,更新商品和刪除商品。
```
~~~
public class Recv2 {
private final static String QUEUE_NAME = "topic_exchange_queue_2";
private final static String EXCHANGE_NAME = "topic_exchange_test";
public static void main(String[] argv) throws Exception {
// 獲取到連接
Connection connection = ConnectionUtil.getConnection();
// 獲取通道
Channel channel = connection.createChannel();
// 聲明隊列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// 綁定隊列到交換機,同時指定需要訂閱的routing key。訂閱 insert、update、delete
channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "item.*");
// 定義隊列的消費者
DefaultConsumer consumer = new DefaultConsumer(channel) {
// 獲取消息,并且處理,這個方法類似事件監聽,如果有消息的時候,會被自動調用
@Override
public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
byte[] body) throws IOException {
// body 即消息體
String msg = new String(body);
System.out.println(" [消費者2] received : " + msg + "!");
}
};
// 監聽隊列,自動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
- 消費者
- 生產者