Pregunta

Estoy pensando en añadir una cola de función en un producto basado en un montón de servicios WCF.Yo he leido un poco acerca de MSMQ, primero pensé que era lo que yo necesitaba, pero no estoy seguro y están considerando la posibilidad de poner la cola en una tabla de base de datos.Me pregunto si alguno de aquí tiene algunos comentarios sobre qué camino seguir.

Básicamente estoy planeando tener una fachada de WCF servicio de llamadas a través de http.La fachada servicio sólo debe escribir todos los mensajes entrantes a una cola para dar una respuesta rápida a las llamadas del sistema.Los mensajes de la cola debe ser procesadas por otro componente, ya sea un servicio WCF o un servicio de Windows en función de om en la elección de mi cola.

El producto se está ejecutando en un equilibrio de carga del medio ambiente con 2 a n de servidores web.

Las opciones que estoy considerando y las preguntas que tengo son:

  1. Dejar la fachada de WCF escribir en un MSMQ y, a continuación, han anothther servicio WCF de la lectura de esta cola para hacer el procesamiento de los mensajes.Lo que no se sienten seguros acerca de esta alternativa por lo que he leído es cómo funcionará en un equilibrio de carga del medio ambiente.

1A.Donde debe de MSMQ(s) se coloca?Uno en cada servidor web?Uno en un servidor independiente?Múltiples en un servidor independiente?(no teniendo en cuenta la necesidad de redundancia y que los datos en casos excepcionales podría ser perdido y re-enviado)

1B.Cómo es el diseño afectados si quiero que el sistema redundante?Me gustaría ser alble a perder un servidor (que nunca viene de seguridad en línea de nuevo) la celebración de la MSMQ sin perder los datos en la cola.Por lo que he leído acerca de MSMQ que me deja a la única opción de colocar el MSMQ en un clúster de windows.Es eso correcto?(Me gustaría evitar el uso de un clúster de windows fo esto).

  1. La segunda alternativa de diseño es dejar la fachada servicio WCF escribir la cola a una base de datos.Entonces tienes dos o más servicios de Windows para hacer el procesamiento de la cola.No tengo alguna pregunta sobre esta alternativa.Si usted se pregunta por qué no elegir uno como parece más sencillo para mí es porque me gustaría desarrollar este no introducir cualquier tipo de servicios de windows a la solución, que yo beleive el MSMQ consiguió funcionalidad no quiero el código de mí y yo también estoy curioso acerca del uso de MSMQ como nunca lo he utilizado antes.

Saludos Håkan

¿Fue útil?

Solución 2

Después de leer un poco más sobre el subjetamento, he decidido no usar MSMQ. Parece que realmente no tengo ninguna razón para ir por este camino. Necesito que esto no sea transaccional y, como lo entiendo, ninguna de las técnicas de diario o letras muertas me ayudará con mi requisito de redundancia.

Todos mis componentes estarán en línea la mayor parte del tiempo (tal vez un par de horas al año cuando obtuvieran problemas de acceso).

El MSQM solo agregará complejidad a la solución emocionante, otra técnica y tal vez otro servidor para realizar un seguimiento.

Para obtener la redundancia completa para evitar la pérdida de datos en MSMQ, necesitaré un clúster de Windows o implementaré/recibiré a múltiples colas idénticas. No quiero hacer ninguno de esos.

Todo esto me llevó a frente a mi aplicación de recepción con una fachada WCF que acepta llamadas HTTP que escriben en una cola de base de datos. Esta base de datos ya está protegida de la pérdida de datos. La cola será encuestada por instancias activas de Muliple de un servicio de Windows que contiene toda la lógica de negocios pesados. Con baja prioridad del proceso, estos servicios podrían alojarse en los nodos ya existentes utilizados por la aplicación web Load Balaced. Si tuviera tiempo para usar MSMQ o si lo necesitaba por otra razón en mi aplicación, podría cambiar mi decisión.

Otros consejos

Ok, entonces no está utilizando WCF con la integración MSMQ, está utilizando WCF para crear mensajes MSMQ como producto final. Eso simplifica las cosas a "¿Cómo cargo el equilibrio MSMQ?"

El arreglo que usa se basa en lo que funciona mejor para usted. Puede hacer que varios servidores web envíen mensajes a una cola remota en una máquina central. En su lugar, podría hacer que los servidores web que colocan mensajes en colas locales con una máquina central encuesten las colas para recién llegados.

No necesita agrupar MSMQ para que sea resistente. En su lugar, puede hacer que su código sea resistente para que se enfrente a mensajes perdidos usando colas de letras muertas, colas transaccionales, diario, etc. La agrupación de hardware es la opción fácil :-)

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