gpt4 book ai didi

c# - 在一条消息中将多个元素添加到 Azure 队列

转载 作者:行者123 更新时间:2023-11-30 15:29:28 25 4
gpt4 key购买 nike

我正在使用 CloudQueueClientAzureStorageAccount 进行交互,类似于 this msdn example 中描述的方式。

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("some connection string");
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

并向队列添加一个元素(删除一些样板):

var queue = queueClient.GetQueueReference("queuename");
var message = new CloudQueueMessage("myString");
queue.AddMessageAsync(message);

这意味着我可以将“myString”添加到我的队列中。伟大的。如果我重复调用这些代码行,我可以多次添加“mystring”。也不错,但效率低下。

如何在一条消息中将多个项目添加到队列中?

我对此进行了一些研究,发现 Entity Group Transactions ,这可能是合适的选择。然而,这看起来与我一直在做的事情非常不同,并且没有真正给我任何代码示例。 有什么方法可以使用它并继续使用 Microsoft.WindowsAzure.StorageClient 库来构建我的消息?

最佳答案

发送多条消息的一种方法是构建一个包含单个字符串值(或对象)列表的包装类,例如将其序列化为 Json 对象,并将其作为消息的有效负载发送。这里的问题是,根据对象的大小,您最终可能会超出消息的大小限制。所以这不是推荐的实现。

在某些时候,我正在处理一个每秒需要发送大量消息的系统;它被大量分发。我们最终没有对多个消息进行批处理,而是跨多个存储帐户创建了一个消息队列分片。可扩展性要求促使我们进行此实现。

请记住,Chunky 与 Chatty 适用于发送更多信息,以避免往返,从而优化性能。消息队列与性能无关,而与性能无关。它更多的是关于信息的可扩展性和分发。换句话说,最终一致性和分布式横向扩展是这种环境中受欢迎的模式。我并不是说你应该忽略粗短和健谈,但你应该在有意义的地方应用它。

例如,如果您需要每秒发送 100 万条消息,那么 chunkier 调用是一种选择;分片是另一个。我通常喜欢分片,因为可扩展性边界更少。但在某些情况下,如果问题足够简单,分块可能就足够了。

关于c# - 在一条消息中将多个元素添加到 Azure 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23677078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com