Поскажите, как в Queue отключить сессии для тасков и не потерять обновления? Я понимаю, что это звучит дико и неразумно, но у меня, похоже, нет более подходящего выхода. Разве только отказаться от Queue и надстроить над спейсами его некое подобие.
Контекст такой: очередь используется не только для классических тасков, а для обмена информацией между разными аппликухами. Это данные для обработки, команды для управления удаленными микросервисами, статусные сообщения (живое/залипло), сообщения проверки синхронизации данных между нодами и так далее. Прекрасно работает, нет причин менять кроме проблем в саппорте.
Эти аппликухи из разных миров: где-то NodeJS, отдельные сервисы на Crystal, приложение на Rails и так далее.
Боль в том, что этот зоопарк общается с TNT по бинарному протоколу и при каждом обновлении языка или мажорном обновлении TNT уходит много времени на адаптацию драйверов (когда-то давно я совершил ошибку: устал ждать апдейтов и форкнул их в закрытую репку, а потом перекроил под себя) и просто утомительно саппортить это.
Поскольку RPS в этих случае не особенно критично, то светом в конце тоннеля мне представляется переход на HTTP с унифицированным API. Я начал писать прослойку поверх Queue, но влетел в проблему с "Task was not taken", решил ее костылем (сохраняю id сессии файбера и при работе с таском применяю:
https://github.com/tnt-qube/qube/blob/d73a17232febe4e832032b5e34997a280c7d42e1/lib/shipper.lua#L65, но в дальнейшем грядет еще куча коннектов от других консьюмеров, причем некоторые из коннектов не персистентные, как управлять ими в массе я пока совершенно не понимаю и отключение сессий видится мне неплохим вариантом решения проблемы, но как я не пытался организовать это из внешнего модуля в Lua — не получается: то ли руки кривые, то ли опыта в Lua мало, а вставать на кривую дорожку с собственным форком не хочется.