我正在使用AzureSBLite
包装器来轮询来自具有特定分区的eventhub
的消息。 Eventdata将被发送到一个事件中心,Stream分析将从那里读取。处理完成后,流分析会将其写入某个分区中的不同事件中心。
SenderEventHub[Partition-1]-->Stream Analytics -->ReciverEventHub[Partition-2]
接收部分通常在接收方法上采用60-150s
,这不应该是这种情况。我不确定在包装器下面会发生什么。我已经验证了streamanalytics
的输出,它几乎接近瞬间但是接收器什么也没得到。
RecieverCode
ServiceBusConnectionStringBuilder builder = new ServiceBusConnectionStringBuilder(Helper.ConnectionString);
builder.TransportType = TransportType.Amqp;
MessagingFactory MessagingFactory = MessagingFactory.CreateFromConnectionString(Helper.ConnectionString);
EventHubClient client = MessagingFactory.CreateEventHubClient(eventHubEntity as string);
EventHubConsumerGroup group = client.GetConsumerGroup(Helper.ConsumerGroup);
EventHubReceiver receiver = group.CreateReceiver(Helper.PartitionReciever);
do
{
EventData data = receiver.Receive();
if (data != null)
{
Debug.WriteLine(Helper.Currentoffset = data.Offset);
var msg = JsonConvert.DeserializeObject<EventBody>(Encoding.UTF8.GetString(data.GetBytes()));
if (msg != null) Helper.Speak(msg.CommandName);
}
} while (true);
尝试使用相同的EventHub,但两个不同的分区更糟糕。
注意:Windows 10 IoT Core不支持Azure.SeriveBus。因此无法使用EventProcessorHost。