Tenemos una aplicación cliente que necesita enviar mensajes a un servidor para varias notificaciones. Para que el cliente pueda funcionar ocasionalmente conectado, voy a usar un enfoque de cola de mensajes. El procesamiento de colas eliminará los mensajes de la cola y llamará a un servicio web que los colocará en otra cola para finalmente ser procesados. Esta pregunta es sobre el entorno del cliente; el entorno del servidor ya está decidido.Persistent Messaging/Service Bus - ¿Hacer rodar el mío o arriesgar la curva de aprendizaje?
No quiero usar MSMQ porque no tenemos control sobre todas las PC del cliente para instalar/configurar y asegurar MSMQ correctamente, y porque el soporte es más desafiante debido a la calidad de las herramientas para investigar el contenidos de las colas de MSMQ. SQL Server 2005 Express está en todas las máquinas y se usa para almacenar datos para nuestra aplicación.
actualmente lo tengo a dos opciones:
- Escribe un persistente mensaje en cola bastante básico que almacena los mensajes en una mesa después de serialising ellos, a continuación, utiliza
ThreadPool.QueueUserWorkItem
que los han procesado por los manejadores configurados uno contra Tipo de mensaje. Todo en unSystem.Transactions.TransactionScope
por lo que solo se eliminan de la cola persistente si se procesan correctamente. - Use NServiceBus (este es el bus de servicio con el que hemos trabajado como equipo, por lo que MassTransit, etc. no son opciones) en el cliente, con un transporte de Service Broker que usa la base de datos local.
Tengo poca experiencia con los autobuses de servicio (todavía no recibo la terminología de bus de servicio) así que me preocupa la curva de aprendizaje en comparación con escribir algo mucho más simple que satisfaga mis necesidades del modo que necesito (implementación es una consideración grande).
¿Alguien tiene alguna idea?