最近使用rocketmq,调试的时候,在ack的时候遇到
Code_INVALID_RECEIPT_HANDLE (40013)
org.apache.rocketmq.proxy.common.ProxyException: receipt handle is expired
错误,搞了很久没明白咋回事,最后发现是一个超时时间配小了,等待超时时间设置的30s,我调试的时间肯定超过了,然后他认为失败,给消费重试了,导致之前的mv消息失效了。https://rocketmq.apache.org/zh/docs/featureBehavior/10consume...
在go里边,接收
Receive(ctx context.Context, maxMessageNum int32, invisibleDuration time.Duration)
开始 invisibleDuration 传的30s,把这个值改成超大30000s,然后再看ack
返回成功了。
但是重接收到消息,到ack中间,如果间隔3分钟,还是会返回
Code_INTERNAL_SERVER_ERROR (50001)
null. NullPointerException. org.apache.rocketmq.proxy.common.ReceiptHandleGroupKey.getChannelId(ReceiptHandleGroupKey.java:34)
这个内部的空指针错误,这可能是他内部把时间过长的消息给置无效了吧。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。