当前位置: 首页 > news >正文

建设网站的总结wordpress 缓存下不计数

建设网站的总结,wordpress 缓存下不计数,wordpress 翻页效果,四川seo推广方案文章目录 1. 场景模拟2. 消息发送3. 消息接收4. 测试5. 能者多劳6. 总结 当你在处理消息时,可能会遇到这样的问题:消息的生产速度远远大于消费速度,导致消息堆积。这时候,Work Queues(工作队列)模型就能派上…

文章目录

        • 1. 场景模拟
        • 2. 消息发送
        • 3. 消息接收
        • 4. 测试
        • 5. 能者多劳
        • 6. 总结

当你在处理消息时,可能会遇到这样的问题:消息的生产速度远远大于消费速度,导致消息堆积。这时候,Work Queues(工作队列)模型就能派上用场。简单来说,Work Queues 让多个消费者绑定到一个队列,共同消费队列中的消息,从而加快消息处理速度。

1. 场景模拟

我们来模拟一个这样的场景。首先,在控制台创建一个名为 work.queue 的队列。

2. 消息发送

我们通过循环发送大量消息来模拟消息堆积的现象。在 publisher 服务中的 SpringAmqpTest 类中添加一个测试方法:

@Test
public void testWorkQueue() throws InterruptedException {// 队列名称String queueName = "simple.queue";// 消息String message = "hello, message_";for (int i = 0; i < 50; i++) {// 发送消息,每20毫秒发送一次,相当于每秒发送50条消息rabbitTemplate.convertAndSend(queueName, message + i);Thread.sleep(20);}
}
3. 消息接收

为了模拟多个消费者绑定同一个队列,我们在 consumer 服务的 SpringRabbitListener 中添加两个新的方法:

@RabbitListener(queues = "work.queue")
public void listenWorkQueue1(String msg) throws InterruptedException {System.out.println("消费者1接收到消息:【" + msg + "】" + LocalTime.now());Thread.sleep(20);
}@RabbitListener(queues = "work.queue")
public void listenWorkQueue2(String msg) throws InterruptedException {System.err.println("消费者2........接收到消息:【" + msg + "】" + LocalTime.now());Thread.sleep(200);
}

注意到这两个消费者都设置了 Thread.sleep 来模拟任务耗时:

  • 消费者1:Thread.sleep(20),相当于每秒处理50个消息。
  • 消费者2:Thread.sleep(200),相当于每秒处理5个消息。
4. 测试

启动 ConsumerApplication 后,执行 publisher 服务中编写的发送测试方法 testWorkQueue。结果如下:

消费者1接收到消息:【hello, message_0】21:06:00.869555300
消费者2........接收到消息:【hello, message_1】21:06:00.884518
...
消费者1接收到消息:【hello, message_48】21:06:01.920702500
消费者2........接收到消息:【hello, message_49】21:06:05.723106700

可以看到,消费者1和消费者2各自消费了25条消息:

  • 消费者1快速完成了任务。
  • 消费者2则缓慢处理任务。

消息是平均分配给每个消费者的,并没有考虑到各个消费者的处理能力,导致一个消费者空闲,另一个忙碌。这显然是低效的。

5. 能者多劳

spring 中,可以通过简单配置解决这个问题。修改 consumer 服务的 application.yml 文件,添加如下配置:

spring:rabbitmq:listener:simple:prefetch: 1 # 每次只能获取一条消息,处理完成才能获取下一个消息

再次测试,结果如下:

消费者1接收到消息:【hello, message_0】21:12:51.659664200
消费者2........接收到消息:【hello, message_1】21:12:51.680610
...
消费者2........接收到消息:【hello, message_49】21:12:52.746299900

这次,消费者1处理了更多的消息,消费者2则处理了较少的消息,总耗时在1秒左右,大大提升了效率。这充分利用了每一个消费者的处理能力,有效避免了消息积压问题。

6. 总结

Work Queues 模型的使用要点:

  • 多个消费者绑定到一个队列,同一条消息只会被一个消费者处理。
  • 通过设置 prefetch 来控制消费者预取的消息数量。

这样可以更高效地利用资源,提高消息处理速度。

http://www.yayakq.cn/news/717965/

相关文章:

  • 广州市建设厅网站安徽建设教育协会网站
  • 学做网站要编程优化seo培训班
  • 顺德网站建设公司seo优化主要工作内容
  • 深圳市网站建设外包公司目标客户精准营销
  • 国家级示范校建设专题网站找seo外包公司需要注意什么
  • 注册域名之后如何建设网站网站建设推广市场
  • 网站 风格最常用的专业网页设计工具
  • 个人网站logo图片贵州网络推广公司
  • 胶南做网站百度信息流广告推广
  • 做网站被骗设计一个好的wordpress主题的10个准则_
  • 体育直播网站开发数据源获取北京国互网网站建设价格
  • 哪里有网站建设的企业不会写代码怎样做网站
  • 微网站首页模板学做烤制食品的网站
  • 读书网站排名WordPress的简约博客主题
  • 微网站开发视频网站建设是什么专业啊
  • 山西省网站建设wordpress api 缓存
  • 汕头网站搭建多少钱哈尔滨网站优化
  • 酒店类网站建设开发书织梦制作网站地图
  • 天津手机版建站系统怎么搭建自己的网站平台
  • 如何备案网站wordpress网站换字体
  • 公司网站自己可做吗网站建设公司电话销售客源
  • wordpress搭建h5seo兼职
  • 网站建设 东阿阿胶wordpress中文公司模板
  • wordpress个人网站模板wordpress 图片id
  • 怎样建设自己的视频网站首页为什么现在建设银行要下载网站激活
  • 网站设计公司模板下载淮北专业网站建设
  • 网站建设学费多少钱网站建设总体规划包括哪些方面
  • 安丘网站建设制作彭州做网站的公司
  • 网站引流推广怎么做北京网站建设itcask
  • 佛山网站建设找哪家html个人主页