**
* 消息发送
*/
public class Send {
//创建队列的名称
private final static String QUEUE_NAME="queue";
public static void main(String[] args) {
/**
* 创建连接
*/
ConnectionFactory conn = new ConnectionFactory();
//连接rabbitmq的主机
conn.setHost("10.1.8.126");
conn.setPort(5672);
conn.setUsername("rabbitadmin");
conn.setPassword("123456");
conn.setVirtualHost("/");
try {
//创建一个新的连接
Connection connection = conn.newConnection();
//创建一个频道
Channel channel = connection.createChannel();
//指定一个队列
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
//指定发送的消息
String send = "hello world";
//往队列中发送一条消息
channel.basicPublish("",QUEUE_NAME,null,send.getBytes());
System.out.println("发送的消息:"+send);
//关闭频道
channel.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 消息接收
*/
public class Recv {
//创建队列的名称
private final static String QUEUE_NAME="queue";
public static void main(String[] args) {
/**
* 创建连接
*/
ConnectionFactory conn = new ConnectionFactory();
//连接rabbitmq的主机
conn.setHost("10.1.8.126");
conn.setVirtualHost("/");
conn.setPort(5672);
conn.setUsername("rabbitadmin");
conn.setPassword("123456");
try {
//创建一个新的连接
Connection connection = conn.newConnection();
//创建一个频道
Channel channel = connection.createChannel();
//指定一个队列 主要为了防止消息接收者先运行,队列还没创建
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
System.out.println("等待消息发送过来");
//创建消息队列消费者
QueueingConsumer consumer = new QueueingConsumer(channel);
//指定消费队列
channel.basicConsume(QUEUE_NAME,true,consumer);
//创建一个队列阻塞方法
while (true){
//内部实现是阻塞队列的take方法
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
//接收消息
String message = String.valueOf(delivery.getBody());
System.out.println("消费者接收消息"+message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
rabbitMQ简单实例
最新推荐文章于 2023-12-01 13:55:19 发布