当前位置: 首页 > 知识库问答 >
问题:

ProcessMessagesAsync方法未在Azure服务总线订阅中激发

罗凯
2023-03-14
    public async Task GetMessageFromSubscription()
        {

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

                RegisterOnMessageHandlerAndReceiveMessages();
                //  Console.Read();  ------- Without this line 

                await subscriptionClient.CloseAsync();
           }

 public void RegisterOnMessageHandlerAndReceiveMessages()
        {
            var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler);
            subscriptionClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions);
         }


        private async Task ProcessMessagesAsync(Message message, CancellationToken token)
        {
               var messageBody = Encoding.UTF8.GetString(message.Body);
                var serviceBusMessage = JsonConvert.DeserializeObject<WorkIntakeItem>(messageBody);
                await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);

         }

共有1个答案

冯旭
2023-03-14

它是一个循环,随着进程的运行而运行。当进程结束时,处理程序将终止。

如果您有一个持续的消息流,处理程序(也称为消息泵)是一个合适的选项。如果您只需要接收一条消息并退出,那么就会有messageReceiver.receiveAsync的阻塞选项。您可以控制应用程序何时关闭它。

static IMessageReceiver messageReceiver;
RegisterOnMessageHandlerAndReceiveMessages();
Message message = await messageReceiver.ReceiveAsync();
await messageReceiver.CompleteAsync(message.SystemProperties.LockToken);
await messageReceiver.CloseAsync();
await subscriptionClient.CloseAsync();

有关更多详细信息,您可以参考本文。

 类似资料:
  • 来自第三次订阅的消息会发生什么情况,是否会在TTL之后发送到死信队列 有没有办法找出消息未被使用的订阅

  • 我想将一个小的JSON消息放入中。消息将具有附加到它的“ProviderID”属性,并且根据筛选规则,该消息将被筛选到特定于提供程序的上 但是,我似乎无法在上指定共享访问策略,以限制第三方提供商仅连接到他们自己的 我假设应该在订阅上设置以便将这些消息发送到另一个并在那里应用特定于提供程序的安全性,这样做是否正确。 或者有其他/更好的/推荐的方法来做这件事。

  • 我在Azure服务总线中构建了一个支持多队列订阅的服务,但是我正在得到一些奇怪的行为。 我的subscription singleton类有一个如下所示的方法: 其思想是,您为特定类型的消息订阅Azure Service Bus,该消息直接对应于队列。在订阅中,传入一个委托以了解如何处理消息。 谁能告诉我,我需要做什么不同的,以确保消费者拥有的消息,直到完成?

  • 这似乎是最简单的解决办法。让我们看看流程: 第三方向RESTful API发送请求,以获取Windows Azure服务总线连接字符串-凭据-。 一旦拥有连接字符串,第三方就会连接到Windows服务总线,并开始从某个主题订阅接收消息。注意:连接字符串是在服务器端加密的,只能由接受的客户端解密。 优点 null null 第三方请求一个类似于RESTful的TCP API,以便订阅一些Window

  • 我们使用服务总线主题作为pub/sub系统的引擎。我们的逻辑涉及我们的NodeJS服务用多个订阅连接到一个主题。对于每个订阅,我们删除$default(TrueFilter),并在消息头的Label属性上创建一个CorrelationFilter,并且不在订阅中应用AutoDeleteOnIdle设置,因为我们希望确保订阅服务器功能在服务启动之前一直运行。 这个问题可以归结为这样:某件事能导致规则