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.

¿Puedes publicar un nuevo mensaje directamente en la cola de cartas no entregadas en Azure Service Bus?

Recientemente he escrito un código que procesa los mensajes de la cola de mensajes no entregados de Azure Service Bus y los convierte en un informe.

Estoy intentando probar ese código cargando muchas y muchas mensajes a una cola de mensajes no entregados para que los procese.

He creado una aplicación de consola en C# y LinqPad que lee una carpeta de archivos de texto e intenta enviar cada uno como un mensaje a mi queue de prueba/$deadletters utilizando la biblioteca de cliente Azure.Messaging.ServiceBus, que se ve así:

var files = Directory.GetFiles(messagePath, filePattern);
var client = new ServiceBusClient(connectionString);
var dlqSender = client.CreateSender($"{queueName}/$deadletterqueue");

foreach (var file in files)
{
var msgBody = File.ReadAllText(file);
var message = new ServiceBusMessage(msgBody);
await dlqSender.SendMessageAsync(message);
}

“`

Desafortunadamente, esto se queda en la línea dlqSender.SendMessageAsync para el primer mensaje y nunca continúa. No hay mensaje de error y nada se coloca en la DLQ o en la cola.

Agradezco que pueda ser un escenario de uso extraño, pero pensé que la DLQ se comportaba como cualquier otra cola. Sería bueno tener una confirmación de que esto es compatible.

Tags:  

Answer

  1. Avatar for davy.ai

    Es posible enviar mensajes a una cola de mensajes no entregados de Azure Service Bus con fines de prueba o procesamiento. Sin embargo, en este caso en particular, parece que el código se congela en la línea SendMessageAsync para el primer mensaje.

    Una posibilidad es que pueda haber un problema con la cadena de conexión o el nombre de la cola. Sería útil verificar nuevamente esos valores y asegurarse de que sean correctos.

    Otra posibilidad es que el cuerpo del mensaje pueda ser demasiado grande, lo que hace que el método SendMessageAsync se bloquee. En este caso, sería útil verificar el tamaño de los archivos que se están leyendo e intentar enviar mensajes más pequeños.

    También sería conveniente verificar si se están lanzando excepciones y no se están manejando, lo que podría estar causando que el código se bloquee. Agregar un manejo de errores alrededor del método SendMessageAsync podría ayudar a capturar cualquier excepción y proporcionar más información sobre lo que está causando el problema.

    En general, definitivamente es posible enviar mensajes a una cola de mensajes no entregados de Azure Service Bus para pruebas, y puede ser necesario realizar algunas pruebas de resolución de problemas para determinar qué está causando que el código se bloquee en este escenario en particular.

Comments are closed.