我在Service Fabric中实现了2个简单服务,它们通过Event Hub进行通信,我遇到了非常奇怪的行为。
侦听器服务使用PartitionReciever
方法使用ReceiveAsync
读取消息。它始终从分区的开头读取消息,但即使maxMessageCount
参数设置为非常高的数,这肯定超过了分区中的消息数,它只读取"随机&#34 ;消息量但从未完整列表。它始终从分区的开头开始正确读取,但它几乎从不读取应该存在的完整消息列表......
我是否遗漏了文档中的内容,这是正常行为,或者我是对的,这是非常奇怪的行为?
我的接收器服务的代码片段:
PartitionReceiver receiver = eventHubClient.CreateReceiver(PartitionReceiver.DefaultConsumerGroupName, Convert.ToString(partition), PartitionReceiver.StartOfStream);
ServiceEventSource.Current.Write("RecieveStart");
IEnumerable<EventData> ehEvents = null;
int i = 0;
do
{
try
{
ehEvents = await receiver.ReceiveAsync(1000);
break;
}
catch (OperationCanceledException)
{
if (i == NUM_OF_RETRIES-1)
{
await eventHubClient.CloseAsync();
StatusCode(500);
}
}
i++;
} while (i < NUM_OF_RETRIES);