Каков рекомендуемый срок службы обработчика сообщений?
Моя текущая реализация вызывает несколько проблем, особенно когда речь идет о доступе к данным (NHibernate).
Наша текущая реализация выглядит следующим образом:
Клиентское приложение(Интернет)
Отправляет сообщения в очередь (в памяти, msmq, azure)
Рабочее приложение (служба Windows)
Опрашивает очереди и передаетсообщения зарегистрированным обработчикам.
Когда мы инициализируем работника, мы регистрируем наши обработчики.Обработчики загружаются лениво (используя Lazy<T>
), поэтому они не создаются до тех пор, пока процессор очереди не запустится (в другом потоке).
Когда обработчики инициализируются , мы заполняемих зависимости и они хранятся в памяти до тех пор, пока процессор очереди не будет выключен.
Одна из проблем, с которыми мы сталкиваемся, заключается в том, что теперь мы используем одну сессию NHibernate ISession для всех обработчиков в процессоре очереди.Кажется, что лучшим решением было бы воссоздать обработчики в каждом цикле процессора очереди, что означает, что у каждого обработчика может быть свой собственный ISession.
Какой рекомендуемый подход?