物理机安装虚拟机做网站好处,金融类的网站怎么做,网站域名怎么做变更,网站的原理文章目录一、work模式1.1. 图示1.2. 消费者11.3. 消费者21.4. 生产者1.5. 测试二、Work模式的“能者多劳”2.1. 关键配置2.2. 测试#xff1a;一、work模式
1.1. 图示 一个生产者、2个消费者。
一个消息只能被一个消费者获取。
1.2. 消费者1
package com.gblfy.rabbitmq.w…
文章目录一、work模式1.1. 图示1.2. 消费者11.3. 消费者21.4. 生产者1.5. 测试二、Work模式的“能者多劳”2.1. 关键配置2.2. 测试一、work模式
1.1. 图示 一个生产者、2个消费者。
一个消息只能被一个消费者获取。
1.2. 消费者1
package com.gblfy.rabbitmq.work;import com.gblfy.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.QueueingConsumer;public class Recv {private final static String QUEUE_NAME test_queue_work;public static void main(String[] argv) throws Exception {// 获取到连接以及mq通道Connection connection ConnectionUtil.getConnection();Channel channel connection.createChannel();// 声明队列channel.queueDeclare(QUEUE_NAME, false, false, false, null);// 同一时刻服务器只会发一条消息给消费者// channel.basicQos(1);// 定义队列的消费者QueueingConsumer consumer new QueueingConsumer(channel);// 监听队列手动返回完成channel.basicConsume(QUEUE_NAME, false, consumer);// 获取消息while (true) {QueueingConsumer.Delivery delivery consumer.nextDelivery();String message new String(delivery.getBody());System.out.println( [x] Received message );//休眠Thread.sleep(10);// 返回确认状态channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);}}
}1.3. 消费者2
package com.gblfy.rabbitmq.work;import com.gblfy.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.QueueingConsumer;public class Recv2 {private final static String QUEUE_NAME test_queue_work;public static void main(String[] argv) throws Exception {// 获取到连接以及mq通道Connection connection ConnectionUtil.getConnection();Channel channel connection.createChannel();// 声明队列channel.queueDeclare(QUEUE_NAME, false, false, false, null);// 同一时刻服务器只会发一条消息给消费者//channel.basicQos(1);// 定义队列的消费者QueueingConsumer consumer new QueueingConsumer(channel);// 监听队列手动返回完成状态channel.basicConsume(QUEUE_NAME, false, consumer);// 获取消息while (true) {QueueingConsumer.Delivery delivery consumer.nextDelivery();String message new String(delivery.getBody());System.out.println( [x] Received message );// 休眠1秒Thread.sleep(1000);channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);}}
}1.4. 生产者
向队列中发送10条消息。
1.5. 测试
测试结果 1、消费者1和消费者2获取到的消息内容是不同的同一个消息只能被一个消费者获取。 2、消费者1和消费者2获取到的消息的数量是相同的一个是奇数一个是偶数。
其实这样是不合理的应该是消费者1要比消费者2获取到的消息多才对。
二、Work模式的“能者多劳”
2.1. 关键配置 2.2. 测试
启动消费者1 启动消费者2 查看管控台消费者是否启动完毕 启动生产者 消息一共发送10条 消费者1比消费者2获取的消息更多。