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

网站建设大忌青岛网站建设开发

网站建设大忌,青岛网站建设开发,注册公司怎么注册啊,百度站长网站验证最近在写RabbitMQ的消费者,因为业务需求,希望失败后重试一定次数,超过之后就不处理了,或者放入死信队列。我这里就达到重试次数后就不处理了。本来以为很简单的,问了kimi,按它的方法配置之后,发…

最近在写RabbitMQ的消费者,因为业务需求,希望失败后重试一定次数,超过之后就不处理了,或者放入死信队列。我这里就达到重试次数后就不处理了。本来以为很简单的,问了kimi,按它的方法配置之后,发现报错之后一直重复消费,进入了死循环。

下面是kimi给的“最佳实践”的示例代码:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar;
import org.springframework.amqp.rabbit.listener.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMQConfig {@Beanpublic SimpleRabbitListenerContainerFactory myFactory(ConnectionFactory connectionFactory) {SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);return factory;}
}import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class RabbitMQConsumer {@RabbitListener(queues = "your-queue-name", containerFactory = "myFactory")public void receiveMessage(final Message message, com.rabbitmq.client.Channel channel) {// 消息处理逻辑try {String payload = new String(message.getBody());System.out.println("Received message: " + payload);// 业务逻辑处理// ...// 手动确认消息channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);} catch (Exception e) {System.out.println("Error processing message: " + e.getMessage());try {// 拒绝消息并重新入队channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);} catch (Exception ex) {// 如果消息拒绝失败,则关闭通道channel.close();}}}
}

问题出在哪里呢?

看起来是很完美的,但是......,还是有漏洞:

这样写是有问题的,会导致失败后消息重新入队,应该是因为重新计算重试次数,如果一直失败,就一直重试,一直清空,那永远不能达到最大次数,导致死循环......

所以,这个地方正确的处理方式是抛异常,

直接throw 一个异常即可。这样就能正确重试了。

这个过程参考了这个博文:rabbitmq消费(失败)重试3次(多次) - 幂次方 - 博客园

总结教训:AI不是万能的,如果按AI的方案得不到结果,有可能是它出错了,毕竟它的方案是没有经过实践检验的。这个时候就会发现原始资料的重要性了。博客还是有它存在的价值的。

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

相关文章:

  • gta5买办公室 网站正在建设网站建设联雅
  • 做图素材网站盐城手机网站建设公司
  • 南昌网站小程序开发jsp网站 值班
  • 恩施做网站多少钱互联网公司有哪些
  • 网络做翻译的网站网站系统维护一个月正常吗
  • 网站建设 找vx cp5173佛山响应式网站开发
  • 昆明网站建设咨询wordpress目录404
  • 国外 网站 模板免费查询企业信息的软件
  • 优秀排版设计网站线上小程序制作
  • 淘宝可以在哪些网站上面打做推广企业网络拓扑图及配置
  • 室内设计效果图素材网站秦皇岛庆云网站建设
  • 网站建设任务分解wordpress如何修改视频上传大小
  • 做实验室信息的网站php开发手机端网站开发
  • 建筑做网站广告公司有什么业务
  • 新网站要多久收录许昌购物网站开发设计
  • 自字网站建设教程上海网络推广专员招聘
  • 吉林省建设厅网站杨学武wordpress下载的主题怎么启动
  • 页面在线设计网站泉企业网站建设
  • vs2019可以做网站吗网站开发需要哪些人才
  • 怎样做网站管理电子商务网站推广实训心得
  • 产品宣传网站的作用网络服务器搭建与配置
  • pc端和手机端网站建设有什么做ppt的网站吗
  • 长沙网站seo推广公司哪家好做seo哪些网站会好点
  • 斐讯路由器做网站映射某网站突然不能浏览了
  • 百度建站系统佛山哪里有网站开发?
  • 好的网站模板新闻稿营销
  • 建站之星网站空间根目录电商商城开发
  • 文登区住房和城乡建设局网站wordpress添加热门文章
  • flash网站建设公司企业网站开发需求
  • 网站建设 APP网站方案策划书