1. 引入Maven
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.0</version>
</dependency>
2. 创建生产者
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) {
// 创建链接工厂
ConnectionFactory factory = new ConnectionFactory();
// 设置连接参数
factory.setHost("localhost");
// 设置端口
factory.setPort(5672);
// 设置用户名
factory.setUsername("guest");
// 设置密码
factory.setPassword("guest");
try {
// 获取连接
Connection connection = factory.newConnection();
// 创建一个通道
Channel channel = connection.createChannel();
// 定义一个队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// 定义一个消息
String message = "Hello World!";
// 发布消息
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
} catch (TimeoutException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
3. 创建消费者
public static void main(String[] args) throws IOException, TimeoutException {
// 创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
// 设置ip
factory.setHost("127.0.0.1");
// 设置端口
factory.setPort(AMQP.PROTOCOL.PORT);
// 设置用户名
factory.setUsername("guest");
// 设置密码
factory.setPassword("guest");
// 新建一个长连接
Connection connection = factory.newConnection();
// 创建一个通道(一个轻量级的连接)
Channel channel = connection.createChannel();
// 声明一个队列
String QUEUE_NAME = "hello";
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println("Consumer Wating Receive Message");
// 创建消费者
Consumer consumer = new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
String message = new String(body, "UTF-8");
System.out.println(" [C] Received '" + message + "'");
}
};
// 订阅消息
channel.basicConsume(QUEUE_NAME, true, consumer);
}