5

ServiceBus トピック イベントをキャプチャするためにMicrosoft.Azure.WebJobsおよびMicrosoft.Azure.WebJobs.ServiceBusパッケージを使用しています。

関数コードは以下の通りです -

public class Functions
{
    [Singleton]
    public static void Event4Processor(
      [ServiceBusTrigger("MyTopic", "MySubscription", AccessRights.Listen)] BrokeredMessage message,
      TextWriter log)
    {
        log.WriteLine(message);
    }
}

ただし、このエラーが発生しています

{
  "Type": "FunctionCompleted",
  "EndTime": "2015-09-28T13:53:36.6540039+00:00",
  "Failure": {
    "ExceptionType": "System.ArgumentNullException",
    "ExceptionDetails": "System.ArgumentNullException: Value cannot be null.\r\nParameter name: bindingData\r\n   at Microsoft.Azure.WebJobs.Host.Bindings.BindingDataPathHelper.ConvertParameters(IReadOnlyDictionary`2 bindingData)\r\n   at Microsoft.Azure.WebJobs.Host.SingletonManager.GetBoundScope(String scope, IReadOnlyDictionary`2 bindingData)\r\n   at Microsoft.Azure.WebJobs.Host.Triggers.TriggeredFunctionBinding`1.<BindCoreAsync>d__7.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   at Microsoft.Azure.WebJobs.Host.Triggers.TriggeredFunctionBinding`1.<BindAsync>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.<ExecuteWithLogMessageAsync>d__c.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.<TryExecuteAsync>d__1.MoveNext()"
  },
  "ParameterLogs": {},
  "FunctionInstanceId": "a1dcf0a9-113f-4c7e-b136-fb8d8b7ee4aa",
  "Function": {
    "Id": "WebJobServiceBus.Functions.Event4Processor",
    "FullName": "WebJobServiceBus.Functions.Event4Processor",
    "ShortName": "Functions.Event4Processor",
    "Parameters": [
      {
        "NamespaceName": "my-ns",
        "TopicName": "myevents",
        "SubscriptionName": "mysubscription",
        "Name": "message",
        "DisplayHints": {
          "Description": "dequeue from 'mytopic/Subscriptions/mysubscription'",
          "Prompt": "Enter the queue message body"
        }
      },
      {
        "Type": "ParameterDescriptor",
        "Name": "log"
      }
    ]
  },
  "Reason": "AutomaticTrigger",
  "ReasonDetails": "New ServiceBus message detected on 'MyTopic/Subscriptions/MySubscription'.",
  "StartTime": "2015-09-28T13:53:35.6639049+00:00",
  "HostInstanceId": "ad1f5b26-ddec-4326-9cfb-df585065e773",
  "HostDisplayName": "WebJobServiceBus",
  "SharedQueueName": "azure-webjobs-host-ef6959df3bc9431680c944c6ca5b1eff",
  "InstanceQueueName": "azure-webjobs-host-ad1f5b26ddec43269cfbdf585065e773",
  "Heartbeat": {
    "SharedContainerName": "azure-webjobs-hosts",
    "SharedDirectoryName": "heartbeats/ef6959df3bc9431680c944c6ca5b1eff",
    "InstanceBlobName": "ad1f5b26ddec43269cfbdf585065e773",
    "ExpirationInSeconds": 45
  }
}

シングルトン属性を削除すると、すべてが機能します!

私は次のようなオプションを試しました-

[Singleton(@"{CorrelationId}")]

しかし、それは役に立ちません。

問題(および修正)は何ですか?

4

1 に答える 1

3

明日修正できるバグがあると思います。当面は、BrokeredMessage ではなく独自の POCO タイプにバインドすることで、これを回避できるはずです。とりあえずやってみる?

準備ができ次第、修正を含む更新されたパッケージへのリンクをこのスレッドに返信します。

ありがとう。

于 2015-10-02T02:02:27.350 に答える