Pregunta

Tengo un servicio de Windows que recoge los mensajes de varios MSMQs. El servicio recoge los mensajes de las colas, y luego ejecuta un determinado flujo de trabajo basado en la cola el mensaje entró por. ¿Es posible configurar un servicio WCF para aceptar un mensaje desde un punto final y lo coloca en una cola? Me gustaría que el servicio tenga varios puntos finales, y dependiendo de qué punto final recibido el mensaje, el mensaje sería colocado en una cola diferente. He visto cosas sobre netMsmqBinding pero hasta ahora no he podido determinar si esto es para el uso que estoy pensando.

Cualquier ayuda es apreciada,

Mike

¿Fue útil?

Solución 2

La forma en que era capaz de hacer esto fue creando una clase ServiceHost a medida que podía pasar un nombre de configuración a. Esta es una alternativa a la implementación predeterminada que utiliza el servicio de nombres de tipo de implementación para localizar la configuración. Esto me permitió ejecutar múltiples instancias de la misma aplicación en la misma máquina. Además de eso, dentro de la clase de servicio personalizada añadí una costumbre MessageInspector que se adhiere a todos los puntos finales para escuchar mensajes. Luego utilizo el método IDispatchMessageInspector.AfterReceiveRequest () para llevar el mensaje entrante y luego se coloca en una cola que defino dentro de mi configuración. Un poco complicado, pero funciona perfectamente para nuestro escenario.

Otros consejos

Soy que consigue esto correctamente - usted quiere tener

  • un servicio WCF expuesto al mundo exterior a través de varios puntos finales
  • dependiendo del criterio de valoración el mensaje entra en el servicio WCF, se debe poner esos mensajes en colas de MSMQ separados?

definitivamente puede tener un servicio WCF que expondrá cualquier número de puntos finales al exterior y que caería mensajes entrantes en una cola MSMQ. No estoy seguro de si podrás dentro del método de servicio WCF para saber qué punto final llegó la solicitud de ..... por lo general, la clase de servicio WCF no sabe nada acerca de si la solicitud proviene de (y por lo general no necesita saber ...).

Veo algunos enfoques a esto:

  • tener múltiples servicios, una para cada uno (tipo de) de punto final; que pueden compartir todo su código y todo, pero si se separa esto en las clases de servicio por separado, cada clase de servicio serían inherentemente saber lo que el punto final en la que sirve, y por lo tanto podría saber qué cola MSMQ para poner la información en

  • encontrar una manera de enviar alguna información de cabecera junto con el mensaje que de alguna manera te dice dónde poner los mensajes

  • 4.0 en WCF, que podría ser capaz de hacer algo con el nuevo servicio de enrutamiento WCF .... no muy seguro de cómo funcionaría, sin embargo - ya que también requeriría algún tipo de "pista" saber el cual punto final se llama y cómo encaminar el mensaje entrante

fijaciones net.msmq permitir a un cliente WCF para escribir directamente a una cola MSMQ, incluso si el servicio WCF-cola de la lectura no es en vivo - que ni siquiera tiene que existir. encuadernaciones net.msmq también permite la lectura automagic de las colas. Ningún uso de MessageQueue a escribir o leer de una cola.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top