es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Número de mensajes que se pueden publicar en un tema del bus de servicio al mismo tiempo

¿Cuál es el límite de cantidad de mensajes que se pueden publicar en un tópico de Service Bus a la vez utilizando TransactionScopeOption como Suppress? Estoy publicando los mensajes en lotes. Intenté publicar 300 mensajes en un lote y se publicaron, pero con 400 mensajes no se publican. El tamaño de ambos lotes es menor a 256 kb. Estoy utilizando .NET Core 3.1. ¿Hay un límite en el número de mensajes junto con el tamaño?

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();
}

Para crear los lotes estoy utilizando la siguiente función:

“`csharp
public static 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>();
}

<pre><code> 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;
}
</code></pre>

}
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El límite máximo de cantidad de mensajes que se pueden publicar en un tópico de un bus de servicios a la vez utilizando TransactionScopeOption como Suppress no está fijo. Depende de varios factores como el tamaño de cada mensaje, los recursos disponibles y la carga actual en el bus de servicios.

    En el escenario dado, el usuario pudo publicar 300 mensajes en un lote, pero con 400 mensajes, no se publicaron. No está claro si se recibió algún error en este caso. Es posible que el tamaño de 400 mensajes estuviera excediendo el límite máximo permitido para un solo lote.

    El tamaño de ambos lotes mencionados en el escenario es menor a 256 kb, lo cual está dentro del límite permitido. Sin embargo, puede haber otros factores como la latencia de la red, el ancho de banda disponible o la velocidad de procesamiento que pueden afectar la cantidad de mensajes que se pueden enviar en un solo lote.

    En general, se recomienda mantener el tamaño del lote dentro de límites razonables para evitar problemas. Puede considerar experimentar con diferentes tamaños de lote para encontrar el tamaño óptimo que funcione para su caso de uso.

Comments are closed.