登录
首页 >  Golang >  Go问答

Nats无法为没有分配到消费者组的消费者创建队列订阅

来源:stackoverflow

时间:2024-02-14 10:00:23 209浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《Nats无法为没有分配到消费者组的消费者创建队列订阅》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我正在尝试在一个队列中创建多个订阅者,以便每条消息只能由其中一个订阅者读取。当我第二次尝试 queuesubscribe 时,出现错误: 无法为没有交付组 的消费者创建队列订阅。

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

这里是订阅者:

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 属性,但没有帮助。


正确答案


由于nats服务器的版本(2.3.6)而出现问题,更新到2.7.2后一切正常。库与旧版本不兼容。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Nats无法为没有分配到消费者组的消费者创建队列订阅》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>