快捷搜索:  汽车  科技

rabbitmq四种模式(RabbitMQ基础简单模式)

rabbitmq四种模式(RabbitMQ基础简单模式)

1.1 简单模式简介

简单模式就是一个生产者一个消费者。生产者生产消息发送到消息队列,消费者从消息队列中取消消费消息,如下图所示。

rabbitmq四种模式(RabbitMQ基础简单模式)(1)

1.2 简单模式实现

生产者简单的实现

// 生产者 public class BasicProducer { @SneakyThrows public static void main(String[] args) { // 1、建立连接工厂 ConnectionFactory connectionFactory = new ConnectionFactory(); // 2、设置连接参数 connectionFactory.setHost("192.168.133.128"); connectionFactory.setPort(5672); connectionFactory.setVirtualHost("/"); // 默认就是/ connectionFactory.setUsername("admin"); connectionFactory.setPassword("admin"); // 3、创建连接 Connection connection = connectionFactory.newConnection(); // 4、创建channel Channel channel = connection.createChannel(); // 5、创建队列 /** * 参数介绍 * queue 队列名称 * durable 是否持久化 当MQ重启后还在 * exclusive 是否独占(只能有一个消费者监听这个队列) 当Connection关闭时是否删除队列 * autoDelete 是否自动删除 当没有消费者的时候会自动删除掉 * arguments 参数信息 */ // 如果没有一个叫dream_house的队列就会自动创建一个队列 channel.queueDeclare("dream_house" true false false null); // 6、发送消息 /** * 参数介绍 * exchange 交换机名称 简单模式下是没有交换机的 会使用默认的交换机 * routingKey 路由名称(默认交换机的队列名字和队列名称一样) * props 配置信息 * body 需要发送的消息数据 */ String body = "hello com.dream house"; channel.basicPublish("" "dream_house" null body.getBytes()); // 7、释放资源 channel.close(); connection.close(); } }

消费者简单的实现

// 简单模式的消费者 public class BasicConsumer { @SneakyThrows public static void main(String[] args) { // 1、建立连接工厂 ConnectionFactory connectionFactory = new ConnectionFactory(); // 2、设置连接参数 connectionFactory.setHost("192.168.133.128"); connectionFactory.setPort(5672); connectionFactory.setVirtualHost("/"); // 默认就是/ connectionFactory.setUsername("admin"); connectionFactory.setPassword("admin"); // 3、创建连接 Connection connection = connectionFactory.newConnection(); // 4、创建channel Channel channel = connection.createChannel(); // 5、创建队列 /** * 参数介绍 * queue 队列名称 * durable 是否持久化 当MQ重启后还在 * exclusive 是否独占(只能有一个消费者监听这个队列) 当Connection关闭时是否删除队列 * autoDelete 是否自动删除 当没有消费者的时候会自动删除掉 * arguments 参数信息 */ // 如果没有一个叫dream_house的队列就会自动创建一个队列 channel.queueDeclare("dream_house" true false false null); // 6、接收消息 /** * 参数介绍 * String queue 队列名称 * boolean autoAck 是否自动确认 * Consumer callback 回调函数 */ Consumer consumer = new DefaultConsumer(channel) { // 回调方法当收到消息后自动执行方法 匿名内部类 /** * 参数介绍 * @param consumerTag 消息标识 * @param envelope 获取一些信息,比如交换机 路由 * @param properties 配置信息 * @param body 真实的报文信息 * @throws IOException */ @Override public void handleDelivery(String consumerTag Envelope envelope AMQP.BasicProperties properties byte[] body) throws IOException { // super.handleDelivery(consumerTag envelope properties body); System.out.println("consumerTag:" consumerTag " envelope:" envelope.toString() " properties:" properties " body:" new String(body)); } }; channel.basicConsume("dream_house" true consumer); } }1.3 简单模式总结

可以看到简单模式实现起来较为简单,主要就是声明了生产者和消费者,生产者和消费者之间只是通过队列Queue进行了连接通信。代码实现主要做了以下几个步骤:

  1. 实例化一个连接工厂
  2. 设置连接参数来创建连接
  3. 创建channel
  4. 通过channel来创建一个队列
  5. 生产者生产消息通过队列dream_house发送消息,调用channel.basicPublish()发送消息
  6. 消费者通过dream_house来接收消费消息,调用 channel.basicConsume()来接收消息

猜您喜欢: