RabbitMQ入门代码
作者:互联网
RabbitMQ入门代码
这里只做简单的一个案例,用main方法进行测试
- Procuder(生产者)
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Procuder {
public static void main(String[] args) throws Exception {
//1 创建一个ConnectionFactory, 并进行配置
ConnectionFactory connectionFactory = new ConnectionFactory();
//设置ip
connectionFactory.setHost("127.0.0.1");
//设置端口
connectionFactory.setPort(5672);
//设置虚拟主机路径
connectionFactory.setVirtualHost("/");
//2 通过连接工厂创建连接
Connection connection = connectionFactory.newConnection();
//3 通过connection创建一个Channel
Channel channel = connection.createChannel();
//4 通过Channel发送数据
String msg = "Hello RabbitMQ!";
/**
* 1 exchange 交换机名称 如果不指定exchange则会默认使用AMQP default交换机,并根据routingKey去找,如果找到完全匹配的则会路由过去,如果找不到则不会路由过去,这条消息则会失败
* 2 routingKey 路由规则
* 3、props 消息的附加属性
* 4、body 消息实体
*/
channel.basicPublish("", "test001", null, msg.getBytes());
//5 记得要关闭相关的连接 由小到大的原则
channel.close();
connection.close();
}
}
- Consumer(消费者)
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
public class Consumer {
public static void main(String[] args) throws Exception {
//1 创建一个ConnectionFactory, 并进行配置
ConnectionFactory connectionFactory = new ConnectionFactory();
//设置ip
connectionFactory.setHost("127.0.0.1");
//设置端口
connectionFactory.setPort(5672);
//设置虚拟主机路径
connectionFactory.setVirtualHost("/");
//2 通过连接工厂创建连接
Connection connection = connectionFactory.newConnection();
//3 通过connection创建一个Channel
Channel channel = connection.createChannel();
//4 声明(创建)一个队列
String queueName = "test001";
/**
* 1、queueName 队列名字
* 2、durable 是否持久化 如果设置为true 则表示持久化 就算服务器重启此队列也不会消失
* 3、exclusive 表示独占 设置为true后 则表示此队列只有这一个channel能够监听,应用于顺序消费的场景
* 4、autoDelete 自动删除 设置成ture后,如果队列长时间没有被使用,则会自动删除
* 5、扩展参数
*/
channel.queueDeclare(queueName, true, false, false, null);
//5 创建消费者 建立在channel之上的消费者
QueueingConsumer queueingConsumer = new QueueingConsumer(channel);
//6 设置Channel
/**
*1、queueName 监听(消费)的队列名字
*2、autoAck 是否自动签收 如果设置为true,表示自动签收,表示消息已收到,也可以手工设置ack
*3、callback 具体的消费者对象
*/
channel.basicConsume(queueName, true, queueingConsumer);
while(true){
//7 获取消息 如果没有消息则一直阻断在这,nextDelivery(long time)方法则是有超时时间,在时间内如果没有消息则会放行
Delivery delivery = queueingConsumer.nextDelivery();
String msg = new String(delivery.getBody());
System.err.println("消费端: " + msg);
//
//Envelope envelope = delivery.getEnvelope();
}
}
}
一般是先启动Consumer,这样会创建一个队列然后Procuder将消息推送到队列里
标签:connectionFactory,入门,代码,RabbitMQ,client,rabbitmq,import,com,channel 来源: https://blog.csdn.net/qq_41681399/article/details/118456414