Closed Shanginre closed 3 years ago
Никаких проблем с памятью со стороны внешней компоненты не возникает. Но принудительно держать настоящий вечный цикл на стороне 1С, да и на любом языке - это в целом плохая практика.
BasicConsumeMessage() не находится в бесконечном цикле, он считывает все сообщения из очереди, а потом включает таймаут и завершается по его истечении. Можно задать очень высокий таймаут, чтобы цикл был бесконечным. Никто не мешает так делать, но в адаптере мы так не делаем.
В 1С поддерживаются асинхронные операции на клиенте. Но работа с внешними событиями не реализована в компоненте PinkRAbbitMQ, потому что нет задачи, которая требовала бы получение и обработку сообщения на клиенте. В адаптере работа с компонентой выполняется только на сервере.
Рекомендую подождать релиза компоненты 1.10 - это значительно улучшенная производительность по отправке сообщений, поддержка SSL и в целом более оптимальный код и общая оптимизация
@ripreal спасибо за подробный и быстрый ответ. Будем ждать тогда нового релиза.
Единственный вопрос. Вы писали: "Но принудительно держать настоящий вечный цикл на стороне 1С, да и на любом языке - это в целом плохая практика."
Что, если цикл будет "вечным", но рег. задание (которое порождает фоновое задание с циклом) мы будем перезапускать раз в сутки, то какие проблемы это может вызвать? Или должно быть все нормально, если у нас утечек памяти не будет?
Если завершать фоновое задание штатно - дожидаясь окончания выполнения, то наверное никаких проблем
@Shanginre @ripreal там много чего может быть. И по разным причинам. В том числе, связанным с компонентой. И с конфигурацией. И с платформой. И с сервером. Именно поэтому в БИТ.Адаптер перезапуск раз в 10 минут. Опыт - сын ошибок трудных...
Возник такой вопрос по работе кода, приведенного в README.md:
Правильно я понимаю, схему работы с компонентой:
ВОПРОСЫ:
хотим использовать вашу компоненту (а может и сам адаптер) в проекте, но пока нет уверенности, что компонента работает корректно и (самое главное) оптимально.