Долгосрочный WCF MSMQ Processing
Я читаю Программирование WCF Services 3-е изд. Юваль Лоуи. В главе "Службы в очереди", в которой описывается NetMsmqBinding, на странице 473 он говорит: "... вы должны сохранять обработку службы в очереди вызовов относительно короткой, иначе вы рискуете прервать транзакцию воспроизведения. Важное замечание здесь заключается в том, что это неправильно". приравнять вызовы в очереди к длительным асинхронным вызовам. "
1) Что такое короткий звонок? 2) Какова наилучшая практика для длительных операций; отправить отправить их в ThreadPool?
Эта статья натолкнулась на ту же проблему на практике: длинный процесс WCF, MSMQ и TransactionScope.
Я посмотрел и посмотрел, и я не могу найти какие-либо лучшие практики по этому вопросу в Интернете.
3) Применяется ли это правило, если у меня нет транзакции?
1 ответ
1) По умолчанию короткий процесс с транзакцией занимает не более 10 минут (время ожидания транзакции по умолчанию). 2) Может быть, но если вы это сделаете, вы потеряете поведение транзакции (если сервер отключится, сообщение будет потеряно).) 3) Да. По умолчанию область действия транзакции имеет тайм-аут по умолчанию, который прервет вашу транзакцию.
Хорошей новостью является то, что вы можете переопределить это время ожидания в файле machine.config: http://blogs.inkeysolutions.com/2012/01/managing-timeouts-while-using.html while- using.html