У нас есть клиентское приложение, которому нужно отправлять сообщения на сервер для различных уведомлений. Чтобы клиент мог время от времени работать с подключением, я собираюсь использовать метод очереди сообщений. При обработке очереди сообщения удаляются из очереди и вызывается веб-служба, которая помещает их в другую очередь для окончательной обработки. Этот вопрос касается клиентской среды; среда сервера уже определена.
Я не хочу использовать MSMQ, потому что у нас нет контроля над всеми клиентскими компьютерами, чтобы правильно установить / настроить и защитить MSMQ, а также потому, что поддержка является более сложной из-за качества инструментов для исследования содержимого очередей MSMQ . SQL Server 2005 Express установлен на всех машинах и используется для хранения данных для нашего приложения.
В настоящее время у меня есть два варианта:
- Напишите довольно простую постоянную очередь сообщений, которая хранит сообщения в таблице после их сериализации, а затем использует
ThreadPool.QueueUserWorkItem
для их обработки обработчиками, настроенными для каждого типа сообщений. Все вSystem.Transactions.TransactionScope
, поэтому они удаляются из постоянной очереди только в случае успешной обработки. - Используйте NServiceBus (это служебная шина, с которой мы работали как команда, поэтому MassTransit и т. Д. Не являются вариантами) на клиенте с транспортом Service Broker, который использует локальную базу данных.
У меня мало опыта работы с сервисными шинами (я до сих пор не совсем понимаю терминологию служебных шин), поэтому меня беспокоит кривая обучения по сравнению с написанием чего-то гораздо более простого, отвечающего моим требованиям так, как мне нужно (развертывание - это большое соображение).
Есть у кого мысли?