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后一切正常。库与旧版本不兼容。
我正在尝试在一个队列中创建多个订阅者,以便每条消息只能由其中一个订阅者读取。当我第二次尝试 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后一切正常。库与旧版本不兼容。