我在接收消息时使用ServiceBusTrigger来执行代码。我想使用Singleton attribute来限制哪些消息可以并行执行。此属性允许指定绑定到传入消息上的属性的作用域,这样具有不同值的消息可以并行执行,但具有相同值的消息必须串行执行。
在传入消息对象上使用顶级属性时,这是有效的。
示例
[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时,这似乎是一个非常常见的用例
发布于 2020-11-23 19:56:41
服务总线绑定在绑定表达式中公开Message Metadata。所以,userProperties.<key>应该可以做到这一点。
https://stackoverflow.com/questions/64732290
复制相似问题