Compartir a través de


Rutas

Se aplica a: SQL Server Azure SQL Managed Instance

Service Broker utiliza rutas para determinar dónde se van a entregar los mensajes. Cuando un servicio envía un mensaje en una conversación, SQL Server utiliza rutas para localizar el servicio que recibirá el mensaje. Cuando ese servicio responde, SQL Server vuelve a utilizar las rutas para localizar el servicio iniciador. De forma predeterminada, cada base de datos contiene una ruta que especifica que los mensajes para cualquier servicio que no tengan ninguna ruta explícita se entreguen en la instancia de SQL Server.

Existen tres componentes básicos en una ruta:

  • Nombre del servicio
    El nombre del servicio para el que esta ruta especifica los envíos. Este nombre debe coincidir exactamente con el nombre de servicio en el comando BEGIN DIALOG.

  • Identificador de instancia de agente
    Identificador único al que una base de datos específica envía los mensajes. Es la columna service_broker_guid de la fila de la tabla sys.databases de la base de datos que señala esta ruta.

  • Dirección de red
    Dirección real del equipo, una palabra clave que restringe la ruta al equipo local o una palabra clave que indica que la capa de transporte deduce la dirección a partir del nombre de servicio. Una dirección de red puede ser la dirección del agente que hospeda el servicio o la dirección de un agente de reenvío.

Para determinar la ruta de una conversación, SQL Server hace coincidir el nombre de servicio y el identificador de instancia de agente especificados en la instrucción BEGIN DIALOG CONVERSATION con el nombre de servicio y el identificador de instancia de agente especificados en la ruta. Las rutas que no proporcionan un nombre de servicio coinciden con cualquier nombre de servicio. Las rutas que no proporcionan un identificador de instancia de agente coinciden con cualquier identificador de instancia de agente. Cuando más de una ruta coincide con una conversación, SQL Server selecciona una de ellas, como se describe en Service Broker Routing.

SQL Server garantiza que una vez que el destino reconoce el primer mensaje, los mensajes posteriores de esa conversación se dirigen a la misma base de datos. Sin embargo, no se garantiza que otras conversaciones del mismo grupo de conversación se dirijan a la misma base de datos. Si una aplicación requiere que los mensajes de conversaciones relacionadas se envíen a la misma base de datos, la aplicación debe proporcionar un identificador de instancia de agente cuando inicie una conversación.

De forma predeterminada, cada base de datos de usuario contiene la ruta AutoCreatedLocal. Esta ruta coincide con cualquier nombre de servicio e instancia de agente, y especifica que el mensaje debe entregarse en la instancia actual. En los casos sencillos donde tanto el iniciador como el destino de la conversación existen en la misma instancia de SQL Server, no son necesarias rutas adicionales. Sin embargo, la creación de una ruta para cada servicio ayuda a evitar la modificación o la eliminación de la ruta AutoCreatedLocal.

Consulte también