本文基於慕課網-阿神老師的課程-RocketMQ核心技術精講與高併發抗壓實戰,僅作爲個人的學習
記錄
使用idea快速創建一個spring boot項目,在pom文件中添加amqp-client jar包依賴
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.5</version>
</dependency>
1.創建Constant類用於存儲RocketMQ 的IP、端口、用戶名、密碼等關鍵信息
public class Constant {
public static String HOST = "192.168.193.128";
public static int PORT = 5672;
public static String USERNAME = "root";
public static String USERPASS = "root";
}
2.編寫Produce生產者類
package com.star.movie.quickstart;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.star.movie.common.Constant;
/**
* @Description:生產者demo
* @author:kaili
* @Date: 2019-04-21 22:11
**/
public class Producer {
public static void main(String[] args) throws Exception {
//1 創建一個ConnectionFactory, 並進行配置
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost(Constant.HOST);
connectionFactory.setPort(Constant.PORT);
connectionFactory.setUsername(Constant.USERNAME);
connectionFactory.setPassword(Constant.USERPASS);
connectionFactory.setVirtualHost("/");
//2 通過連接工廠創建連接
Connection connection = connectionFactory.newConnection();
//3 通過connection創建一個Channel
Channel channel = connection.createChannel();
//4 通過Channel發送數據
for(int i=0; i < 5; i++){
String msg = "Hello RabbitMQ!";
//1 exchange 2 routingKey
channel.basicPublish("", "test001", null, msg.getBytes());
}
//5 記得要關閉相關的連接
channel.close();
connection.close();
}
}
3.編寫消費者類
package com.star.movie.quickstart;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.star.movie.common.Constant;
/**
* @Description:消費者demo
* @author:kaili
* @Date: 2019-04-21 22:10
**/
public class Consumer {
public static void main(String[] args) throws Exception {
//1 創建一個ConnectionFactory, 並進行配置
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost(Constant.HOST);
connectionFactory.setPort(Constant.PORT);
connectionFactory.setVirtualHost("/");
connectionFactory.setUsername(Constant.USERNAME);
connectionFactory.setPassword(Constant.USERPASS);
//2 通過連接工廠創建連接
Connection connection = connectionFactory.newConnection();
//3 通過connection創建一個Channel
Channel channel = connection.createChannel();
//4 聲明(創建)一個隊列
String queueName = "test001";
channel.queueDeclare(queueName, true, false, false, null);
//5 創建消費者
QueueingConsumer queueingConsumer = new QueueingConsumer(channel);
//6 設置Channel
channel.basicConsume(queueName, true, queueingConsumer);
while(true){
//7 獲取消息
Delivery delivery = queueingConsumer.nextDelivery();
String msg = new String(delivery.getBody());
System.err.println("消費端: " + msg);
//Envelope envelope = delivery.getEnvelope();
}
}
}
4.運行Consumer代碼觀察RabbitMQ Management
生成了一個test001的隊列,觀察test001隊列
該隊列沒有與對應的交換機綁定,是RabbitMQ默認交換機綁定處理的。
5.關閉消費者端代碼開啓生產者Producer 端代碼,觀察RabbitMQ Management
和我們代碼中一樣,發送了5條消息到RabbitMQ的test001消息隊列,等待消費者消費。
6.啓動消費者端代碼
消費者端消費了消息,繼續觀察管理平臺test001 queue
消息已經消費完成
以上就是通過amqp-client創建的一個簡單的生產者消費者代碼過程。