在Webjobs SDK 3.x中使用ServiceBusTrigger,Singleton属性可以使用UserProperty作为范围吗?
Using ServiceBusTrigger in the Webjobs SDK 3.x, can the Singleton attribute use a UserProperty as the scope?
我正在使用 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();
}
我正在努力弄清楚的是如何使用消息上的用户属性实现相同的行为。这些存储在 Message
对象的 UserProperties
字典中。我没有看到用 Singleton
属性中的绑定语句引用这些的方法,但在将 Singleton
与 ServiceBusTrigger
[ 组合时,这似乎是一个非常常见的用例=19=]
服务总线绑定在绑定表达式中公开 Message Metadata。所以,userProperties.<key>
应该可以解决问题。
我正在使用 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();
}
我正在努力弄清楚的是如何使用消息上的用户属性实现相同的行为。这些存储在 Message
对象的 UserProperties
字典中。我没有看到用 Singleton
属性中的绑定语句引用这些的方法,但在将 Singleton
与 ServiceBusTrigger
[ 组合时,这似乎是一个非常常见的用例=19=]
服务总线绑定在绑定表达式中公开 Message Metadata。所以,userProperties.<key>
应该可以解决问题。