2016-07-08 4 views
1

У меня есть 2 отдельных приложения. Один использует HangFire и планирует повторную работу. Другой содержит тесты. Тесты являются интеграционными, поэтому они повторно используют фактические пути, не издеваясь над чем-либо. Оба приложения имеют доступ к одному и тому же dbУдалите задание hangfire без создания экземпляра сервера hangfire

В результате запуска теста появляется повторяющееся задание, созданное первым приложением, и оно желательно. Однако, поскольку тест является интегральным, он запускается на производственной БД, поэтому после завершения теста я хотел бы удалить созданную повторяющуюся работу. И я бы хотел обработать удаление в тесте.

Я хотел бы знать, могу ли я настроить классы hangfire во втором приложении таким образом, чтобы я мог удалить повторяющуюся работу, созданную первым приложением.

Если я просто сконфигурировал фальшивый огонь для использования того же SQL-сервера во втором приложении, будет создан экземпляр нового HangFireServer, который запустит «захват» заданий для выполнения.

Я могу запустить SQL-запрос, чтобы удалить задание, но я бы хотел этого избежать.

Надеюсь, я достаточно четко объяснил.

ответ

1

В замедленное воспламенение можно удалить/добавить работу ли это recurringjob или фоновая работа, пока вы сначала заполняете JobStorage.

Возможно, существует два способа установить это.

JobStorage.Current = new SqlServerStorage("Your ConnectionString");; 

или

GlobalConfiguration.Configuration.UseSqlServerStorage("Your ConnectionString"); 

Затем вы можете использовать RecurringJob.RemoveIfExists("id") и нет необходимости для создания экземпляра сервера замедленного воспламенения. Предполагая, что вы уже создали схему Hangfire перед раздачей в другом приложении.

+0

это именно то, что я искал. Благодаря! – netaholic

1

Если предположить, что вы создали повторяющуюся работу с идентификатором вы можете просто сделать RecurringJob.RemoveIfExists («ID»), как указано на странице документации: http://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html

+0

Да, я знаю идентификатор. То, что вы связали, не отвечает на мой вопрос. Я не знаю, как настроить HangFire во втором приложении, поэтому он ничего не сделает, но в то же время позволит мне использовать 'RecurringJob.RemoveIfExists (« id »)' – netaholic

+0

Используете ли вы базу данных для хранения ваши рабочие места? Поскольку я думаю, что вы можете просто ссылаться на Hangfire, настроить его с помощью правильной базы данных и удалить задание. Вы можете рассмотреть возможность упаковки Hangfire в библиотеку и использовать ее там, где вы хотите ее использовать. – derkesthai

+0

как я указал в вопросе - да, я использую db. И оба приложения имеют доступ к этой базе данных. Вы говорите, что если я напишу 'GlobalConfiguration.Configuration .UseSqlServerStorage (connectionString);' и если I * не будет * писать 'app.UseHangfireServer();' , то я все равно смогу удалить Работа? – netaholic

Смежные вопросы