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

flash 网站 收费张掖网站建设培训班

flash 网站 收费,张掖网站建设培训班,wordpress 多级菜单插件,视频直播app开发公司目录 减少发送mq的消息体内容 增加消费者数量 批量消费消息 临时队列转移 监控和预警机制 分阶段实施 最后还有一个方法就是开启队列的懒加载 这篇文章总结一下自己知道的解决消息积压得方法。 减少发送mq的消息体内容 像我们没有必要知道一个的中间状态#xff0c;只需… 目录 减少发送mq的消息体内容 增加消费者数量 批量消费消息 临时队列转移 监控和预警机制 分阶段实施 最后还有一个方法就是开启队列的懒加载 这篇文章总结一下自己知道的解决消息积压得方法。 减少发送mq的消息体内容 像我们没有必要知道一个的中间状态只需知道一个最终状态就可以了。 发送的消息体只用包含id和状态等关键信息不用发送一个完整的对象内容。 消费者收到消息之后通过id调用原服务再将完整的消息对象内容查询出来即可最后再进行消费处理。 增加消费者数量 采用动态增加消费者的数量 Configuration public class RabbitMQConfig {Beanpublic SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {SimpleRabbitListenerContainerFactory factory new SimpleRabbitListenerContainerFactory();factory.setConnectionFactory(connectionFactory);// 设置并发消费者数量factory.setConcurrentConsumers(5); // 初始消费者数量factory.setMaxConcurrentConsumers(20); // 最大消费者数量// 动态调整消费者数量factory.setConsumerTagStrategy(queue - consumer- UUID.randomUUID());return factory;} } Service public class ConsumerManagerService {Autowiredprivate RabbitListenerEndpointRegistry registry;public void adjustConsumerCount(String queueName, int count) {MessageListenerContainer container registry.getListenerContainer(queueName);if (container instanceof SimpleMessageListenerContainer) {SimpleMessageListenerContainer simpleContainer (SimpleMessageListenerContainer) container;simpleContainer.setConcurrentConsumers(count);}} } 批量消费消息 Service public class BatchMessageConsumer {RabbitListener(queues myQueue, containerFactory batchFactory)public void processBatch(ListMessage messages, Channel channel) {try {// 批量处理消息ListMessageDTO dtos messages.stream().map(this::convertToDTO).collect(Collectors.toList());// 批量保存到数据库batchSaveToDatabase(dtos);// 获取最后一条消息的deliveryTaglong lastDeliveryTag messages.get(messages.size() - 1).getMessageProperties().getDeliveryTag();// 批量确认channel.basicAck(lastDeliveryTag, true);} catch (Exception e) {// 批量拒绝handleBatchError(messages, channel);}} }// 配置批量消费 Configuration public class BatchConsumerConfig {Beanpublic SimpleRabbitListenerContainerFactory batchFactory(ConnectionFactory connectionFactory) {SimpleRabbitListenerContainerFactory factory new SimpleRabbitListenerContainerFactory();factory.setConnectionFactory(connectionFactory);// 启用批量消费factory.setBatchListener(true);// 批量大小factory.setBatchSize(100);// 批量超时时间factory.setReceiveTimeout(1000L);return factory;} } 临时队列转移 Service public class MessageTransferService {Autowiredprivate RabbitTemplate rabbitTemplate;public void transferMessages(String sourceQueue, String tempQueue, int batchSize) {while (true) {// 从源队列批量获取消息ListMessage messages new ArrayList();for (int i 0; i batchSize; i) {Message message rabbitTemplate.receive(sourceQueue);if (message null) break;messages.add(message);}if (messages.isEmpty()) break;// 转移到临时队列messages.forEach(msg - rabbitTemplate.send(tempQueue, msg));}} }// 临时队列的消费者 Component public class TempQueueConsumer {RabbitListener(queues #{tempQueue.name})public void processMessage(Message message) {// 使用更高效的处理方式fastProcessMessage(message);}Beanpublic Queue tempQueue() {return new Queue(temp-queue- UUID.randomUUID(), false, false, true);} } 监控和预警机制 Service Slf4j public class QueueMonitorService {Autowiredprivate RabbitTemplate rabbitTemplate;Scheduled(fixedRate 60000) // 每分钟执行一次public void monitorQueueSize() {String queueName myQueue;// 获取队列信息Properties properties rabbitTemplate.execute(channel - channel.queueDeclarePassive(queueName));// 获取消息数量int messageCount properties.getMessageCount();// 检查消息堆积if (messageCount threshold) {// 发送告警sendAlert(queueName, messageCount);// 动态调整消费者adjustConsumers(queueName, messageCount);}}private void adjustConsumers(String queueName, int messageCount) {// 根据消息数量动态调整消费者数量int newConsumerCount calculateConsumerCount(messageCount);consumerManagerService.adjustConsumerCount(queueName, newConsumerCount);} } 分阶段实施 Service public class MessageHandlingStrategy {public void handleMessageBacklog() {// 1. 首先增加消费者数量adjustConsumerCount();// 2. 如果仍然堆积启用批量处理if (isStillBacklogged()) {enableBatchProcessing();}// 3. 如果问题持续使用临时队列if (isEmergency()) {transferToTemporaryQueue();}} } 最后还有一个方法就是开启队列的懒加载
http://www.hkea.cn/news/14286588/

相关文章:

  • 一款教育培训咨询有限公司网站源码世界足球世界排名
  • 关于建设网站的申请报告代理网络游戏服务平台
  • 一个网站做两个优化可以做吗跨境电商综合服务平台有哪些
  • 谁做网站收录模板网站优
  • 酒店品牌设计网站建设中国建设银行金华分行网站
  • 怎样制作一个自己的网站住房和城乡建设部政务服务门户官网
  • 如何在ftp做网站网页制作与网站建设pdf
  • 企业网站建设教学湖南省郴州市有几个县
  • 房地产开发网站建设网站定制开发成本
  • wordpress快速仿站教程竞价推广代运营服务
  • 简单网站建设哪家便宜万网如何建设网站
  • 自己做书画交易网站google首页
  • 成立公司要多少钱厦门seo推广公司
  • 找网络公司做网站网站建设费用要摊销嘛
  • 河南网站建站系统平台做网站建设费用
  • wordpress 调用api郑州网站建设seo优化
  • 如何选择邯郸做网站wordpress本地搭建网站a
  • 企业品牌类网站建站cms源码
  • 石家庄网站建设排名工商企业信息查询网站
  • 济源网站建设公司怎么把做的网站发到网上去
  • 想做网站运营专员广州上宏网站建设
  • 怎么做秒赞网站陈列设计师培训
  • 自建电商网站有哪些广州安卓程序开发
  • 襄阳谷城网站开发WordPress 自动缩律图
  • 网站合作建设合同买链接做网站 利润高吗
  • 网站自动化采集如何检测wordpress后台慢的原因
  • 《关于加快网站群建设的通知》高端网站建设公司好吗
  • 网站建设与规划论文营销渠道策划方案
  • 网站建设概软件开发文档规范
  • wordpress设置显示为英文网站seo如何做好优化