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

各类微网站建设短信广告投放软件

各类微网站建设,短信广告投放软件,网站别人给我做的备案 我能更改吗,企业网站怎样做外链方法一、背景 在对阿里云成本分析的时候,发现SLS日志的费用暴增,由平均每月的2000元突然增至6000多。 查看日志的费用明细,按应收金额降序得知,原来是某个java服务打印的jvm日志暴增。 再已进入SLS查看打印的日志量,更…

一、背景

在对阿里云成本分析的时候,发现SLS日志的费用暴增,由平均每月的2000元突然增至6000多。
在这里插入图片描述
查看日志的费用明细,按应收金额降序得知,原来是某个java服务打印的jvm日志暴增。
在这里插入图片描述

再已进入SLS查看打印的日志量,更是惊呆了。。。

在这里插入图片描述
不仅是打印的数量多,打印的时间点是遍布整天24小时。

也就是说,该日志是整天整夜地打印,像是进入了死循环。

围绕着这个问题,尝试让AI给我回答原因是什么。

可能是我提问水平不够,未能准确得出答案,在排查这个问题的过程中,代码是一分钟就定位出。

但是,围绕着mq消费者是如何消费消息的原理,总是不甚明了。

于是,我整理了两篇文章,希望能把个问题说明清楚,最后也会对此作出总结。

二、报错日志

[ntContainer#2-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.
org.springframework.amqp.rabbit.support.ListenerExecutionFailedException

详细错误:

[ntContainer#2-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.org.springframework.amqp.rabbit.support.ListenerExecutionFailedException: Listener method 'public void com.xxx.interfaces.listener.XxxQueueListener.xxx(java.lang.String)' threw exceptionat org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:227)at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandlerAndProcessResult(MessagingMessageListenerAdapter.java:147)at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:132)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1579)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1498)at sun.reflect.GeneratedMethodAccessor174.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)at brave.spring.rabbit.TracingRabbitListenerAdvice.invoke(TracingRabbitListenerAdvice.java:101)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)at org.springframework.amqp.rabbit.listener.$Proxy360.invokeListener(Unknown Source)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1486)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:1477)at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1421)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:958)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:908)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1600(SimpleMessageListenerContainer.java:81)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.mainLoop(SimpleMessageListenerContainer.java:1279)at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1185)at java.lang.Thread.run(Thread.java:748)Caused by: com.xxx.common.exception.ResponseException: 资源不存在或已被删除at sun.reflect.GeneratedMethodAccessor175.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:171)at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:120)at org.springframework.amqp.rabbit.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:53)at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:219)... 23 common frames omitted

代码定位:

消息监听者在消费消息的时候,业务判断的时候,对于非法的数据进行抛异常ResponseException, 提示资源不存在或已被删除。

要知道消息在首次消费后,下一步会做什么,就必须得看看程序的mq配置项了。

三、rabbitmq配置项

在这里插入图片描述

spring:rabbitmq:host: xxxusername: xxxxport: 5672publisher-confirms: truevirtual-host: xxxxx

这里既没有配置acknowledge-mode确认模式,也没有配置retry重试策略。

也就是说,一个mq消息状态要从Ready状态转入完成状态,前提是消息监听者正常执行。

像本例中,由于抛异常,会导致该mq消息的状态从Ready状态转入Unacked状态。

四、rabbitmq监控

1、投递mq消息

在这里插入图片描述

此时,消息队列中有一个消息,其状态是Ready。

2、开始监听mq消息

java程序由于抛出异常,不断打印上述错误日志。

而此时的mq消息状态则是:

在这里插入图片描述

消息的状态已变成了Unacked,队列的消息总数也才1个,但是消息投递速度却停不下来。

究其原因,是mq消息进入投递的死循环,在消费的时候抛异常,导致未能消费成功消息。

3、停止监听mq消息

当java应用停止时,mq消息的状态就又从Unacked回到了Ready状态。

在这里插入图片描述
此时消息队列的投递速度又重归于零了。

因为没有了消息监听者。

下一篇,我们将进一步分析该问题,并总结一下mq消息消费的整个过程,以及我们应该如何合理配置。

http://www.dtcms.com/wzjs/164459.html

相关文章:

  • 建站平台绑定域名制作网页模板
  • 企业网站建设标准软文时光发稿平台
  • 类似酷家乐做庭院的网站外贸推广平台哪个好
  • 广州做网站海珠信科今日头条新闻大事
  • 英文企业网站源码营销网站建设推广
  • 怎么看网站有没有做地图朋友圈的广告推广怎么弄
  • 展会网站制作想找搜索引擎优化
  • 专做律所网站优化大师app下载
  • 基于个性化推荐的电商网站设计与实现seo优化主要工作内容
  • 广17网站一起做网店优化
  • 建设银行大连招聘网站百度快速收录技术
  • 旅游网站设计规划书百度识图网页入口
  • 中小型网站建设策划站长工具seo综合查询是什么
  • 郑州网站建设公司咨询重庆seo技术分享
  • 平台官网入口电商关键词排名优化怎么做?
  • 有人知道做网站吗百度ai助手入口
  • 专业网站建设推荐东莞seo优化方案
  • 网站建设公司天成网站快速建站
  • 做网站服务器配置怎么选公关公司的主要业务
  • 初二信息课网站怎么做常用的营销策略
  • 从零开始做网站内容运营上海网络优化seo
  • 建设摩托车110报价大全深圳seo优化公司搜索引擎优化方案
  • 手机网站设计推荐查看关键词被搜索排名的软件
  • 做一个介绍网站多少钱搜索引擎的使用方法和技巧
  • 网站建设整改实施方案广告公司名字
  • 网站恶意镜像网络营销服务的内容
  • 网站域名销售网络营销创意案例
  • h5网站显示的图标怎么做的企业网站建设方案
  • 网站建设 医院热门关键词
  • 大连网站备案优化网站的公司哪家好