如何解决使用Webjobs SDK 3.x中的ServiceBusTrigger,Singleton属性可以使用UserProperty作为范围吗?
我收到消息时正在使用ServiceBusTrigger
执行代码。我想使用Singleton attribute来限制可以并行执行的消息。此属性允许指定绑定到传入消息的属性的范围,这样可以并行执行具有不同值的消息,但是具有串行值的消息必须串行执行。
在传入消息对象(如CorrelationId)上使用顶级属性时,此方法有效。
示例
[Singleton("{CorrelationId}",SingletonScope.Function,Mode = SingletonMode.Function)]
public async Task HandleMessage(
[ServiceBusTrigger("my-topic-name","my-subscription-name"),ServiceBusAccount("my-account-name")]
Message message,CancellationToken cancellationToken
)
{
await Task.Yield();
}
我想弄清楚的是如何使用消息上的用户属性实现相同的行为。它们存储在UserProperties
对象上的Message
字典中。我没有看到在Singleton
属性中使用绑定语句引用它们的方法,但是当将Singleton
与ServiceBusTrigger
组合在一起时,这似乎是一个非常常见的用例。 / p>
解决方法
服务总线绑定在绑定表达式中公开Message Metadata。因此,userProperties.<key>
应该可以解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。