Теперь мы видим, что файлы накапливаются в папке, а служба Windows перегружена чтением и сохранением их.Это не похоже на замораживание или что-то в этом роде, а просто отстает с точки зрения сохранения данных.Как и на 36 часов позже.
Мне кажется, что это потенциальная проблема с кодом обработки файлов, а не какая-то проблема с транспортом.Если ваш код обработки файлов работает плохо, то замена одного транспорта на другой не очень поможет.Для целей этого вопроса я предполагаю, что вы уже оптимизировали код обработки файлов в ответ на эту проблему.
Мне интересно, должен ли я удалить промежуточное сохранение файла, код чтения файла, который является устаревшим кодом и, следовательно, не параллельным или асинхронным, и заменить его более «стандартным» значением messagequeue, которое, скорее всего, будетлучше производительность.
Так что я могу обнаружить здесь ожидание, что, заменив транспорт, который, как вы подозреваете, является проблемой, вы решите проблему.Я не говорю, что это предположение неверно, но следует учитывать, что чтение файлов в Windows обычно очень, очень быстрое.На самом деле я был бы удивлен, обнаружив, что ваши затраты на ввод-вывод - это то, что вызывает замедление вашей обработки.Также учтите, что замена файлового транспорта на транспортный MQ все еще потребует чтения файлов с диска - как вы думаете, где подсистема MQ хранит элементы , пока они находятся в очереди?
В этом случае веб-служба может быть заменена на очередь сообщений, а служба Windows может читать сообщения, анализировать и сохранять их в базе данных.
Тем не менее,если вы действительно оптимизировали процесс обработки файлов, а файлы все еще находятся в очереди в папке в течение длительных периодов времени перед обработкой, то современная реализация очереди сообщений даст вам некоторое преимущество.Как вы упоминали ранее, я предполагаю, что процесс чтения файла является однопоточным.Я так полагаю, потому что управление блокировкой файловой системы в многопоточной среде - это не весело.В очереди сообщений многие клиентские библиотеки потребителя сообщений имеют встроенный шаблон конкурирующих потребителей , поэтому масштабирование числа потоков (или количества служб Windows для чтения очереди) становится намного проще.