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

Nats cannot create a queue subscription for a consumer without a deliver group

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

问题是因为nats server(2.3.6)的版本问题,更新到2.7.2后一切正常。库与旧版本不兼容。