我希望有一个标准函数来持续侦听/接收来自Azure服务总线队列的消息。我希望有一种相当有效的方法来处理订阅/主题上没有消息的情况-而不是不断地在for循环中锤击请求。
目前,ReceiveMessages()函数在接收选项方面与其他语言的SDK相比相当有限。没有MaxWaitTime,因此要处理没有接收到消息的情况,您只需在这里建议的某种形式的循环中不断重试-How do I keep my consumer listening the messages on Azure Sevice Bus using Azure sdk for Golang v0.3.1?
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())
}
字符串
假设不断地请求消息(在可能长时间没有消息的情况下)不是最有效的倾听方式吗?
我已经考虑过实现某种形式的静态/动态等待,但是是否还有更多的“开箱即用”和/或最佳实践?
1条答案
按热度按时间vql8enpb1#
go get github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus
。字符串
若要持续从Azure服务总线订阅/队列接收消息:
型
x1c 0d1x的数据
的