Nats 无法为没有交付组的消费者创建队列订阅

我正在尝试在一个队列中创建多个订阅者,因此每条消息只能由其中一个读取。当我第二次尝试QueueSubscribe时出现错误:cannot create a queue subscription for a consumer without a deliver group.


我尝试在一个应用程序中创建两个订阅者并尝试运行两个实例,这是同样的错误。


以下是订阅者:


s1, err = js.QueueSubscribe(

        "KEYS.group",

        "queue",

        func(m *nats.Msg) {

            fmt.Printf("1: %s\n", m.Data)

        },

    )


s2, err = js.QueueSubscribe(

        "KEYS.group",

        "queue",

        func(m *nats.Msg) {

            fmt.Printf("2: %s\n", m.Data)

        },

    )

和出版商:


_, err := js.AddStream(&nats.StreamConfig{

        Name:     "KEYS",

        Subjects: []string{"KEYS.group"},

        Retention: nats.WorkQueuePolicy,  // tried with default policy if it may be relevant

    })


for i := 0; i < 20; i++ {

        msg := fmt.Sprintf(`{"key": "%d"}`, i)


        if _, err := js.Publish("KEYS.group", []byte(msg)); err != nil {

            print(err)

        }

    }

我也尝试添加Durable属性,但没有帮助。


www说
浏览 72回答 1
1回答

宝慕林4294392

由于 nats 服务器(2.3.6)的版本而出现问题,更新到 2.7.2 后一切正常。库与旧版本不兼容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go