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.

¿Cómo puedo establecer un filtro en el puerto de envío para que no procese el mensaje si ya fue manejado por un puerto de envío anterior en mi orquestación?

Tengo una orquestación que crea un nuevo mensaje si se cumple una condición, envía el nuevo mensaje al puerto de envío y luego envía el mensaje original a una carpeta de descarte. Esto funciona correctamente. Si la condición no se cumple, simplemente recicla el mensaje y lo vuelve a enviar. Actualmente está enviando el mensaje a la carpeta de descarte, sin importar qué filtro configure. Aquí está la orquestación. ¿Alguien sabe cómo puedo lograr esto? La carpeta de descarte puede llenarse muy rápidamente.

Toda mi configuración de filtrado e información del puerto está configurada en el servidor de administración de Biztalk. Esto es lo que necesito lograr. Llega un mensaje. Se procesa en comparación con la base de datos. La solicitud a la base de datos devuelve un conjunto vacío. En este escenario, quiero pausar la orquestación y luego enviar el mensaje a una carpeta de envío. Tiene un proceso para mover el mensaje a la carpeta de recepción y el mensaje se procesa nuevamente. Si la base de datos devuelve datos, se procesan los datos, luego se crea un nuevo mensaje con nuevos parámetros y se envía a la carpeta de envío y se mueve a la carpeta de recepción.

El mensaje original se envía a una carpeta de descarte. El nuevo mensaje con nuevos parámetros se procesa nuevamente, cada vez actualizando los parámetros y volviendo a ejecutarse, hasta que no devuelva datos. Luego se reinicia en un nuevo mensaje y el proceso comienza nuevamente.

Hay diferentes mensajes del mismo tipo. Cada llamada a la base de datos debe tener un mensaje correspondiente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según la orquestación proporcionada, parece que el mensaje siempre se envía a la carpeta de descarte, independientemente de si se cumple la condición o no. Para lograr el resultado deseado de enviar el mensaje original a la carpeta de descarte solo cuando no se cumple la condición, es necesario modificar la orquestación de la siguiente manera:

    1. Agregar una forma antes de la forma “Construir Mensaje” que verifique la condición (por ejemplo, si la solicitud de la base de datos devuelve un conjunto vacío).
    2. Si no se cumple la condición, conectar la forma a la forma “Enviar” que envía el mensaje al puerto de envío.
    3. Si se cumple la condición, continuar con la orquestación original construyendo un nuevo mensaje, enviándolo al puerto de envío y luego enviando el mensaje original a la carpeta de descarte.

    De esta manera, el mensaje original solo se enviará a la carpeta de descarte cuando no se cumpla la condición y no se enviará allí de otra manera.

    Adicionalmente, es importante asegurarse de configurar correctamente los filtros y los puertos en el servidor de Administración de Biztalk, ya que cualquier configuración incorrecta podría resultar en que los mensajes se envíen al lugar incorrecto.

Comments are closed.