问题一:RocketMQ在生产环境中,会偶发(一两个月发生一次)rocketmq消息发送超时问题?
RocketMQ在生产环境中,会偶发(一两个月发生一次)rocketmq消息发送超时问题,客户端日志报sendDefaultImpl call timeout,此问题一直持续,直到重启客户端应用才能恢复正常。
问题分析线索:
(1)问题发生时发送超时的消息都是发往某一个特定的broker
(2)从网络抓包看,发生问题的时候,从发生问题的时间点开始,只有从客户端往这个特定的broker发送的数据包,broker没有数据包返回,直到客户端应用重启才恢复正常。
(3)从broker的监控看,发生问题的时间段里面,cpu的使用率会提高,但幅度不大,本来cpu idle稳定在98%,但是发生问题的时候,cpu idle跳到92%左右,客户端重启后cpu idle回到98%左右并保持稳定。
(4) broker的log里没有明显的报错信息
请问各位有没有碰到过类似的问题?有什么分析的思路,请不吝赐教。
参考答案:
建议
- 先明确客户端超时错误的的 response code和remark是什么
- 根据这个去排查broker的日志。 一般broker的cpu不会很高, 排查点可以放到磁盘读写, slave同步(如果有的话)
关于本问题的更多回答可点击进行查看:
https://developer.aliyun.com/ask/606319
问题二:RocketMQ是否使用这个API更加好点,避免无效的失败重试?
RocketMQ是否使用这个API更加好点,避免无效的失败重试?
参考答案:
这个数据来自刚刚那个定时任务
关于本问题的更多回答可点击进行查看:
https://developer.aliyun.com/ask/606300
问题三:RocketMQ本地安装mq报这个错为什么,我设置了自动创建?
RocketMQ本地安装mq报这个错为什么,我设置了自动创建?Caused by: org.apache.rocketmq.client.java.exception.NotFoundException: [request-id=92358021-2df5-4438-858e-8a5f2ee45f3b, response-code=40402] CODE: 17 DESC: No topic route info in name server for the topic: smsChannelTopic
参考答案:
在RocketMQ中,当您尝试发送或消费消息时,如果遇到"No topic route info in name server for the topic"错误,意味着RocketMQ NameServer中未能找到与您尝试发送或消费的Topic相关的路由信息。这个错误的原因通常有以下几点:
- Topic未在任何Broker上创建:
- 即使您已经在RocketMQ配置中设置了允许自动创建Topic,但在某些情况下,Broker可能由于网络问题、配置不当或其他原因,没有成功创建Topic。
- 您需要确保在至少一个Broker节点上手动创建该Topic(
smsChannelTopic
),或者检查Broker配置是否正确启用了自动创建Topic的功能。
- NameServer未连接或同步不完整:
- 检查NameServer是否运行正常并且与Broker集群保持良好的网络连接和心跳同步。
- 确保所有的Broker都已经成功注册到NameServer,并且它们的Topic路由信息已经被NameServer正确更新。
- 客户端配置问题:
- 检查客户端应用程序是否指向了正确的NameServer地址。
- 如果您刚启动了服务不久,可能需要等待一段时间,确保NameServer完成了与Broker的初始化同步。
- 环境隔离问题:
- 如果在开发环境下允许自动创建Topic而在生产环境禁用,那么请确保在对应的环境中采取相应的配置措施。
- 服务重启或配置变更后未生效:
- 如果最近有进行过重启、配置变更或扩容缩容操作,有可能是Broker和NameServer之间的信息同步还没有完成,等待一会儿再试或手动触发Broker与NameServer的同步。
为了彻底解决问题,请依次排查以上可能性,并根据实际情况采取相应措施。在排查完毕后,可以尝试重新发送消息或启动消费者,看是否仍存在问题。如果问题依旧,建议查看RocketMQ的日志文件,以获取更详细的错误信息和堆栈跟踪。
关于本问题的更多回答可点击进行查看:
https://developer.aliyun.com/ask/606297
问题四:RocketMQ中java实时读取Nacos里的配置,请问有什么解决办法吗?
RocketMQ中java实时读取Nacos里的配置,如果在切面里使用,会导致通知执行两次,原因是@Aspect和@RefreshScope 生成Bean方式不同。
请问有什么解决办法吗?我搜到的都是让去掉@RefreshScope 注解,但是我想保证Nacos配置实时读取?
参考答案:
这种建议自己管理bean, 不要托管给spring
关于本问题的更多回答可点击进行查看:
https://developer.aliyun.com/ask/606294
问题五:RocketMQ怎么解决 具体就是项目启动这个流程文件没有加载到数据库里 ?
RocketMQ怎么解决 具体就是项目启动这个流程文件没有加载到数据库里 然后执行时候就报了这个错误?
网上查找资料 都没有相关的解决方法
参考答案:
你的 processes 是 processe ss , 检查一下
你的 flowable 能正常访问到数据库吗?
你是用的 ExecutionListener 加载的 还是 用 CommandLineRunner 接口类 || ApplicationRunner 加载的?
@PostConstruct
public void processInit() {
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); deploymentBuilder.addClasspathResource("processes/vacationRequest.bpmn20.xml"); // 可选设置部署名称和其它元数据 deploymentBuilder.name("vacationRequest").category("Processes"); Deployment deployment = deploymentBuilder.deploy(); }
关于本问题的更多回答可点击进行查看: