Azure 服务总线 - 订阅 - 如何在 Web API 的输出中显示收到的消息



我正在使用Azure服务总线在两个.Net核心Web API服务之间传递消息。我能够成功地在Azure中设置主题/订阅,也能够使用Web API post方法将消息发送到主题。当我尝试使用订阅阅读邮件时,我被卡住了。我已经编写了一个API方法,该方法正在尝试读取消息,它还应该在从主题中读取消息后显示消息。当我使用.Net核心控制台应用程序时,我可以读取消息,但当使用API时,消息不会显示为API输出。

有没有线索表明我遗漏了什么?提前谢谢。

代码如下:

公共异步任务获取订阅(({

subscriptionClient = new SubscriptionClient(ServiceBusConnectionString, TopicName, SubscriptionName);
RegisterOnMessageHandlerAndReceiveMessages();
await subscriptionClient.CloseAsync();
}

public void RegisterOnMessageHandlerAndReceiveMessages(({

var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler);
subscriptionClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions);
}

private异步任务进程MessagesAsync(消息消息,CancellationToken令牌({
var messageBody=编码.UTF8.GetString(message.Body(;

var serviceBusMessage = JsonConvert.DeserializeObject<ServiceBusMessage>(messageBody);
}

您混合了两种范式。处理程序方法在后台运行,并在有可用消息时将单个消息接收到回调中。您可以通过提高回调的并发性来扩展它。这对您没有帮助,因为您的Web API需要返回响应,并且控制器/操作需要请求时的消息,而不是调用回调(服务总线处理程序代码(时的消息。

您需要使用MessageReceiver。对于消息接收器,您不需要设置回调。调用将导致接收到一条(或多条,如果需要(消息,或者如果没有要接收的消息,则导致null

最新更新