【问题标题】:Nats cannot create a queue subscription for a consumer without a deliver groupNats 无法为没有交付组的消费者创建队列订阅
【发布时间】:2022-02-15 21:27:06
【问题描述】:

我正在尝试在一个队列中创建多个订阅者,因此每条消息只能由其中一个读取。当我第二次尝试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 属性,但没有帮助。

【问题讨论】:

    标签: go jetstream nats.io


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 2016-03-22
      • 2021-03-16
      • 2017-03-03
      相关资源
      最近更新 更多