Soy un principiante de Sql Server Service Broker y estoy tratando de comprender la mejor manera de configurar Service Broker para un caso de uso (aparentemente) simple: quiero crear una cola de trabajo simple, donde una aplicación suelta elementos de trabajo en la cola, y la aplicación por separado recoge los elementos de trabajo de esa cola y los procesa. No es necesario que la primera aplicación recupere los mensajes de estado del segundo. Quiero que la cola viva en una sola instancia de servidor Sql.Sql Server Service Broker: ¿Cómo estructurar Conversations para un escenario de cola simple?
Lo que más me confunde es cómo las conversaciones/diálogos se relacionan con esta situación. Sé que solo puede enviar/recibir mensajes en el contexto de una conversación/diálogo, pero como no hay intercambio entre las dos aplicaciones, me siento perdido acerca de cuándo es la hora correcta para crear una nueva conversación. Las dos alternativas extremas parecen ser:
- Cada vez que encola un elemento de trabajo, comienzo una nueva conversación. Entonces, cada conversación termina teniendo exactamente un mensaje.
- En el momento del despliegue, creo manualmente una sola conversación de duración infinita. Cuando es hora de poner en cola un elemento de trabajo, siempre lo envío como parte de esa única conversación.
¿Cuáles serían las consecuencias de seguir cualquiera de estas rutas?
Además, en el primer caso, parece que necesito hacer algunas CONVERSACIONES FINALES, para que el Servidor SQL pueda limpiar los recursos internamente. ¿Hay alguna guía para saber cuándo sería el lugar correcto para colocarlos? (¿O es posible que sea mejor confiar en que las conversaciones se acaben?)
Pareces estar hablando de una sola cola, pero ... http://stackoverflow.com/questions/14643015/why-do-i-need-two-sql-server-service-broker-colas-for-a-simple-task – cja