Giter Site home page Giter Site logo

Добавить возможность уведомлять 1С о приходе сообщения через HTTP сервис about pinkrabbitmq HOT 11 CLOSED

biterp avatar biterp commented on August 17, 2024
Добавить возможность уведомлять 1С о приходе сообщения через HTTP сервис

from pinkrabbitmq.

Comments (11)

dobromyslov avatar dobromyslov commented on August 17, 2024 1

Я считаю, что добавлять это в текущую библиотеку - плохая идея. Если нужно будить 1С по HTTP - каждый сам может написать микросервис на любом языке, подписать его на очередь RabbitMQ и делать всё, что угодно с 1С через HTTP. А PinkRabbitMQ должна работать исключительно с RabbitMQ и не более того.

from pinkrabbitmq.

ripreal avatar ripreal commented on August 17, 2024

Идея интересная. Я попробую ее реализовать. Конечно есть и именусы такого подхода:

  • необходимость модифицировать метаданные 1С.
  • http намного медленее работает чем прямой вызов сообщения компоненты

from pinkrabbitmq.

MinimaJack avatar MinimaJack commented on August 17, 2024

Можно описание подробнее, не у всех есть доступ к форуму...

from pinkrabbitmq.

Begemoth2 avatar Begemoth2 commented on August 17, 2024

@MinimaJack
Цитирую предложение с партнерского форума
"Вы не рассматривали написание прослойки для обмена вашей компоненты с 1С через её http-сервисы (вместо пулинга очереди в цикле)? Например, компонента поднимает прокси и начинает слушать кроля с одной стороны и общаться с 1С с другой (или использовать её http-сервис как push-уведомление)."

from pinkrabbitmq.

MinimaJack avatar MinimaJack commented on August 17, 2024

Спасибо.
Идея так себе - теряется смысл в компоненте, так можно и сообщения push-ить в сервис из прослойки.

from pinkrabbitmq.

Begemoth2 avatar Begemoth2 commented on August 17, 2024

@MinimaJack Нет не теряется, http работает медленнее AMQP (и медленная установка соединения), т.е. тут предложение именно в том, чтобы использовать http-сервис только для того, чтобы "разбудить" 1С (сказать ей что пришли сообщения), а дальше 1С уже через компоненту по протоколу AMQP начинает их массово и параллельно забирать (а отправка так и остается через компоненту).

Т.е. это всего-лишь средство не держать в 1С все время активное соединение которое слушает кролика, а "будить" 1С по внешнему событию

from pinkrabbitmq.

MinimaJack avatar MinimaJack commented on August 17, 2024

@Begemoth2 Что делать если будет приходить много сообщений?? Спамить 1С вызовами? Как контролировать что данные из очереди все еще забираются регл.заданием? Что делать тем у кого все на поддержке?Кто будет мониторить http-демон? Зачемммм....

Установка соединения что http, что amqp - практически идентична, большая часть времени сожрет tcp-layer.
Весь смысл в backpressure и pull-подходе, когда данные забираются с той скоростью с которой могут быть обработаны. А так получится дикая смесь: ни то, ни сё.

p.s. Текущие сервера без особых проблем переваривают поддержание десятки тысяч активных соединений.
p.p.s Как по мне решается надуманная проблема...

from pinkrabbitmq.

Begemoth2 avatar Begemoth2 commented on August 17, 2024

@MinimaJack При текущем подходе (который реализован в компоненте) для того, чтобы новые сообщения приходили быстро (сразу после появления в очереди) на сервере 1С должен постоянно висеть сеанс (например фонового задания) в котором выполняется ожидание в методе BasicConsumeMessage (как только сообщение приходит, оно получается и управление передается в код 1С).

Этот подход (вечно висящее соединение) приводит к определенным проблемам, как минимум конфигурацию сложно обновлять ;-)

Тут речь о том, как можно эту проблему обойти. Понятно, что предложенный подход не идеальный (и мы пока так делать не планируем), но задачу записали (как возможные вариант решения)

from pinkrabbitmq.

salsa-dev avatar salsa-dev commented on August 17, 2024

@dobromyslov прав, можно сделать свою реализацию сервиса, который будет уведомлять или даже передавать сообщения из системы очередей в 1С.

Если кому известны такие решения, интересно ознакомиться.

В целом, подход PULL обоснован, но, как всегда, есть пограничные случаи, когда PUSH очень нужен.

from pinkrabbitmq.

salsa-dev avatar salsa-dev commented on August 17, 2024

Нашёл возможное решение https://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#first-steps

from pinkrabbitmq.

ripreal avatar ripreal commented on August 17, 2024

Не актуально в рамках компоненты. Закрываю

from pinkrabbitmq.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.