在WebJobs SDK中使用ServiceBusTrigger的单例属性
本文关键字:ServiceBusTrigger 单例 属性 WebJobs SDK | 更新日期: 2023-09-27 18:15:06
我使用Microsoft.Azure.WebJobs和Microsoft.Azure.WebJobs.ServiceBus包来捕获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属性,一切都可以正常工作!
我试过-
[Singleton(@"{CorrelationId}")]
然而,这并没有帮助。
问题(和解决方法)是什么?
我相信我看到了一个bug,我们明天可以修复。目前,您应该能够通过绑定到您自己的POCO类型而不是BrokeredMessage来解决这个问题。你现在可以试试吗?
当准备好时,我会用一个链接到一个更新的包来回复这个线程。
谢谢。