我正在尝试在订阅服务总线的函数应用程序中实现一些有保证的并发性。
为了实现这一目标,我在服务总线中实现了分区。
如果我在服务总线中的消息分发是这样的:
Partition1 Partition2 Partition3
message1 message3 mesaage5
message2 message4 message6
我希望我的函数应用程序调用序列是:
message1 --> message3 -->message5 -->message2 -->message4-->message6
这并没有发生。
我的
host.json
配置是
{
"version": "2.0",
"extensions": {
"serviceBus": {
"maxConcurrentCalls": 1
}
},
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": false,
"excludedTypes": "Request"
}
}
}
}
有什么办法可以实现这个目标吗?通过使用sessionId还是交易?
分区并不是为了并发而设计的。使用 Azure 服务总线进行分区的目的是确保在某些分区遇到问题时,并非所有消息不可用,而是部分消息不可用。
您的配置中的并发设置为 1。因此,您将从随机分区获取消息,一次处理一个消息。如果您需要有保证的订单,那就是消息会话。事务处理适用于处理传入消息后的传出消息。