gpt4 book ai didi

azure - 如何使用适用于 Golang v0.3.1 的 Azure sdk 让我的消费者监听 Azure 服务总线上的消息?

转载 作者:行者123 更新时间:2023-12-05 04:40:24 24 4
gpt4 key购买 nike

我一直在使用模块 azure-sdk-for-go/sdk/messaging/azservicebus v0.3.1 将我的消费者与 Azure 服务总线连接,但实现的代码仅接收固定数量的消息,然后停止应用程序我想让消费者继续监听队列。按照我的代码:

    client, err := azservicebus.NewClientFromConnectionString("Connection String", nil)

if err != nil {
log.Fatalf("Failed to create Service Bus Client: %s", err.Error())
}

receiver, err := client.NewReceiverForQueue("queue", nil)

if err != nil {
log.Fatalf("Failed to create Consumer: %s", err.Error())
}

messages, err := receiver.ReceiveMessages(context.TODO(), 10, nil)

if err != nil {
log.Fatalf("Failed to receive Messages: %s", err.Error())
}

for _, message := range messages {

body, err := message.Body()

if err != nil {
log.Fatalf("Failed to parse message body: %s", err.Error())
}

fmt.Println("Message --->", string(body))

err = receiver.CompleteMessage(context.TODO(), message)

if err != nil {
log.Fatalf("Failed to complete message: %s", err.Error())
}

fmt.Printf("Received and completed message\n")

}

最佳答案

您已经完成了 99% 的代码 - 正如您所指出的,ReceiveMessages 仅返回您请求的金额。

因此,您只想将逻辑包装在循环中,以便可以连续运行它:

for {
messages, err := receiver.ReceiveMessages(context.TODO(), 10, nil)
if err != nil {
log.Fatalf("Failed to receive Messages: %s", err.Error())
}

for _, message := range messages {
body, err := message.Body()

if err != nil {
log.Fatalf("Failed to parse message body: %s", err.Error())
}

fmt.Println("Message --->", string(body))

err = receiver.CompleteMessage(context.TODO(), message)

if err != nil {
log.Fatalf("Failed to complete message: %s", err.Error())
}
}
}

顺便说一句,0.3.2刚刚发布,它包含一些您会感兴趣的修复,因为它们确实会影响 ReceiveMessages。

关于azure - 如何使用适用于 Golang v0.3.1 的 Azure sdk 让我的消费者监听 Azure 服务总线上的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70280842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com