开发者社区 > 云原生 > 云消息队列 > 正文

Apache RocketMQ 的官网有如下介绍, 但是在proxy请求的情况下 发现两者性能差别?

Apache RocketMQ 的官网有如下介绍, 但是在proxy请求的情况下 发现两者性能差别并不大 FlushDiskType SYNC_FLUSH(同步刷新)相比于ASYNC_FLUSH(异步处理)会损失很多性能,但是也更可靠,所以需要根据实际的业务场景做好权衡。这个是针对中间件自身的性能而言,在proxy代理请求的时候实际根据proxy的性能来确定,org.apache.rocketmq.client.java.exception.badrequestexception: [request-id=fedcc908-76bd-44b9-a7df-84822362db85, response-code=40013] INVALID_RECEIPT_HANDLEat org.apache.rocketmq.client.java.exception.StatusChecker.check(StatusChecker.java:63) ~[rocketmq-client-java-5.0.4.jar:?]at%20org.apache.rocketmq.client.java.impl.consumer.SimpleConsumerImpl.lambda$ack0$2(SimpleConsumerImpl.java:247)%20~[rocketmq-client-java-5.0.4.jar:?]at%20org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:221)%20~[rocketmq-client-java-5.0.4.jar:?]at%20org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:208)%20~[rocketmq-client-java-5.0.4.jar:?]at%20org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:122)%20~[rocketmq-client-java-5.0.4.jar:?]at%20java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)%20~[?:1.8.0_362]at%20java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)%20~[?:1.8.0_362]at%20java.lang.Thread.run(Thread.java:750)%20~[?:1.8.0_362]有人消费消息的时候遇到过这个问题吧

展开
收起
真的很搞笑 2023-05-23 19:57:36 406 0
2 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    这个异常是RocketMQ的客户端Java API抛出的,通常是消费者在调用ack方法时出现了错误,比如传递了一个无效的消息句柄(Receipt Handle)。根据异常信息可以看出,出现了INVALID_RECEIPT_HANDLE异常,说明传递的消息句柄无效,这个问题可能与消费者的消费逻辑有关,建议检查消费者的代码逻辑,尤其是在处理消息时是否正确地将消息句柄传递给了ack方法。

    另外,在RocketMQ中,消费者消费消息的过程中,需要定期确认消息状态,否则消息将一直处于未确认状态,这会导致消费者无法再次消费该消息,也会占用服务器的资源。因此,建议做好消息状态的处理,保证及时确认消息状态并清理不必要的未确认消息。

    至于性能方面的问题,如果proxy的性能较差,可能会导致性能瓶颈,建议使用高性能的proxy或者对proxy进行优化,以提高性能和稳定性。同时,也可以根据实际业务场景的需要选择合适的FlushDiskType。

    2023-05-23 23:07:39
    赞同 展开评论 打赏
  • 应该时ack的时候, 句柄过期了,此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-05-23 20:07:37
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    行业实践:RocketMQ 业务集成典型行业应用和实践 立即下载
    技术揭秘:RocketMQ 5.0 云原生架构升级之路 立即下载
    RocketMQ Summit 2022 开源生态发展 立即下载

    相关镜像