【发布时间】:2022-01-15 09:34:02
【问题描述】:
一次可以发布到服务总线主题的消息数限制是多少
TransactionScopeOption as Suppress.我正在批量发布消息
我尝试批量发布 300 条消息..它们已发布
但是 - 有 400 条消息计数,它们没有被发布
两个批次的大小都是小于 256 kb。
使用 .net 核心 3.1
消息数量和大小是否有限制?
var topicClient= new TopicClient(this.servicebusConnectionString, name);
using (var scope = new TransactionScope(TransactionScopeOption.Suppress, TransactionScopeAsyncFlowOption.Enabled))
{
foreach (var batch in GetBatches(messageList, BatchSize))
{
await this.topicClient.SendAsync(batch.ToList()).ConfigureAwait(false);
}
scope.Complete();
}
为了创建批次,我使用以下函数:
public static IEnumerable<IEnumerable<Message>> GetBatches(IList<Message> source, long bucketSize)
{
List<Message> bucket = null;
long size = 0;
foreach (var item in source)
{
if (bucket == null)
{
bucket = new List<Message>();
}
size += item.Size;
if (size <= bucketSize * ConvertToBytes)
{
bucket.Add(item);
continue;
}
yield return bucket;
bucket = new List<Message> { item };
size = item.Size;
}
if (bucket?.Count > 0 && size <= bucketSize * ConvertToBytes)
{
yield return bucket;
}
}
【问题讨论】:
-
您使用的是什么 .NET SDK?如果是最新的,您的
ServiceBusClient是如何配置的?一个小代码 sn-p 不会提供所有这些信息。 “以及两个批次的大小”是什么意思?介意审查和更新您的问题,让那些想要帮助的人更好地了解您所面临的问题吗?谢谢。 -
尝试发送 400 时遇到什么异常?批次限制为每批次 4500 条消息,但每个事务限制为 100 条消息docs.microsoft.com/en-us/azure/service-bus-messaging/…
-
@SeanFeldman 我已经添加了所需的信息......我要做的基本上是创建小于 256 kb 的批次(来自消息列表)并发布它们。我正在使用 Microsoft.Azure.ServiceBus 包。
-
关于这个问题的任何更新?这个答案解决了你的问题吗
-
是的@DeepDave-MT..最好使用 Azure.Messaging.ServiceBus
标签: azure azureservicebus transactionscope azure-servicebus-topics azure-servicebus-subscriptions