【问题标题】:How add parameters (e.g. messageId, enqueuedTimeUtc) to ServiceBusTrigger when receiving Batch?ServiceBusTrigger接收Batch时如何添加参数(如messageId、enqueuedTimeUtc)?
【发布时间】:2022-11-24 02:38:10
【问题描述】:

我在服务总线队列中批量接收消息并且它有效:

[FunctionName("TelemetryListenerCalculateAlgoPostNewState")]
    public static async Task TelemetryListenerCalculateAlgoPostNewState(
        [ServiceBusTrigger(busTelemetryQueueName,Connection = "ServiceBusConnection")]
        string [] receivedTelemetryMessages,
        ILogger log)
    {

但我想收到每条消息或批次的更多信息,至少是 enqueuedTimeUtc 或 messageId 来计算延迟和关注订购的方法like so:如果我将这些参数添加到上述函数中,我得到错误:

[FunctionName("ServiceBusQueueTriggerCSharp")]                    
     public static void Run(
     [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] 
     string myQueueItem,
     Int32 deliveryCount,
     DateTime enqueuedTimeUtc,
     string messageId,
     ILogger log)
 {
     log.LogInformation($"C# ServiceBus queue trigger function processed message: 
  {myQueueItem}");
     log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
     log.LogInformation($"DeliveryCount={deliveryCount}");
     log.LogInformation($"MessageId={messageId}");
 }

[2022-11-23T18:11:02.038Z] Microsoft.Azure.WebJobs.Host:索引方法“TelemetryListenerCalculateAlgoPostNewState”时出错。 Microsoft.Azure.WebJobs.Host:无法将参数“enqueuedTimeUtc”绑定到类型 DateTime。确保绑定支持参数类型。如果您正在使用绑定扩展(例如 Azure 存储、ServiceBus、计时器等),请确保您已在启动代码中调用扩展的注册方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。

使用 ServiceBusTrigger 接收批处理时如何实现此目的?我没有使用主题,因为我只使用这个消费者。

谢谢

【问题讨论】:

    标签: c# azureservicebus azure-servicebus-queues


    【解决方案1】:

    如果它对某人有帮助,Application Insights 日志给了我一条线索:

    Trigger Details: MessageIdArray: 1566b78362294301acd862fd245d322e,fbe200204cbc48ddb9e3d8d4b196bc82, SequenceNumberArray: 1692,1693, DeliveryCountArray: 1,1, EnqueuedTimeUtcArray: 2022-11-23T18:23:22.4200000+00:00,2022-11-23T18:23:22.4200000+00:00 , LockedUntilArray: 2022-11-23T18:28:22.4360000+00:00,2022-11-23T18:28:22.4360000+00:00, SessionId: (null)

    这有效:

    [FunctionName("TelemetryListenerCalculateAlgoPostNewState")]
        public static async Task TelemetryListenerCalculateAlgoPostNewState(
            [ServiceBusTrigger(busTelemetryQueueName,Connection = "ServiceBusConnection")]
            string [] receivedTelemetryMessages,
            Int32 [] DeliveryCountArray,
            DateTime [] EnqueuedTimeUtcArray,
            string [] MessageIdArray,
            Int64[] SequenceNumberArray,
            ILogger log)
        {
    

    【讨论】:

      猜你喜欢
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      相关资源
      最近更新 更多