История изменений
Исправление monk, (текущая версия) :
Я так понимаю что тут главная проблема чтоб ответ пришел именно на тот воркер, который обрабатывал предыдущий ответ клиента (ну и отправил уточняющий вопрос), так?
Так это не проблема. Просто на сессию клиента давать один воркер.
тут без разницы упадет MQ или нет, потому что еще и воркер может упасть
Ну придётся заново восстанавливать контекст. Главное, чтобы при наличии контекста, повторного выполнения не происходило.
В общем надо стараться чтоб воркеры вообще не зависили от того кто и что им до этого писал. Тогда сможете оценить все плюшки микросервисной модели.
В 1С так сделали. Теперь 90% серверного кода выглядят так:
Функция ВыполнитьНаСервере(Параметры, Ключ)
Кэш = ПолучитьИзВременногоХранилища(Ключ);
Если Кэш = Неопределено Тогда
Кэш = ПолучитьДанные();
КонецЕсли;
....
Ключ = ПоместитьВоВременноеХранилище(Кэш);
Возврат Результат;
КонецФункции
По-моему, лучше, когда сервис держит общий контекст всегда и посессионый в кэше со слабым ключом. Чем когда этот контекст по каждому запросу заново формируется (как в HTTP/cgi-bin).
Исходная версия monk, :
Я так понимаю что тут главная проблема чтоб ответ пришел именно на тот воркер, который обрабатывал предыдущий ответ клиента (ну и отправил уточняющий вопрос), так?
Так это не проблема. Просто на сессию клиента давать один воркер.
тут без разницы упадет MQ или нет, потому что еще и воркер может упасть
Ну придётся заново восстанавливать контекст. Главное, чтобы при наличии контекста, повторного выполнения не происходило.
В общем надо стараться чтоб воркеры вообще не зависили от того кто и что им до этого писал. Тогда сможете оценить все плюшки микросервисной модели.
В 1С так сделали. Теперь 90% серверного кода выглядят так:
Функция ВыполнитьНаСервере(Параметры, Ключ)
Кэш = ПрочитатьИзХранилища(Ключ);
Если Кэш = Неопределено Тогда
Кэш = ПолучитьДанные();
КонецЕсли;
....
ЗаписатьВХранилище(Ключ, Кэш);
Возврат Результат;
КонецФункции
По-моему, лучше, когда сервис держит общий контекст всегда и посессионый в кэше со слабым ключом. Чем когда этот контекст по каждому запросу заново формируется (как в HTTP/cgi-bin).