Crear tipos de mensaje de Service Broker

Un tipo de mensaje define el nombre de un tipo concreto de mensaje y la validación que Service Broker realiza en ese tipo de mensaje. Para determinar los tipos de mensaje que su aplicación utilizará, planifique primero las tareas que su aplicación debe realizar, así como los datos necesarios para realizar cada tarea.

El enfoque más común para una aplicación es estructurar los mensajes para que cada mensaje incluya la información requerida para un paso de la tarea. Cuando cada mensaje contiene la información para un paso de la tarea, la aplicación puede recibir con facilidad el mensaje, completar el paso y enviar una respuesta dentro de una transacción única. Por consiguiente, para muchas aplicaciones, la manera más fácil de determinar los tipos de mensaje y el contenido del mensaje es determinar los límites de la transacción para las tareas que la aplicación realiza. Cada paso determinado es una transacción y cada transacción corresponde a un tipo de mensaje intercambiado entre los servicios. La información del estado, los resultados o salida son también tipos de mensaje.

Los protocolos de comunicaciones de Service Broker están diseñados para trabajar con este estilo de mensajería. El protocolo de diálogos fragmenta los mensajes grandes y garantiza que no impidan la transmisión de los mensajes pequeños.

Elegir un tipo de validación

La validación especificada para el mensaje depende del contenido del mensaje. La práctica habitual es utilizar la validación más restrictiva disponible durante la comprobación y, a continuación, elegir la validación menos restrictiva para mejorar el rendimiento cuando se implementa la aplicación. Por ejemplo, es posible intercambiar un documento XML con tipo como cuerpo de un mensaje que especifica una validación de NONE. En este caso, su aplicación valida el mensaje al procesar el XML.

El formato de red para un mensaje incluye el nombre del tipo de mensaje. Por consiguiente, los nombres del tipo de mensaje se eligen a menudo para evitar problemas de intercalación y conflictos de denominación. Para obtener más información sobre la denominación, vea Asignación de nombres a objetos de Service Broker.

Indicar éxitos y errores

Una aplicación no define normalmente los nuevos tipos de mensajes para indicar el éxito o el error. En su lugar, se utiliza la instrucción END CONVERSATION para indicar que la conversación se ha completado y que la tarea se realizó correctamente. Si se produjera un error en la tarea, incluya la opción WITH ERROR para devolver un mensaje de error en la conversación.

En general, sólo uno de los participantes en la conversación deberá finalizar la conversación cuando la tarea se ha completado. El otro participante sólo emite una instrucción END CONVERSATION en respuesta a un mensaje de error o de fin de diálogo. La documentación para un servicio especifica generalmente qué participante finaliza la conversación si la conversación se realiza correctamente. Al proporcionar esta documentación, se evita que se produzca una situación en la que ninguno de los participantes finaliza la conversación o donde un participante finaliza la conversación mientras el otro participante sigue realizando tareas. Los dos extremos deben poder procesar los mensajes de error ya que los mensajes internos de Service Broker se entregan a ambos. Por ejemplo, si la vigencia del diálogo caduca antes de que se cierre el diálogo, ambos extremos reciben un mensaje de error de Service Broker.

Cada participante puede finalizar una conversación con un error en cualquier momento. Para obtener una explicación de cómo administrar los mensajes de error de Service Broker, vea Administrar mensajes de error de Service Broker.