image.png
public class ProducerHelloWorld {
public static void main(String[] args) throws IOException, TimeoutException {
// 1 创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
// 2 设置参数
factory.setHost("localhost");
factory.setPort(5672);
factory.setVirtualHost("/itcast");
factory.setUsername("heima");
factory.setPassword("heima");
// 3 创建连接 Connection
Connection connection = factory.newConnection();
// 4 创建 Channel
Channel channel = connection.createChannel();
// 5 创建队列 Queue
channel.queueDeclare(
"hello_world", // 队列名称
true, // 是否持久化, 当 mq 重启之后还在
false, // 是否独占,只有有一个消费者监听这个队列,当 Connection 关闭时,是否删除队列
false, // 是否自动删除,当没有 Consumer 时,自动删除
null // 参数
); // 没有就创建队列,有就不会创建
// 6 发送消息
String body = "hello rabbitmq ~~~";
channel.basicPublish(
"", // 交换机名称,简单模式下交换机会使用默认的 ""
"hello_world", // 路由名称
null, // 配置信息
body.getBytes() // 发送消息
);
// 7 释放资源
channel.close();
connection.close();
}
}
public class ConsumerHelloWorld {
public static void main(String[] args) throws IOException, TimeoutException {
// 1 创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
// 2 设置参数
factory.setHost("localhost");
factory.setPort(5672);
factory.setVirtualHost("/itcast");
factory.setUsername("heima");
factory.setPassword("heima");
// 3 创建连接 Connection
Connection connection = factory.newConnection();
// 4 创建 Channel
Channel channel = connection.createChannel();
// 5 创建队列 Queue
channel.queueDeclare(
"hello_world", // 队列名称
true, // 是否持久化, 当 mq 重启之后还在
false, // 是否独占,只有有一个消费者监听这个队列,当 Connection 关闭时,是否删除队列
false, // 是否自动删除,当没有 Consumer 时,自动删除
null // 参数
); // 没有就创建队列,有就不会创建
// 6 接受消息
Consumer consumer = new DefaultConsumer(channel) {
// 收到消息后,会自动执行该方法
@Override
public void handleDelivery(
String consumerTag, // 标识
Envelope envelope, // 获取一些信息,交换机,路由 key
AMQP.BasicProperties properties, // 配置信息
byte[] body // 数据
) {
System.out.println("consumerTag: " + consumerTag);
System.out.println("exchange: " + envelope.getExchange());
System.out.println("routingKey: " + envelope.getRoutingKey());
System.out.println("properties: " + properties);
System.out.println("body: " + new String(body));
}
};
channel.basicConsume(
"hello_world", // 队列名称
true, // 是否自动确认
consumer // 回调对象
);
}
}
image.png
网友评论