В моем приложении я делаю интеграции, используя NMS и ActiveMQ.
У меня есть слушатели, которые в одиночку слушают очереди сообщений.
После получения сообщения слушатель должен обработать его и зарегистрировать в базе данных.
Мой DbContext
настроен с использованием опции DbContextPool
:
services.AddEntityFrameworkSqlServer();
services.AddDbContextPool<MyContext>((serviceProvider, options) =>
{
options.UseSqlServer(connectionString);
options.UseInternalServiceProvider(serviceProvider);
});
Итак, когда я пытаюсь внедрить DbContext
в мой ActiveMqListener
класс, я получаю ошибку:
InvalidOperationException: Cannot consume scoped service 'MyApp.Data.MyContext' from singleton 'MyApp.Integrations.ActiveMqListener'.
Как я могу получить один из контекстов в пуле и освободить его, когда моя работа завершит обработку одного сообщения? Есть ли другой рекомендуемый способ сделать это?
Заранее спасибо.