启用分区的实体不支持批处理具有不同SessionId或PartitionKey的代理消息



我正在尝试从Queue1中Peek一条消息,并将该消息发送到Queue2。这两个队列都启用了分区

我可以成功地偷看一条消息,但当我尝试发送它时,我会得到以下异常:

启用分区的实体不支持使用不同的SessionId或PartitionKey对代理消息进行批处理。LogicalPartitionId:45::PartitionKey:5::SessionId:5::MessageId:c2d57b0a-fff8-40bc-a835-d35eec0eade::ViaPartitionKey::

PartitionKeySessionId是相同的,在我的情况下是5。所以没有区别。队列没有DuplicateDetectionEnabled。它们只是简单的分区队列。此外,我只是发送一条消息,因此不涉及批处理(但例外情况涉及批处理(。我哪里错了?

注意:我使用的是Service Bus SDK 7.4.0。

var receiverClient = serviceBusSourceClient.CreateReceiver("queue1");
var message = await receiverClient.PeekMessageAsync();
var senderClient = serviceBusDestinationClient.CreateSender("queue2");
await senderClient.SendMessageAsync(new ServiceBusMessage(message));

根据Josh Love的建议,您可以尝试启用日志记录来查找此错误Batching brokered messages with distinct SessionId or PartitionKey is not supported for an entity with partitioning的原因

// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();  

最新更新