正常队列,客户端消费时误配置了EnableOrdered,但是客户端再将参数改回后,消息还是异常的
Closed this issue · 1 comments
elvizlai commented
最新 release 版 youzan/nsq server(v0.3.7-HA.1.9.4.1) + 最新版 youzan/go-nsq client (go-nsq v1.3.6-HA)
正常队列,客户端消费时误配置了EnableOrdered,但是客户端再将参数改回后,消息还是异常的。
package main
import (
"fmt"
"time"
"github.com/youzan/go-nsq"
)
func main() {
addr := "172.16.0.30:4161"
config := nsq.NewConfig()
config.MaxAttempts = 65535
mgr, err := nsq.NewTopicProducerMgr([]string{"delay_test"}, config)
if err != nil {
panic(err)
}
mgr.ConnectToNSQLookupd(addr)
err = mgr.Publish("delay_test", []byte("hello, "+time.Now().String()))
if err != nil {
panic(err)
}
// topic:delay_test 未开启order, 此处误操作,配置了 EnableOrdered 后续即便参数改回来,该 channel 的行为还是异常的
config.EnableOrdered = true
c, err := nsq.NewConsumer("delay_test", "default", config)
if err != nil {
panic(err)
}
c.AddConcurrentHandlers(nsq.HandlerFunc(func(msg *nsq.Message) error {
fmt.Println(string(msg.Body), msg.Attempts)
msg.RequeueWithoutBackoff(time.Second)
return nil
}), 1)
err = c.ConnectToNSQLookupd(addr)
if err != nil {
panic(err)
}
select {}
}
absolute8511 commented
客户端的channel顺序消费参数只能从非顺序改成顺序, 需要改回非顺序的话, 除了需要客户端改回非顺序外, 还需要给对应的nsqd节点发送http接口:
POST /channel/setorder?order=false