一、前言
RabbitMQ 支持多种语言访问,本次介绍 RabbitMQ Java Client 的一些简单的api使用,如声明 Exchange、Queue,发送消息,消费消息,一些高级 api 会在后面的文章中详细的说明。
二、项目实战
1.引入依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.1.0</version>
</dependency>
2.设置属性
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
3.设置生产者
package com.example.springbootdemo.test;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
* 生产者
*/
public class Producer {
public static void main(String[] args) throws IOException, TimeoutException {
//连接RabbitMQ服务器
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername("guest");
factory.setPassword("guest");
factory.setVirtualHost("/");
factory.setHost("127.0.0.1");
factory.setPort(5672);
//创建一个连接
Connection conn = factory.newConnection();
//获得信道
Channel channel = conn.createChannel();
//声明交换器
channel.exchangeDeclare("ex-hello", "direct");
//发送的消息内容
byte[] messageBodyBytes = "Hello,world!".getBytes();
channel.basicPublish("ex-hello", "route-hello", null, messageBodyBytes);
//关闭通道
channel.close();
conn.close();
}
}
4.设置接受者
package com.example.springbootdemo.test;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DefaultConsumer;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public class Consumer {
public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
//连接RabbitMQ服务器
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername("guest");
factory.setPassword("guest");
factory.setVirtualHost("/");
factory.setHost("127.0.0.1");
factory.setPort(5672);
//创建一个连接
Connection conn = factory.newConnection();
//获得信道
Channel channel = conn.createChannel();
//声明队列
channel.queueDeclare("queue-hello", true, false, false, null);
//声明绑定
channel.queueBind("queue-hello", "ex-hello", "route-hello");
//监听队列中的消息
channel.basicConsume("queue-hello", true, new SimpleConsumer(channel));
TimeUnit.SECONDS.sleep(10);
channel.close();
conn.close();
}
}
5.消息处理类SimpleConsumer
package com.example.springbootdemo.test;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import java.io.IOException;
public class SimpleConsumer extends DefaultConsumer {
public SimpleConsumer(Channel channel) {
super(channel);
}
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
//接受从队列中发送的消息
System.out.println(consumerTag);
System.out.println("-----收到消息了---------------");
System.out.println("消息属性为:" + properties);
System.out.println("消息内容为:" + new String(body));
}
}
6.测试
消息发送成功之后,启动消费者,输出结果如下:
标签:Java,factory,rabbitmq,client,RabbitMQ,import,com,channel,客户端 From: https://blog.51cto.com/u_13312531/12378141