0

我正在使用 Azure 服务总线在两个 .Net 核心 Web API 服务之间传递消息。我成功地能够在 Azure 中设置主题/订阅,并且还能够使用 Web API 发布方法将消息发送到主题。当我尝试使用订阅阅读消息时,我被卡住了。我编写了一个 API 方法,它试图读取消息,它还应该在从主题读取消息后显示消息。当我使用 .Net core Console APP 时,我能够阅读消息,但是在使用 API 时,消息不会显示为 API 输出。

关于我缺少什么的任何线索?提前致谢。

代码如下:

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

            subscriptionClient = new SubscriptionClient(ServiceBusConnectionString, TopicName, SubscriptionName);

            RegisterOnMessageHandlerAndReceiveMessages();
            await subscriptionClient.CloseAsync();
     }

公共无效RegisterOnMessageHandlerAndReceiveMessages(){

            var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler);

            subscriptionClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions);

    }

私有异步任务 ProcessMessagesAsync(消息消息,CancellationToken 令牌){
var messageBody = Encoding.UTF8.GetString(message.Body);

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

    }
4

1 回答 1

0

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

你需要使用MessageReceiver. 使用消息接收器,您无需设置回调。调用将导致收到一条(或多条,如果需要)消息,或者null没有消息要接收。

于 2020-04-17T15:57:23.003 回答