如何解决大量数据未在 Azure 事件中心发布
我正在使用 EventHubProducerClient 类在 Azure 事件中心发布消息。 当我尝试发送大量数据时,假设一条一条的发送 1000 条消息,此测试用例通过,但我在事件中心仪表板上只看到 400-500(随机数)。这是代码。
parser = argparse.ArgumentParser(description='SImple Example')
parser.add_argument('-x','--height',help='Height of the box')
parser.add_argument('-l','--length',type=int,help='Length of the box')
parser.add_argument('-b','--breadth',help='Breadth of the box')
parser.add_argument('--stop',nargs=0,required=False,action=StopAction)
while True:
args = parser.parse_args(input("enter text: ").split())
但是,如果我尝试在列表中发布它们,我可以看到事件中心上的所有数据。
public async Task TestEventHubPublishMessagesSequentially()
{
var eventHubConnectionString = "XXXXX.CONNECTION STRING.XXXX";
var eventHubName = "XXXXX.EVENT HUB NAME.XXXX";
var messsage = "I am a message"
int tobePublishCount = 2000;
int publishCount = 0;
for (int i = 0; i < tobePublishCount; i++)
{
var completeMessage = $"Index:{i}-message";
var success = await PublishMessageSequentially(eventHubConnectionString,eventHubName,completeMessage);
if (success)
{
publishCount++;
}
}
Assert.Equal(2000,publishCount);
}
public async Task<bool> PublishMessageSequentially(string eventHubConnectionString,string eventHubName,string messageToPublish)
{
await using (var producerClient = new EventHubProducerClient(eventHubConnectionString,eventHubName))
{
using EventDataBatch eventBatch = await producerClient.CreateBatchAsync();
var data = new Azure.Messaging.EventHubs.EventData(Encoding.UTF8.GetBytes(messageToPublish));
if (eventBatch.TryAdd(data))
{
await producerClient.SendAsync(eventBatch);
return true;
}
}
return false;
}
我不知道出了什么问题,唯一的区别,我可以看到我一次又一次地创建了一个新的 EventHubProducerClient 对象,但我也在处理它。我认为事件中心旨在消耗大量数据(每秒数百万)。我的用例是我必须将它们一一发布。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。