0daypwn
0daypwn
map is not thread safe, so should add RWMutex. The design is too complicated. Maybe there's a better way?
The purpose of these two is the same. but the pc.crCh Map may be read and written concurrently in two places - Subscribe - consumeMessageCurrently it may cause panic. @ShannonDing...
client支持With和Get https://github.com/apache/rocketmq-client-go/blob/da20ee7b0743a08ecf1fc53403f530b74eea2257/primitive/message.go#L151-L159 至于rocketmq-console无法查看这个问题应该提在 https://github.com/apache/rocketmq-dashboard 不过这个项目很久没人维护了
我认为你只是使用了错误的 option https://github.com/apache/rocketmq-client-go/blob/da20ee7b0743a08ecf1fc53403f530b74eea2257/consumer/push_consumer.go#L1399-L1405 WithMaxReconsumeTimes 才是正确的重试次数 https://github.com/apache/rocketmq-client-go/blob/da20ee7b0743a08ecf1fc53403f530b74eea2257/consumer/option.go#L270-L276 @cserwen @sologgfun
https://github.com/apache/rocketmq-client-go/blob/da20ee7b0743a08ecf1fc53403f530b74eea2257/consumer/consumer.go#L296-L306 谁写入channel,谁负责关闭 是个好习惯 在已经有 close(pq.closeChan) 之后,再 close(pq.msgCh) 这个操作完全是多余的,关闭还会导致上述写入的风险。 在 close(pq.closeChan) 之后,只要不 close(pq.msgCh), pq.putMessage 和 pq.getMessage 即使select到 msgCh 也不会有影响。 pq.putMessage 和 pq.getMessage 是msgCh唯二的使用者,之后是一定可以return的,也不存在会阻塞/泄露之类的问题。 因此我认为只去掉 close(pq.msgCh) 这部分即可 @cserwen 另外 consumer/consumer.go 这部分是基类 修改需要考虑...
https://github.com/apache/rocketmq-client-go/blob/da20ee7b0743a08ecf1fc53403f530b74eea2257/consumer/consumer.go#L296-L306 谁写入channel,谁负责关闭 是个好习惯 在已经有 close(pq.closeChan) 之后,再 close(pq.msgCh) 这个操作完全是多余的,关闭还会导致上述写入的风险。 在 close(pq.closeChan) 之后,只要不 close(pq.msgCh), pq.putMessage 和 pq.getMessage 即使select到 msgCh 也不会有影响。 pq.putMessage 和 pq.getMessage 是msgCh唯二的使用者,之后是一定可以return的,也不存在会阻塞/泄露之类的问题。 因此我认为只去掉 close(pq.msgCh) 这部分即可 @cserwen 另外 consumer/consumer.go 这部分是基类 修改需要考虑...
see #927 #928, you can try it