PinkRabbitMQ - Native API компонента 1С с открытым исходным кодом, для обмена сообщениями через RabbitMQ

29.07.19

Разработка - Разработка внешних компонент

PinkRabbitMQ представляет собой Native API компоненту для 1С Предприятия 8 (Windows 32bit и 64bit) с открытым исходным кодом на с++ (можно собрать компоненту самостоятельно). PinkRabbitMQ это низкоуровневая компонента которая реализует обмен по протоколу AMQP с брокером сообщений RabbitMQ. Для организации высокоуровнего обмена между информационными базами предназначен Адаптер. Компонента разрабатывается в рамках проекта Адаптер.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
PinkRabbitMQ - Native API компонента 1С с открытым исходным кодом, для обмена сообщениями через RabbitMQ:
.zip 654,98Kb
1236 Скачать бесплатно
Демонстрационная обработка
.epf 695,44Kb
1395 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Предпосылки создания своей компоненты

  • Мы активно развиваем свой проект Адаптер (о нем мы уже писали на инфостарте), в котором реализован обмен через RabbitMQ
  • Т.к. 1С напрямую не поддерживает протокол AMQP (а для обмена с брокером RabbitMQ через http есть ограничения) нам потребовалась внешняя компонента
  • Раньше мы использовали стороннюю компоненту Yellow RabbitMQ, но для некоторых наших заказчиков было важно избежать зависимости от конкретного поставщика, и наличие закрытого кода (в виде скомпилированной компоненты) являлось важным аргументом против использования Yellow RabbitMQ
  • Технически создание своей компоненты нам казалось не сложным
  • У нас уже был весь набор тестов для Адаптера, который позволил нам быть уверенными, что наша компонента работает
  • Хотелось получить возможность самостоятельного развития компоненты

 

Наши цели публикации исходных кодов компоненты Pink RabbitMQ:

  • Она у нас все равно есть, и для нас это "ничего не стоит"
  • Мы хотим улучшить код компоненты
  • Мы хотим "продвинуть кролика в массы", как "среду" обмена данными, и как средство для построения событийно-ориентированных интеграций
  • Мы надеемся, что это будет полезно и для нашего Адаптера, как инструмента организации обмена

 

Особенности компоненты Pink RabbitMQ:

  • Описание API компоненты содержится в https://github.com/BITERP/PinkRabbitMQ/blob/master/README.md
  • Представляет собой Native API компоненту для 1С Предприятия 8 (Windows 32bit и 64bit). Для Linux мы не компилировали, но радикальных препятствий для этого нет (примерно понятно, какие нужно для этого сделать доработки)
  • С точки зрения API компонента практически полностью совместима с  Yellow RabbitMQ т.е. в Адаптер мы просто замени компоненту на нашу, но те механизмы, которые не нужны в Адаптере мы не реализовывали
  • В основе компоненты лежат "свежие" библиотеки
    •  AMQP-CPP - асинхронный клиент для работы  c протоколом AMQP
    •  POCO C++ - только для работы с tcp socket
  • Для обеспечения совместимости с Yellow RabbitMQ мы внутри компоненты превратили асинхронные методы библиотеки в синхронные, что немного повлияло на производительность
  • При разработке исходный код компоненты проверяются Sonar Cube и тестируются BDD тестами Адаптера (см. бэджи в репозитории)

 

Вопросы производительности

Поскольку мы использовали ранее Yellow RabbitMQ, то и сравнивали с ней:

Простой синтетический тест

Метод

Yellow RabbitMQ

Pink RabbitMQ

Последовательная отправка 1000 сообщений (сек)

28.30

57.54

Последовательное получение 1000 сообщений (с отправкой 2000 логов) (сек) 220.41 390.70

 

Тест на реальном проекте где в Адаптере компонента Yellow RabbitMQ была заменена на Pink RabbitMQ.

У нас не было цели провести отдельный чистый тест, мы просто хотели убедиться, что на одном из наших проектов, на котором мы недавно перешли с обмена БСП (не типового) на обмен через RabbitMQ при переходе на компоненту Pink RabbitMQ не будет проблем с производительностью.

В рамках теста из базы УТ10.3 в базу ERP переносился 1241 документ и проводился в ERP (реализации товаров превращались в поступления)

Метод

Yellow RabbitMQ

Pink RabbitMQ

План обмена из БСП в формате КД2

Длительность отправки из УТ 10.3 (час) 1:47 2:19 1:38
Длительность загрузки в ERP (час) 3:10 2:48 3:36
Общая длительность от момента как начали отправлять до момента, что все получили (час) 3:12 2:51 3:47


т.е. мы видим, что на реальном проекте

  • Меньшая скорость работы самой компоненты "теряется" во времени записи и проведения реальных загруженных документов
  • Общая длительность обмена зависит от прочих факторов гораздо больше, чем от скорости работы самой компоненты

по этому пока мы не считаем меньшую производительность Pink RabbitMQ проблемой

 

API

Компонента имеет ряд методов для работы из встроенного языка 1С. Параметры с тегом [НЕ РЕАЛИЗОВАНО] имеют пустую реализацию, но передавать их все равно требуется. Параметры с тегом [НЕОБЯЗАТЕЛЬНЫЙ] можно не передавать. Список методов:

Connect - устанавливает соединение с сервером RabbitMQ

Параметры:

  • host - Строка - Адрес сервера RabbitMQ
  • port - Число - Порт работы через tcp (обычно 5672)
  • login - Строка - Имя пользователя
  • pwd - Строка - Пароль пользователя
  • vhost - Строка - Vhost пользователя
  • pingRate - Число - [НЕ РЕАЛИЗОВАНО][НЕОБЯЗАТЕЛЬНЫЙ]. Частота пульса

DeclareExchange - Объявить точку обмена

Параметры:

  • name - Строка - Имя exchange
  • type - Строка - Тип точки обмена. Поддерживаются "direct", "fanout", "topic"
  • onlyCheckIfExists - Булево - [НЕ РЕАЛИЗОВАНО] Не создавать новую, выбросить исключение, если такой точки нет.
  • durable - Булево - Сохранять сообщения на диске на случай рестарта RMQ (не рекомендуется)
  • autodelete - Булево - Удалить после того, как от точки будут отвязаны все очереди.

DeleteExchange - Удаляет очередь с сервера

Параметры:

  • name - Строка- Имя точки обмена.
  • ifunused - Булево - Удаление будет выполнено, только если точка обмена не используется.

DeclareQueue - Объявить очередь

Параметры:

  • name - Строка - Имя объявляемой очереди.
  • onlyCheckIfExists - Булево - [НЕ РЕАЛИЗОВАНО] Не создавать очередь с таким именем, использовать существующую
  • save - Булево - Кешировать сообщения на диске, на случай падения RMQ.
  • exclusive - Булево - [НЕ РЕАЛИЗОВАНО] Только текущее соединение может иметь доступ к этой очереди.
  • autodelete - Булево - Удалить очередь если к ней был подключен, а затем отключен читающий клиент.

Возвращаемое значение:

  • Имя очереди, заданное явно в 1-м параметре.

DeleteQueue - Удаляет очередь с сервера

Параметры:

  • name - Строка - Имя очереди
  • onlyIfIdle - Булево - Удаление будет выполнено, только если очередь не используется
  • onlyIfEmpty - Булево - Удаление будет выполнено, только если очередь пуста

BindQueue - Установить связь очереди. Создает маршрут от точки обмена до очереди.

Параметры:

  • queue - Строка - Имя очереди
  • exchange - Строка - Имя точки обмена
  • routingKey - Строка - Rлюч маршрутизации.

UnbindQueue - Отсоединяет очередь от точки обмена.

Параметры:

  • queue - Строка - Имя очереди
  • exchange - Строка - Имя точки обмена
  • routingKey - Строка - Rлюч маршрутизации.

BasicPublish - Отправить сообщение

Параметры:

  • exchange - Строка - Имя точки в которую отправляется сообщение
  • routingKey - Строка - Ключ маршрутизации (см. руководство RMQ)
  • message - Строка - Тело сообщения
  • livingTime - Число - [НЕ РЕАЛИЗОВАНО] Время жизни сообщения в миллисекундах
  • persist - Булево - [НЕ РЕАЛИЗОВАНО] Сбрасывать сообщение на диск

BasicReject - Отказывается от последнего полученного сообщения. Работает по принципу Ack, но в обратную сторону.

Параметры отсутствуют

BasicConsume - Начать чтение. Регистрирует потребителя сообщений для очереди.

Параметры:

  • queue - Строка - Очередь из которой будем читать сообщения.
  • consumerId - Строка - [НЕ РЕАЛИЗОВАНО] имя потребителя. Если не задан, то имя потребителя сгенерирует сервер и вернет из метода
  • noConfirm - Булево - [НЕ РЕАЛИЗОВАНО] не ждать подтверждения обработки. Сообщения будут удалены из очереди сразу после отправки на клиента.
  • exclusive - Булево - [НЕ РЕАЛИЗОВАНО] монопольно захватить очередь
  • selectSize - Число - [НЕ РЕАЛИЗОВАНО] количество сообщений единовременно отправляемых клиенту. Оптимизационный параметр, если > 1 усложняет программирование клиента

Возвращаемое значение:

  • Строка. Имя потребителя, сгенерированное сервером или переданное в параметре ИмяПотребителя.

BasicConsumeMessage - Получить сообщение

Параметры:

  • consumerId - Строка - [НЕ РЕАЛИЗОВАНО] Имя зарегистрированного потребителя
  • outdata - Строка - Выходной параметр. Тело сообщения.
  • timeout - Число - Таймаут ожидания сообщения в миллисекундах. 0 означает без ожидания

BasicCancel - Закрывает канал для чтения сообщений

Параметры:

  • channelId - Строка - Имя созданного ранее потребителя.

BasicAck Отсылает серверу подтверждение (ack), что сообщение обработано и его можно удалить. Подтвердить можно только последнее прочитанное сообщение.

Параметры отсутствуют

GetLastError - получает информацию о последней ошибке

Параметры отсутствуют

Возвращаемое значение:

  • Строка - Последнее сообщение ошибки

 

Наши ближайшие планы:

  • Мы собираемся поддерживать компоненту, т.к. она является частью нашего решения Адаптер
  • С точки зрения функционала ходим добавить в компоненту асинхронные методы (как в 1С), что увеличит скорость работы и немного упростит алгоритмы Адаптера

 

Как начать использовать Pink RabbitMQ:

  • Скачать демонстрационную обработку, приложенную к статье (компонента находится в ней в виде макета)
  • Скачать из репозитория исходники и воспользоваться инструкцией из readme.md

 

Интересные технические особенности:

  • Источником вдохновения послужила статья https://habr.com/ru/post/253317/
  • Сборка компоненты осуществляется как через sln проект на VS Studio 2019, так и через cmake (см. readme.md)
  • Все зависимости проекта (в частности POCO и AMQP) поставляются прекомпилированными либами для простоты сборки (поэтому репозиторий много весит, но проект собирается элементарно )

Как стать контрибьютером:

  • Репозиторий проекта https://github.com/BITERP/PinkRabbitMQ
  • Как обычно, создавайте issues, делайте форки, вносите доработки, собирайте и проверяйте компоненту и делайте пулл-реквест
  • Мы со своей стороны будем принимать пулл-реквесты после
    • прохождения проверок Sonar Cube и BDD тестами Адаптера
    • оценки соответствия предлагаемых изменений концепции/планам развития Pink RabbitMQ

 

Ждем ваших вопросов/замечаний/предложений

Вступайте в нашу телеграмм-группу Инфостарт

Бесплатно free RabbitMQ Обмен

См. также

Разработка внешних компонент Телефония, SIP Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

5246 руб.

04.05.2018    52183    128    68    

72

Разработка внешних компонент Разработчик 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

5084 руб.

12.05.2020    34937    147    100    

103

Разработка внешних компонент Инструментарий разработчика Разработчик 1С 8.3 Бесплатно (free)

Внешняя обработка проверяет выгрузку конфигурации, расширений и внешних обработок и находит места, где код руками делает то, что платформа умеет штатно: регулярки через COM, пауза пустым циклом, свой хеш и Base64, распаковка архивов программой, буфер обмена через HTML-поле. По каждой находке пишет, доступна ли замена на месте или мешает тонкий клиент.

13.10.2026    1270    144    nedomolkov.ivan    5    

22

Разработка внешних компонент Разработчик 1С:Предприятие 8 Бесплатно (free)

Нативная внешняя компонента для 1С 8 для чтения файлов Excel без установленного Excel и делает это быстро, файл 68МБ загружается в таблицу значений ~1 секунду. Компонента поддерживает чтение двух форматов: Excel 2007+ и Excel 97-2003 Формат файла определяется автоматически по сигнатуре (первые 8 байт файла), а не по расширению. Позволяет открывать XLS и XLSX файлы и получать содержимое листов в виде ТаблицыЗначений или JSON-массива.

03.07.2026    2356    skyadmin    31    

24

Разработка внешних компонент Разработчик 1С 8.3 Бесплатно (free)

В современных корпоративных решениях на платформе 1С:Предприятие 8.3 всё чаще возникает потребность в визуальном моделировании и автоматизации бизнес-процессов с использованием нотации BPMN 2.0. Стандартные средства платформы не предоставляют полноценного редактора BPMN, однако интеграция открытой библиотеки bpmn-js позволяет реализовать интерактивное моделирование бизнес-процессов непосредственно в 1С. В статье рассмотрены архитектура решения, пошаговая инструкция по сборке библиотеки из исходников для WebKit, а также примеры программного взаимодействия между 1С и JavaScript.

03.04.2026    4248    SultanovStas    8    

23

Разработка внешних компонент Системный администратор Разработчик Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    8202    bayselonarrend    17    

54

Разработка внешних компонент Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    13776    kovalevdmv    29    

84
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. barelpro 1457 29.07.19 13:37 Сейчас в теме
Когда-то это должно было случится! ) Спасибо!
lemilk; awk; zakiap; Pavl0; Gureev; maxopik2; +6 –1 Ответить
188. ignatovatn 05.01.22 11:42 Сейчас в теме
(1)Наша компания приобрела БитАдаптер. Мы должны предостеречь от покупки данного программного продукта, и, вообще, от работы с компанией ПервыйБит (по меньшей мере с командой разработчиков этого продукта). Выбирали между двумя программными продуктами - БитАдаптер и аналогичным от СильверБуллетс. БитАдаптер выбрали из-за того, что они предоставили возможность "попробовать" их компоненту. Несмотря на то, что при одном из сценариев работы она вызвала утечку памяти на сервере, мы предположили, что это была вина наших разработчиков, и при использовании коробочного продукта такой проблемы не будет.
Заключили договор и приобрели.
Дальше начались трудности. Подробнее по пунктам:
1) Отсутствие документации. Есть какая-то поделка в Конфлюенс, которая мало того, что написана очень не внятно, но и вообще относится к предыдущей версии БитАдаптера. Т.е. абсолютно бесполезна. На запрос к техподдержке (общались через Марию П.) о предоставлении актуальной версии документации, разработчики ответили, что менять документацию не планируют, и она вполне корректна.
На этапе пресейла о том, что нормальной документации не будет, мы и не догадывались. Нас уверяли в обратном. Для сравнения СильверБуллетс прислали полноценную документацию по продукту еще на этом этапе.
2) Полное отсутствие техподдержки, если нет сертификата по курсу. Например, были найдены ошибки в работе БитАдаптера, и отправлены в техподдержку. Однако, нам ответили, что рассматривать их никто не собирается.
3) Редкие обновления. Когда обнаружили ошибки в текущей версии БитАдаптера, решили посмотреть более новый релиз. Релиз не выходил год. Есть большие сомнения, что данный программный продукт реально активно кто-то использует.
4) Ужасная модель сопровождения. Условие об обязательной сертификации специалиста вместо написания нормальной доступной документации - это просто выкачивание денег из клиентов. При этом продукт-то совсем небольшой. К примеру, специалист прошедший этот курс у нас, уволился еще до сдачи "экзамена". Теперь мы должны заплатить доп. 70 тыс. за обучение нового специалиста работе с мелкой компонентной лишь для того, чтобы мы могли пообщаться с техподдержкой. Без этого все наши попытки обращения в техподдрежку не увенчались успехом.
5) Качество кода программного продукта оставляет желать лучшего. Процедуры либо вообще не задокументированы (95%), либо задокументированы очень плохо.
Дмитрий74Чел; dit_soft; baracuda; Sodrugestvo; Sergik_D; A1WEB; NikeeNik; ripreal1; +8 – Ответить
189. glebushka 276 05.01.22 19:03 Сейчас в теме
(188)
Без обид, но представьте себе ситуацию: отзыв клиента на Cessna 172. Клиент купил самолет, но нанятый "пилот", так и не сдав экзамены, уволился. "Специалисты" клиента сели за штурвал, а самолёт не взлетает, и всё наровит с ВПП выкатится. Вендор выкачивает деньги (требует курсы и корочки), в документации непонятная хрень. Открыли движок, а там вообще ужас, и ничего не задокументировано :)

Менеджером со стороны Первый БИТ был нарушен порядок отгрузки продукта. Он не имел права отгружать вам продукт в принципе (по причине отсутствия специалистов нужной квалификации).
Этого основания достаточно, чтобы получить возврат денежных средств. Если будут проблемы - напишите мне в личку (а чтобы сократить процесс, лучше сразу отправьте вместе с запросом на возврат - ссылку на это сообщение).

Далее отвечаю не для того, чтобы изменить ваше мнение (с оценками причин не соглашусь, но вывод полностью разделяю - вашей компании не стоило покупать БИТ.Адаптер). А для того, чтобы не возникло ощущения что ушел от ответа.


0. Сравнивать БИТ.Адаптер от команды БИТ:ERP и "Подсистема подключения 1С к промышленным транспортам данных" от команды Серебряной Пули (кстати, оба продукта принадлежат компании Первый БИТ) некорректно. Это продукты разного класса, и решающие разные задачи.
Вы используете понятие "компонента". Так вот, в случае БИТ.Адаптер - компонента вообще распространяется нами бесплатно - https://github.com/BITERP/PinkRabbitMQ, в случае продукта Пули - компонента закрыта, но является только лишь одной из целого набора.
Более того, вы можете даже захотеть использовать БИТ.Адаптер вместе с компонентой Пули (и это даже у вас получится). Зачем так можно захотеть не буду углубляться, это редкий случай, но возможный.
1. Пришлите мне, пожалуйста, ответ разработчиков в личку о корректности документации. Дело в том, что я владелец продукта, и, по идее, знаю всех разработчиков продукта. Вы точно вели диалог с разработчиками?
2. Да, без сертификата нет ни отгрузки, ни поддержки, ни обновлений (мы категорически против установки обновлений специалистами без действующего сертификата).
3. По обновлениям ответил выше.
4. Да, по сопровождению всё верно отметили. К сожалению, что-то пошло не так (с), и вы узнали об этом после покупки продукта. А должны были до.
5. Обсуждать качество кода не готов. Но вам завидую, если вы работаете с продуктами и проектами, где код лучше, чем в Адаптере.

Резюме:
БИТ.Адаптер это крутой, но "нишевый" продукт, предназначенный для небольшого сегмента рынка. На массовый рынок он не рассчитан. Для широких народных масс он не только "ужасен", но и опасен (опять аллегория с самолётом).
Jokemas; KUAvanesov; barelpro; +3 –3 Ответить
190. ignatovatn 06.01.22 14:02 Сейчас в теме
(189) Пример с самолетом красив и образен, но неуместен. Мы не самолет запускаем, а наши специалисты не являются неучами из дальних краев. Мой отзыв написан не с целью получить от Вас оценку своим действиям, а с целью предостеречь от возможного приобретения подобного программного продукта других.. Если бы мы прочли подобный отзыв ранее, то была бы возможность проанализировать и обратить внимание на некоторые вещи, чего, к сожалению, мы не сделали. А Вам стоило бы сделать акцент на "были найдены ошибки в работе БитАдаптера, и отправлены в техподдержку. Однако, нам ответили, что рассматривать их никто не собирается". Вот это по-настоящему важно.
А уж слова про нишевый продукт и широкие народные массы в качестве резюме выглядят, уж извините, вообще некрасиво.
Sodrugestvo; NikeeNik; KilloN; dm1try; ripreal1; +5 – Ответить
2. Evil Beaver 8429 29.07.19 14:22 Сейчас в теме
Вот так придумаешь на внутреннем совещании звучное название, напишешь компоненту, научишь людей Кролику, а они тебе за это сравнение производительности не в твою пользу, плагиат-троллинг названия, скопированный 1-в-1 API (который ты мучился сочинял, чтобы удобно было) и даже никаких спасибо. Ну бывает, чего. Не любят у нас в отрасли спасибо говорить.
Sodrugestvo; paybaseme; i.kovtun; kolya_tlt; skeptik2105; propellerads; ZeratulAyuris; ZhdanovR; Bronislav; johnnyshut23; zurapa; JohnyDeath; philya; alexey.karmanov; 🅵🅾️🆇; Scorpion4eg; new_user; Soloist; ingmar; sm.artem; 9-pm; YPermitin; vandalsvq; testnv0; dmpas; ArchLord42; acanta; Infactum; artbear; +29 –3 Ответить
3. Begemoth80 448 29.07.19 14:48 Сейчас в теме
(2)
а они тебе за это сравнение производительности не в твою пользу


Почему? Я же явно пишу в разделе "Простой синтетический тест" что Желтый кролик в 1,5 раза быстрее?
7. Evil Beaver 8429 29.07.19 16:03 Сейчас в теме
(3) А в соседнем - не пишете :)

Конкуренция это хорошо. Выпустить бесплатный продукт, вытесняющий с рынка Пулю (или любого другого вендора) - это нормально, это даже хорошо, конкуренция развивает. А вот перевирать названия - плохо.

Представьте, что кто-то начал выпускать автомобили FasterAudi с четырьмя кольцами по кругу или компьютеры GreenApple, где яблоко не откушено. Какое ощущение возникает? Кроссовки Abadis! С соответствующим отношением.
new_user; +1 – Ответить
10. Begemoth80 448 29.07.19 16:21 Сейчас в теме
(7)
А в соседнем - не пишете

Цитирую соседний раздел "по этому пока мы не считаем меньшую производительность Pink RabbitMQ проблемой"

перевирать названия

Pink - один из наших корпоративных цветов
RabbitMQ - стандартная часть названия, указывающая с кем обмениваемся
11. Evil Beaver 8429 29.07.19 16:22 Сейчас в теме
(10) Ой, блин, ну продолжайте делать вид, что названия вообще никак не коррелируют в семантике
Дмитрий74Чел; new_user; berezdetsky; nvv1970; +4 –1 Ответить
41. theshadowco 270 30.07.19 16:28 Сейчас в теме
(10)
RabbitMQ - стандартная часть названия, указывающая с кем обмениваемся

(10) В поддержку названия (и только его) посмотрите на github https://github.com/search?p=5&q=RabbitMQ&type=Repositories
4. Gureev 29.07.19 15:32 Сейчас в теме
(2) Сейчас спасибо говорят на гитхабе. Учтите на будущее ;)
5. Tahallus 441 29.07.19 15:36 Сейчас в теме
(2)
даже никаких спасибо. Ну бывает, чего. Не любят у нас в отрасли спасибо говорить

Андрей, не обижайся на меня, но я вот заметил ты часто пишешь про это, как будто обижен, все лавры достаются всем кроме тебя.
Все друг друга копируют таков сейчас мир, это не хорошо и не плохо. Такое чувство что при каждом упоминание 1С+RabbitMQ нужно писать/говорить спасибо.
Jokemas; Droonimus; Irwin; chemezov; lunjio; A_Max; Gorus; user774630; Aptem199; eleva; Gureev; +11 –1 Ответить
6. Evil Beaver 8429 29.07.19 15:59 Сейчас в теме
(5) Нет, это не обида и не жажда славы (у меня ее хватает и так), но я, возможно, так воспитан, что считаю нормой выражать признательность тем, у кого я учился или тем, кто как-то иначе мне помог. Если я что-то публикую, то считаю нормой упомянуть как минимум источники, на которых основывался.

Здесь я среагировал тон статьи, название, основанное на названии конкурирующего продукта и увидел выделенные жирным цифры производительности. Это все в совокупности выглядит, как "а мы на*бали серебряную пулю, мы молодцы".

Скажем, если бы статья называлась "MegaRMQ - Бесплатный клиент RabbitMQ для 1С" и предлагаемое API было бы отличным от YellowRMQ - вообще никаких вопросов.

А здесь - прямое копирование с целью заменить и никакого стеснения перед авторами: да, чуваки, мы взяли ваше API, вашу работу по популяризации кролика, даже ваше название, но ничего личного, just business.
Sodrugestvo; bladeson; troubleshooter; new_user; YPermitin; berezdetsky; mvxyz; artbear; +8 –1 Ответить
8. Tahallus 441 29.07.19 16:10 Сейчас в теме
(6) славы у тебя хоть отбавляй и знающие люди понимают с кого началось движение, клиентов думаю они у вас не сильно отберут, все таки больше покупают опыт чем команду в придачу к инструменту. С названием они конечно переборщили согласен. На счет API, опять же это у все так, возьми amazon и их api, почти все взяли чтобы конкурировать в облаках, и чтобы для конечного пользователя переход был менее болезненным.
A_Max; Gorus; izidakg; +3 – Ответить
9. Evil Beaver 8429 29.07.19 16:20 Сейчас в теме
(8) Ну, во-первых, клиентов отберут не у меня, я не работаю в SB. Согласны, что с названием переборщили, и то ладно. И все-таки, в посте, о том "как мы сделали аналог платного продукта" я ожидал увидеть хотя бы минимальный обзор этого продукта и хоть какой-то tribute.
12. Begemoth80 448 29.07.19 16:23 Сейчас в теме
(9)
я ожидал увидеть хотя бы минимальный обзор этого продукта


В статье содержится 3 прямые ссылки на Yellow RabbitMQ (в самых первых разделах) и по тексту он упоминается несколько раз
13. Evil Beaver 8429 29.07.19 16:29 Сейчас в теме
(12) ну блиин, вы серьезно считаете "упоминание" и "обзор" синонимами?
14. Begemoth80 448 29.07.19 16:40 Сейчас в теме
(13)
Возьмем к примеру ПароВоз и ТеплоВоз.
Кажется что:
1.То что в этих словах часть слова одинаковая не является проблемой или перевиранием названия
2.В статье на WiKi про ТеплоВоз не должно быть обзора ПароВоза, но должна быть на него ссылка
Irwin; pfilyk; +2 – Ответить
15. Evil Beaver 8429 29.07.19 16:49 Сейчас в теме
(14) вы сейчас на какую мою фразу отвечаете? Если вверх по ветке переписки, то в этой ветке нет ничего про названия, эта ветка про обзор.
18. Begemoth80 448 29.07.19 17:11 Сейчас в теме
(15) я отвечаю на фразы из (13) и (11) одним примером
16. oleg-x 24 29.07.19 16:49 Сейчас в теме
(14) С названием продукта все очень сложно. Например попробуйте выпустить свой продукт (компьютер/планшет/телефон/часы и прочие технологические продукты) с названием Apple, налетят юристы и начнут судится, за плагиат торговой марки.
24. Begemoth80 448 29.07.19 19:49 Сейчас в теме
(6)
название, основанное на названии конкурирующего продукта


Мне кажется что компонента PinkRabbitMQ не является конкурентом продукту Yellow RabbitMQ, также, как она не является конкурентом нашему же продукту Адаптер(иначе мы бы ее не публиковали, так ведь?).

Компонента - это всего лишь компонента (обертка над типовой библиотекой), а "Подсистема Yellow RabbitMQ содержит в себе высокоуровневые абстракции для наиболее распространенных схем" (цитирую из статьи по ссылке).

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


С другой стороны чем больше людей познакомятся с новой технологией, тем лучше (а открытый код компоненты этому способствует)
Shmell; Irwin; chemezov; A_Max; izidakg; Aptem199; Gureev; +7 – Ответить
57. minimajack 82 31.07.19 13:38 Сейчас в теме
Вот не понимаю я SB.

(2)
на утреннем совещании звучное название, напишешь компоненту, научишь людей Кролику, а они тебе за это сравнение производительности не в твою пользу, плагиат-троллинг названия, скопированный 1-в-1 API (который ты мучился сочинял, чтобы удобно было) и даже никаких спасибо. Ну бывает, чего


Я бы еще понял претензии если бы вы компоненту писали работая в первом бите...а так либо работая в SB или по заказу SB.

Давайте трезво:
- Сравнение производительности - еще осталось добавить "ЗАПРЕТИТЬ ВЫКЛАДЫВАТЬ РЕЗУЛЬТАТЫ ЛУЧШЕ ЧЕМ ХХХХХХ"
- SILVER BULLETES - хм...тоже цвет первый, совпадение....а давайте Yellow (желтая программа 1С) и RabbitMq сольем...вот круто будет! УНИКАЛЬНОСТЬ прям 100-го левела.
- Написали обертку на популярную, или как нынче можно говорить - ХАЙПОВУЮ, технологию. Ну уж ampq-либы явно не сами писали. Как там в комплекте с поставкой от SB лицензии на opensource либы прикладываются?
- Что то нет в опенсорсе "yellow rabbitmq" за что спасибо?
- Спасибо за обучение технологией которую сами же и впариваете, REALLY?

з.ы. Без обид парни...не храните все яйца в одной корзине. Я понимаю бизнес-шмизнес, но к такому надо быть готовым.
з.з.ы. сори за срач не по теме
embarcadero; starik-2005; izidakg; Dach; Irwin; pfilyk; lunjio; zurapa; sashocq; +9 – Ответить
68. zurapa 01.08.19 10:11 Сейчас в теме
(57) А, вот, аргументированно даже. Вовсе не срач! Просто правда с говницом в лицо. Я это люблю.
Вот, если у жёлтокролика не открыт код, то тогда действительно уже спасибо не за что говорить. Концепции все друг у друга перенимают, и как бы на это не стоит залупаться. Другое дело если код скопировали в чистую и не упомянули, тогда да. А API, я правильно понимаю, это набор команд к сервису, чтобы с ним общаться. Его для того и делают похожим максимально на аналогичную технологию, чтобы пользователям удобно было переходить - есть такое выражение - удобство пользователя.
Бывает же так, что создатель продукта выбрал не ту технлогию, не тот язык и повесил свою идею на не совсем эффективные технологии. Почему нельзя скопировать идею и сделать аналогичное на другом, быть может даже более эффективном? Кому от этого плохо стало? При том, что в историю вы уже записаны, а на другие языки это же переписывать вам лень, ибо сейчас интересно другое.
Разработчики как дети - Не играй в мою машинку пусть лежи. Я ей тоже играть не буду, но пусть лежит, я сказал!
17. vandalsvq 1757 29.07.19 17:10 Сейчас в теме
А что с БИТ случилось? Я что-то пропустил и они начинают превращаться в корпорацию "добра"?
Или стартапу БИТ:ERP вдруг дали немного больше привилегий, чем остальным?
smirnov.es; glebushka; berezdetsky; +3 –1 Ответить
23. Tahallus 441 29.07.19 19:31 Сейчас в теме
(17) БИТ вообще волшебная компания, сотрудник БИТ-а чтобы обучиться БИТ:Адаптер должен сам заплатить деньги в размере 50к, внезапно )), так что похоже на чье-то несогласованное действие. Предвижу что либо удалять все это, либо больше не будут обновлять репозиторий.
25. Begemoth80 448 29.07.19 19:51 Сейчас в теме
(23)
ибо удалять все это


Как можно удалить опубликованный и 7 раз "форкнутый" репозиторий? ;-)
27. Tahallus 441 29.07.19 20:26 Сейчас в теме
(25) не так выразился бро, удалять статью и обсуждение, забросят репозиторий.
29. Begemoth80 448 29.07.19 20:44 Сейчас в теме
(27)
удалять статью и обсуждение, забросят репозиторий


Зачем? Я вроде попытался описать нашу мотивацию в статье и в этом комментарии (24).

Т.е. это не баг, это фитча :-)

И да, мы ожидаем, что в результате публикации компоненты https://github.com/BITERP/PinkRabbitMQ придут разработчики, и помогут сделать ее лучше
chemezov; +1 – Ответить
30. Begemoth80 448 29.07.19 20:48 Сейчас в теме
(27)
удалять статью и обсуждение


Зачем? Я вроде в статье и в комментарии (24) попробовал описать нашу мотивацию.

Т.е. это не баг, это фича :-)

И да, мы заинтересованы в том, чтобы на GitHub в репозиторий компоненты пришли разработчики, и помогли сделать компоненту лучше.
chemezov; zurapa; +2 – Ответить
26. glebushka 276 29.07.19 20:13 Сейчас в теме
(23)
(17) БИТ вообще волшебная компания, сотрудник БИТ-а чтобы обучиться БИТ:Адаптер должен сам заплатить деньги в размере 50к, внезапно )).


Это сейчас было сугубо для пущего эпатажа? Если нет, прошу сообщить (можно в личку) конкретику: кто, когда, кому и при каких обстоятельствах в компании Первый БИТ предложил курс сотруднику за 50 тыс. руб.?
Сотрудникам компании офисом-разработчиком (БИТ:ERP) предоставляются скидки для повышения квалификации, и по имеющейся практике офисы, где работает сотрудник, компенсирует затраты на обучение и сертификацию по БИТ.Адаптер вплоть до 100% от стоимости (но это зависит от офиса, сотрудника и его руководства).
28. Tahallus 441 29.07.19 20:28 Сейчас в теме
(26) И правда попутал, БИТ стал великодушен и для собственных холопов сделал скидку.
Прикрепленные файлы:
tolyan_ekb; Sodrugestvo; ubnkfl; triviumfan; zurapa; user774630; +6 –2 Ответить
32. TODD22 20 29.07.19 21:48 Сейчас в теме
(28)
И правда попутал, БИТ стал великодушен и для собственных холопов сделал скидку.

Скоро придётся доплачивать за работу в БИТе:
-Вам выпала великая честь работать в нашей компании, с нашими отраслевыми продуктами, с вас 50 тыс руб в месяц и на работу просим не опаздывать.
ubnkfl; chemezov; zurapa; izidakg; +4 –2 Ответить
37. qwed557 30 30.07.19 12:44 Сейчас в теме
(28) И правда волшебная контора, своих же сотрудников для работы со свей же разработкой обучать за деньги сотрудников.
ubnkfl; chemezov; zurapa; +3 –2 Ответить
110. mpeg1989 135 31.10.19 15:24 Сейчас в теме
(28) Ребят, вы не вникаете в тему, потом говорите. Как старухи на заваленке, чесслово. Как сотрудник бита, который прошел данный курс, могу заявить, что мне это не стоило ни копейки, если не пересчитывать время, потраченное на подготовку, в деньги по стоимости часа. Вся данная фишка заключается в возможности подсчета эффективности/прибыльности филиала.
73. 1cembreg 25 01.08.19 12:45 Сейчас в теме
(17) Корпорация добра? Нет, не про них. Сам Адаптер как то "внезапно" со 150 подорожал до 200, плюс агрессивно навязывается недешевый саппорт. Ах вы купили год назад и не оплатили саппорт? Ну бывает. Надумали внедрять? Ну, хорошо. Оплатите саппорт за то время, которое не платили и ещё купите годик, будем разговаривать. Комплект поставки адаптера вообще за гранью, это конвертик с лицензией. Всё! Т.е за эти бабки мы даже инструкции "В бумаге" не получили
ZDmitry83; +1 – Ответить
79. glebushka 276 01.08.19 14:14 Сейчас в теме
(73)
Приношу извинения. Скорее всего вас неверно информировали. У нас изменилась не только цена. Было введено требование обязательного наличия квалифицированного специалиста в команде внедрения/поддержки.
Мы не сможем у вас принять деньги за саппорт. Поскольку, как я понял из вашего сообщения, у вашей компании нет специалиста с действующим сертификатом "БИТ.Профессионал по интеграции".Это сейчас проверяется при каждой отгрузке. Поэтому если сертификата на этапе отгрузки не окажется, то мы возвращаем деньги (без отгрузки). Обратите внимание, чтобы не терять время.

PS. Прошу вас написать в личку рег. номер и имя менеджера, который вас консультировал, мы проведем работу, чтобы ситуация не повторилась.
80. vandalsvq 1757 01.08.19 14:50 Сейчас в теме
(79) т.е. надо ещё м сертифицировать своего сотрудника чтобы с БИТ работать? А затраты на сертификацию бит компенсирует?
ZDmitry83; +1 – Ответить
82. glebushka 276 01.08.19 16:33 Сейчас в теме
(80) Нет, не компенсирует. Стоимость обучения и сертификации специалиста здесь: https://bit-erp.ru/adapter#edu
86. 1cembreg 25 02.08.19 16:04 Сейчас в теме
(79) Это достаточно новая инициатива, на момент покупки нами адаптера таковой не было. То есть, получается что затраты на Адаптер сейчас составят 200 тысяч за конвертик с лицензией, 50 тысяч за доступ на месяц к курсам (эффективность их и наполнение под большим вопросом) и 20 тысяч за сертификат специалисту, заплатить 67 тысяч за обновление и каждый год потом ещё оплачивать 67+20 (обновления плюс подтверждение сертификата). Не знаю как у вас, но у меня перед глазами стоит Золотая антилопа.

А нет ли лёгкого диссонанса с утверждением:

Мы продаем решение, которое состоит из коробки, готовых шаблонов интеграций между популярными системами и курсом (с сертификацией) для специалистов заказчика. По практике спец, который ранее занимался обменами на КД2/3 в течение недели начинает делать обмены на БИТ.Адаптер, в течение двух недель скорость разработки интеграций становится не меньше чем раньше, а в течение месяц интеграции разрабатываются быстрее. При этом сообщения мелкие, передаются часто, доставляются быстро и надежно. Разница очевидна при этом не только спецам, но и конечным пользователям.


Фирма же, которая по новым правилам приобрела Адаптер, купила доступ на месяц к курсам и провела сертификацию специалиста, при увольнении данного специалиста получает неработающий немасштабируемый блок, сравнимый по стоимости с ERP

Нет у вас "коробки", не вводите людей в заблуждение. По крайней мере не было год назад. Есть бумажка с лицензией, пара ссылок на Confluence и файлик с внешней обработкой, всё. "Коробочный" продукт в понимании человека, который выделил на данный "прожект" деньги это сущность, позволяющая сотруднику с определенным опытом работы, но без опыта работы с "кроликом" через неделю после покупки выдать MVP.

Ну это если вынести за скобки фактическую функциональность Адаптера, особенно если попробовать реализовать на нём "из коробки" обмены типовых конфигураций. не относящихся к "Большой тройке"

Вы молодцы, тут вопросов нет, светлые головы, жадные до денег, вот только денег вам дарить больше не хочется, лучше дождаться когда 1С в типовых добавить "обмен через кролика" и мне всё равно чью внешнюю компоненту они возьмут за основу, из данного топика или "ту, другую"
ZDmitry83; berezdetsky; +2 – Ответить
90. glebushka 276 03.08.19 22:24 Сейчас в теме
(86)
Вы, в целом, корректно описали состояние БИТ.Адаптер по состоянию на год назад: это была подсистема, которая имела сложную структуру, имеющая поддержку обмена разными форматами несовместимыми друг с другом, и поддерживающая, помимо прочего веб-сервисы. При этом имеющая высокий порог вхождения. В тот момент покупали систему или наши клиенты в рамках проектов, или "энтузиасты", которые в любом случае хотели перевести интеграции на событийную модель, и для многих наших ранних покупателей это, действительно, позволило сократить затраты и ускорить выпуск MVP.

Но для массового рынка продукт был не готов, и, кажется, мы вовремя поняли это и внесли соответствующие изменения:
1. Разработали интерактивный курс обучения и аттестации в виде выполнения практического задания и собеседования с экзаменатором в режиме телеконференции
2. Экзамены принимают исключительно сами разработчики продукта (это позволяет им быть как можно ближе к рынку, а студентам получить ответы на вопросы в контексте конкретной ситуации в их компании)
3. После экзамена у студентов остается на весь срок действия сертификата доступ в закрытый канал Slack, где они могут задавать вопросы и советоваться по сложным случаям напрямую с разработчиками продукта (с одним из которых "познакомились" на аттестации)
4. Сам продукт претерпел существенные изменения: количество опций в интерфейсе радикально сократилось, при одновременном увеличении числа сценариев интеграции, поддерживаемом из коробки
5. В продукт постоянно добавляются новые шаблоны интеграции (в котором аккумулирован наш проектный опыт), а курс - постоянно дорабатывается, с большими обновлениями каждый квартал
6. Именно прямая обратная связь непосредственно от разработчиков на конкретных внедрениях позволила нам уверенно отказаться от части неиспользуемого кода, а также добавить в продукт недостающий функционал (например, в ближайшее время в бит.адаптер будет добавлен функционал, который позволит выбирать между JSON/xml, при этом сохранив обратную совместимость. Это мы делаем, так как оказалось, что БИТ.Адаптер оказался очень популярным решением для реализации интеграции с веб-сайтами (битрикс, битрикс 24, atlassian и т.п.).
7. Последние два двухнедельных спринта идет рефакторинг кода, поскольку по обратной связи от студентов стек вызовов был слишком запутанный и, иногда, нелогичный. Использование CI-контура позволяет нам быть уверенными в минимизации числа проблем у наших клиентов, связанных с этой работой
8. Наконец, мы приняли коммерчески спорное решение: запретить продажи клиентам, у которых нет специалиста с действующим сертификатом БИТ.Адаптер.

Что касается вашего расчета стоимости - там есть неточности. С одной стороны, стоимость курса включает одну попытку сдачи, с другой - мы категорически рекомендуем через год оплатить заново обучение: это точно будут совершенно другой курс и продукт :)

PS. Я очень сожалею что у вас есть негативный опыт использования ранней версии БИТ.Адаптер. В качестве компенсации могу предложить следующее: вам (или вашему специалисту) мы дадим доступ к курсу и сертификации бесплатно. В случае успешной сдачи экзамена, и вашей заинтересованности, мы "простим" пропущенные периоды обновления, предоставив вам возможность, оплатив обновления, получить новую версию продукта и получать обновления в течение года. Уверен, что пройдя курс вы измените свое отношение к продукту.
Если актуально - прошу написать в личку ваши контакты для связи, а также рег. номер и дату покупки БИТ.Адаптер.
93. 1cembreg 25 05.08.19 14:38 Сейчас в теме
(90) "Сообщение не отправлено, отложенная группа", что бы это ни значило. ник в Tg @Kembreg
19. ZLENKO 398 29.07.19 17:52 Сейчас в теме
Ждем реализацию вендором протокола AMQP :-)
dmitryada; +1 – Ответить
20. Begemoth80 448 29.07.19 18:15 Сейчас в теме
(19) А чем это будет лучше/полезней чем компонента с открытым исходным кодом (кроме маркетинга)?
Т.е. если посмотреть код компоненты, то никакой "хитрой" логики там нет, это всего-лишь небольшая надстройка над типовой библиотекой AMQP-CPP для взаимодействия с 1С.
Что бы 1С могла туда полезного добавить с точки зрения функций или технологий?
chemezov; +1 – Ответить
21. TODD22 20 29.07.19 18:20 Сейчас в теме
(20)
Что бы 1С могла туда полезного добавить с точки зрения функций или технологий?

Поддержку из коробки, без всяких компонент.
izidakg; ZLENKO; +2 – Ответить
22. Begemoth80 448 29.07.19 19:05 Сейчас в теме
(21) А чем поддержка
из коробки, без всяких компонент
лучше чем внешняя компонента с открытым кодом?
Т.е. с точки зрения кода 1С отличие в 2 сточках, где подключается компонента.
31. TODD22 20 29.07.19 21:39 Сейчас в теме
(22)
лучше чем внешняя компонента с открытым кодом?

А чем хуже?
33. Begemoth80 448 29.07.19 21:51 Сейчас в теме
(31) На мой взгляд особой разницы нет, по этому будет сложно просить
реализацию вендором протокола AMQP
45. leemuar 63 30.07.19 18:47 Сейчас в теме
(33) ЕМНИП внешние компоненты не умеют работать с коллекциями (массивы, структуры) и другими встроенными объектами (потоки, например). Это не всегда удобно
64. Begemoth80 448 01.08.19 07:23 Сейчас в теме
(45) Ну вроде в нашем конкретном случае это не является проблемой.
Кажется, что проблема обходится, если вместе с компонентой делать некий общий модуль-обертку, в котором "спрятаны" подобные особенности. А функции этого модуля если смотреть "снаружи" уже не имеют таких ограничений.
70. zurapa 01.08.19 10:31 Сейчас в теме
(45) Зачем в 1С весь сброд тащить. Компоненты весьма приемлемая вещь, если она не в особом ходу. Кому кролик нужен? Покажите пальцем. Просто чтобы погонять? Или действительно нужен?

Давайте начнём с того, что до кучи разработчиков обмены делают на файловых шарах. Вот так вот просто берут, шарят папку, в неё выгружают, а потом другим сервером это забирают. И всё бы ништяк, но они это делают и на сильно удалённых друг от друга системах, да ещё и по слабым каналам связи, а потом залупаются, что обмен херовый в 1С. И им даже не в домёк это делать хотя бы по почтовому протоколу. Вообще в принцыпе на слабо нагруженных системах, ну или так, не сильно нагруженных системах, можно справится и почтовым транспортом, который в том числе есть и в кролике, но нам нужен кролик. Нахера нам стандартный почтовый протокол и умение 1С работать с SMTP?!

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

Вот склонение правильное фраз весьма было бы полезно, но его тоже не запихивают в 1С, ибо склонять всё равно всё не получится правильно и придётся допиливать и придумывать костыльные решения (язык у нас такой), а быстродействие можно ещё существенно посадить и ещё и поддерживать же это нужно, отлаживать, чтобы на каждое замечание исправить...
А потом когда мы в другую страну пойдём, то и под другой язык нужно будет это пилить, чтобы не было так, что для одного языка у нас всё есть, а для вашего нет, используйте костыли...

Вот веб-сервер строить в 1С, наверное полезно будет, чтобы не мыкаться с апатчами, при том, что веб-сервер, прям, очень в ходу в 1С.
DSergunov; +1 –2 Ответить
75. Rashid80 33 01.08.19 13:54 Сейчас в теме
(71)
Если это ответ мне то я прекрасно знаю как работает кролик ибо использую его в других языках. Именно поэтому я и удивился как они скрестили обмен и кролика. По факту это просто rpc.
Прежде чем рвать тельняшку и доказывать очевидное можно выдохнуть и спросить
81. zurapa 01.08.19 15:48 Сейчас в теме
(75) Из вопроса было понято, что вы пытались запихать туда большое. А это только могут делать те, кто не знает особенностей, поэтому меня тут прорвало.
Если вы это знаете, то могли бы намекнуть как-то в своём сообщении. Забавно же получилось в примером, про "срать ракетами"?.. ;)
Не обижайтесь. Этим своим ответом вы полностью реабилитировались. А я получил возможность в несколько юморной форме подчеркнуть особенность кролика для тех, кто не в теме, но по каким-то причинам читает эти комментарии.
Мир вам.
83. Begemoth80 448 01.08.19 16:34 Сейчас в теме
(75)
По факту это просто rpc

Уточните пожалуйста, что вы здесь имеете в виду?

Что кролика можно использовать только для реализации RPC (remote procedure call) и нельзя/не эффективно использовать для передачи данных (даже если это просто информация о событии, например Создан контрагент ООО "Молоко")?
36. Begemoth80 448 30.07.19 11:39 Сейчас в теме
(19) (21) Мы опубликовали вопрос платформе https://partners.v8.1c.ru/forum/topic/1846210
34. Rashid80 33 30.07.19 01:16 Сейчас в теме
"В рамках теста из базы УТ10.3 в базу ERP переносился 1241 документ и проводился в ERP (реализации товаров превращались в поступления)
...
План обмена из БСП в формате КД2"

Не понятно - вы гоняли тяжелые XML через кролик или что? В чем заключается обмен с помощью кролика?
35. Begemoth80 448 30.07.19 06:32 Сейчас в теме
(34) Обмен с использованием Pink RabbitMQ и Yellow RabbitMQ выполняется с помощью Адаптера, там свой достаточно легковесный формат (в принципе у нас есть в общедоступной документации, но могу отдельно про него написать). Данные передаются через кролика.

Обмен "из БСП в формате КД2" выполняется через файлы (т.е. "типовой обмен", кролик тут не участвует)
59. mybracho 31.07.19 15:31 Сейчас в теме
(35) Где почитать про ваш внутренний легковесный формат?
60. Begemoth80 448 31.07.19 15:37 Сейчас в теме
71. zurapa 01.08.19 10:34 Сейчас в теме
(34) Мужик! Это просто жесть! Ты когда берёшь технологию, ты хотя бы посмотри чуть-чуть видосики от разрабов объясняющие, как это рабтает и для каких целей. Везде где говорят о кролике, говорят о том, что он для мелких порций данных но очень частых. Большое в него сувать - это как пытаться срать ракетами - будет очень больно и смертельно даже. Не спрашивай такие вещи! Их даже читать не нужно, об этом рассказывают!..
38. Gureev 30.07.19 13:06 Сейчас в теме
Сделать открытый продукт и выложить исходники это гораздо круче, чем написать тулзу за деньги, и это достойно уважения.
Не слушайте завистников и злопыхателей.

Комерсы всегда будут втыкать палки в колеса технического прогресса.
Dach; Irwin; chemezov; sashocq; eleva; ripreal1; alprk; izidakg; Aptem199; +9 –4 Ответить
39. artbear 1590 30.07.19 14:33 Сейчас в теме
(38) Коллега, Вы бы почитали (2) (6) (8) и задумались, что, возможно, ситуация с "новым" продуктом все-таки сильно (!) отличается от простого "Сделать открытый продукт и выложить исходники" :(
berezdetsky; +1 – Ответить
40. Gureev 30.07.19 15:01 Сейчас в теме
(39) Я все прочитал.
Воровство кода доказано? - Нет.
Название? - Я думаю Битлз были первыми.
API? - Ну логично, что будет что-то совместимое. Программист же не идиот, делать несовместимый продукт с написанной инфраструктурой.

Я помню ситуацию с маней, когда кто-то написал аналог его супер-пупер "продукта", сколько было вони.
А потом как маню феерично выпилили с ИС из-за жадности.
Rjhev; chemezov; eleva; Gorus; glebushka; +5 –2 Ответить
48. Evil Beaver 8429 31.07.19 07:42 Сейчас в теме
(40) воровства кода нет. Я даже посмотрел в код - написано очень по 1совски "в лоб". Даже кажется знаю почему оно медленнее. Омнокод.

И вообще, воровство в IT плоходоказуемое, ибо это на 80% идеи и лишь на 20% код.

Еще раз повторюсь: сделать конкурирующий продукт это нормально. Сделать его бесплатным - нормально. В чистую содрать АПИ (недореализовав heartbeats, потому что ниасилили) и поведение, накрыв это ёрничающим названием - некрасиво. Просто некрасиво. Но легально
ZDmitry83; chemezov; artbear; +3 –1 Ответить
49. genayo 31.07.19 07:58 Сейчас в теме
(48) С названием несколько промахнулись, белый кролик имело бы намного более глубокий подтекст :))
54. glebushka 276 31.07.19 12:07 Сейчас в теме
(49) это имя уже занято в 2012 году: https://github.com/kakaranet/white_rabbit :) Причем там практически все варианты сочетаний с белым есть.
66. Begemoth80 448 01.08.19 08:04 Сейчас в теме
(48)
Даже кажется знаю почему оно медленнее. Омнокод.


Подскажите пожалуйста, "куда копать" (мы не большие специалисты в с++)?

Кажется для партнеров было-бы очень полезным, если бы в компоненте не было явного Омнокода, который к тому-же влияет на ее работу (а именно на производительность)
67. Evil Beaver 8429 01.08.19 09:28 Сейчас в теме
(66) Ну не, посоны, давайте сами и без обид.
ZDmitry83; ZhdanovR; +2 – Ответить
42. izidakg 174 30.07.19 17:07 Сейчас в теме
Сейчас мало кто выкладывает исходный код, даже уже "устаревших" решений и уже поэтому автору спасибо, а учитывая актуальность темы - СПАСИБО
Если получится, с большим удовольствием поучаствую хотя бы в тестировании.
Что касается благодарности, то как понимаю вопрос не в отсутствии, а качестве))) Ну а по претензии что API 1-в-1 вопрос: кто помнит про такое понятие как СТАНДАРТЫ, ГОСТ? В конце концов даже в публикации от Yellow RabbitMQ есть раздел "Без имени нет предмета".
Получается при желании разработать свой продукт, разработчик должен придумать все свои наименования объектов, команд? Возможно есть ситуации где это реально необходимо, но в большинстве случаев это глупость мешающая развитию.
А в целом статья Yellow RabbitMQ мне очень понравилась, для важно было подробное описание элементарных вещей, жаль нет возможности поработать с компонентой без оплаты. Эта статья по сути как продолжение, что-то вроде технического описания с приложенным функционалом для работы
46. Begemoth80 448 30.07.19 20:08 Сейчас в теме
(42)
Если получится, с большим удовольствием поучаствую хотя бы в тестировании.


Да, вы бы могли очень помочь проекту.

Сейчас у нас выполняется автоматическое тестирование сборок компоненты с использованием ADD (он тоже есть на GitHub, его делает Артур, он тоже участвует в этом обсуждении).

ADD нам полностью подходит, но сама проверка выполняется на тестах Адаптера.

Т.е. мы автоматически заменяем компоненту на новую сборку в Адаптере, и прогоняем на нем функцональные тесты (результат в виде бэджика в репозитории)

С точки зрения проверки, что ничего не сломали, это хорошо, но мы не можем отдать эти тесты партнерам, а хотелось бы, чтобы они сами могли тестировать свои доработки в компоненте.

Т.е. для того, чтобы все кто скачивает компоненту могли ее доработать и сами проверить, что ничего не сломалось, нужно:
1. Разработать некий минимальный (но полный) набор BDD тестов которые проверяют именно работу компоненты, например используя ADD
2. Включить эти тесты в репозиторий PinkRabbitMQ

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

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

Мы чуть позже выложим в репозиторий файлик CONTRIBUTING.MD в котором опишем правила, как можно вносить изменения в репозиторий. Но если вам интересна такая задача, то можно прямо сейчас начать с создание соответсвующей issue в репозитории.
52. ripreal1 626 31.07.19 09:42 Сейчас в теме
(46) О том как поучаствовать в проекте см. файл CONTRIBUTING.MD
62. Evil Beaver 8429 31.07.19 17:41 Сейчас в теме
(42) демо-версия YRMQ бесплатная, насколько я знаю.
96. Alex_Smolensky 115 07.08.19 19:05 Сейчас в теме
(62) может она бесплатная для избранных. Мне не удалось достать ни демо-версию ни описание к ней ни через сайт ни через телефон.
43. hawk911 30.07.19 18:05 Сейчас в теме
Представители Пули не возмущаются, значит они в курсе - а возможно, продали данный продукт... а БИТ пиарится.
44. artbear 1590 30.07.19 18:08 Сейчас в теме
(43) Представители Пули "офигели" от такого "нахальства коллег" :(

Андрей как автор кода выше уже отписался, например, смотри (2) (6) (8)
Я как человек также участвовавший в проекте Желтого Кролика, с ним абсолютно согласен.
47. hawk911 31.07.19 03:52 Сейчас в теме
(44) тогда, да - некрасиво получается.
50. izidakg 174 31.07.19 08:50 Сейчас в теме
(44) и все таки кто-то чего-то не договаривает и под "нахальства коллег" похоже имеется что-то другое, а не описанное в постах (2) (6) (8)
про использование API 1-в-1 даже в (8) написано что это норма, продуктов похожих\идентичных много и требовать другие наименования команд глупо.
еще хотя основная мысль в этих трех постах что было слизано название, которое рождалось в муках творчества и это в серьез? в (6) даже высказано что авторы этой публикации должны были убрать из названия "Rabbit". Вопрос только один - а разве представители Пули являются разработчиком "Rabbit"? Если да, тогда они в праве требовать что-либо на эту тему.
о претензии что Yellow RabbitMQ популизировало кролика, а тут приперлись на все готовое также раздута. Про кролика больше ни кто не пишет?
Да статья получилась немного не политкорректна, ссылок на конкурента хватает. И как понимаю ключевая проблема в исходниках, что в наше время среди "крутых" разработчиков не принято.
Разработчики как понимаю с нуля написали свою компоненту, если есть факты воровства кода, то должны быть приведены факты.
Irwin; chemezov; eleva; barelpro; glebushka; ripreal1; Gorus; +7 –1 Ответить
51. ripreal1 626 31.07.19 09:38 Сейчас в теме
Кстати, YellowRabbitMQ API - не что-то эдакое особенное, а просто переадресация и адаптация под 1С части методов либы, вероятно использованной в ее основе http://alanxz.github.io/rabbitmq-c/docs/0.5.0/annotated.html. Да и вообще обе либы ничего сами не делают по сути, а просто перенаправляют вызовы для их понимания 1С-ом. Нормальный С++ прогер может написать эту либу за 2 дня. И стоит ли ради таких вещей разводить споры?

НО!
chemezov; Gureev; zurapa; minimajack; +4 – Ответить
53. Infactum 320 31.07.19 11:54 Сейчас в теме
(51) 2 дня - это слишком оптимистичная оценка.
Тесты? Причем не только юниты на уровне C++, но и интеграционные на 1С. Кросплатформенность? Да и ссылку вы дали на С библиотеку.
А уж найти С++ разраба, который знает современные плюсы, а не пишет код по стандарту двадцатилетней давности, да еще и за 1С готов взяться, мягко говоря не просто.
Evil Beaver; +1 – Ответить
55. minimajack 82 31.07.19 13:08 Сейчас в теме
(53) ссылка на rabbitmq-c не относится к PinkRabbitMQ

В статье все ссылки на либы : с++ и кроссплатформенные.
2 дня - это как раз норм для MVP; что бы работало хоть как то.

Тесты не обязательно как бы. Кому нужны могут сделать pull request.
56. Infactum 320 31.07.19 13:22 Сейчас в теме
(55) Ну а кому нужен MVP? Тем, кто просто хочет хайпануть, рассказывая , что использует "кролик" ?
Реальному бизнесу нужен продукт. Надежный и протестированный. И на сколько я вижу PinkRabbit так и позиционируется. Хоть и сыроват пока.
Так что фраза про 2 дня выглядит неуместной. Особенно в контексте этой темы, где постоянно сравнивают с продуктом пули.
58. minimajack 82 31.07.19 14:07 Сейчас в теме
(56) MVP - minimum viable product. Даже если это будет работать медленно, синхронно, только получать сообщения - это все равно продукт который можно использовать в бизнесе.
Понятно что есть риски, но зачем продавать со своей подсистемой "левую" компоненту, когда можно написать свою?

Бит:Адаптер и "Событийная интеграция" - никто не сравнивает, сравниваются NativeApi компоненты в конкретной задаче.

з.ы. Я не смог бы заопенсорсить продукт который ломает бизнес другим...но прогресс не может стоять на месте
61. glebushka 276 31.07.19 17:24 Сейчас в теме
(58)
Я не смог бы заопенсорсить продукт который ломает бизнес другим...но прогресс не может стоять на месте


Вообще я не согласен, например, мы начали и не доделали https://github.com/BITERP/vanessa_debugger/
Но мы всё-равно выложили. Вдруг кто доделает? Зачем велосипед с нуля делать?
В общем, разумеется, не нужно вводить в заблуждение, но не выкладывать что-то потому что "вдруг у кого чего сломает" - имхо, неправильно.

Но конкретно к данной компоненте это не относится. Используется уже на нескольких "нагруженных" внедрениях, и имеет вполне себе CI (отчет по которому доступен с гитхаб)
chemezov; +1 – Ответить
63. minimajack 82 31.07.19 17:55 Сейчас в теме
(61) Спасибо убедили.
Все что не выложено - исключительно по причинам личного характера. Если это кому нибудь надо - даешь опенсорс!!!
65. izidakg 174 01.08.19 07:57 Сейчас в теме
(51) нескольких ссылок на их публикацию мало? если бы на инфостате не было публикации, то да. В конце концов Yellow RabbitMQ в первую очередь должен был дать ссылку на себя
69. Eret1k 01.08.19 10:17 Сейчас в теме
Хорошее решение, но кое-чего все же не хватает.

Почему не реализовали метод BasicGet?
Вам не кажется что это, выглядит как минимум странно:
Потребитель = КлиентКомпоненты.BasicConsume(ИмяОчереди, "", Истина, Ложь, 0);
КлиентКомпоненты.BasicConsumeMessage("", ОтветноеСообщение, 5);
КлиентКомпоненты.BasicAck();
Если уж вы пишите native и намекаете на использование consumer-a, то имеет смысл попробовать реализовать передачу "Описание оповещения" или "ДобавитьОбработчик"

То что Я описывал на основании COM куда проще.
Результат = Модель.BasicGet(ИмяОчереди, Ложь);


Нет методов: QueueDeclarePassive() и ExchangeDeclarePassive(), а ведь они очень удобно позволяют проверять наличие обмена и очереди на сервере.

Также брокер сообщений RabbitMQ поддерживает маршрутизацию сообщений не только по "routingKey" но еще и по "Headers", второе имеет смысл реализовать, так как в больших компаниях их использовать проще и более наглядно.

P/S/
Спасибо за OpenSource! В мире 1С этого всегда не хватает.
Но мне кажется, что мое описание через com все же проще: https://infostart.ru/public/1051620/
77. ripreal1 626 01.08.19 13:56 Сейчас в теме
(69)
Метод BasicGet() забирает только одно сообщение из очереди. На практических задачах требуется обычно забрать все сообщения из очереди. Поэтому его нет. Можно реализовать самому, т.к. он достаточной простой через issue и пулл реквест.

Компонента не использует Внешние события, вт.ч. ОбработчикОповещение, т.к. все это работает только на клиенте. Это не очень удобно, учитывая, что полученное сообщение обычно сразу нужно записать на сервере. Поэтому на проектах компонента изначально инициализируется на сервере.

По поводу QueueDeclarePassive() и ExchangeDeclarePassive(), В API компоненты в методах DeclareQueue и DeclareExchange предусмотрен параметр onlyCheckIfExists. Она еще не реализован, т.к. не было необходимости.

"Headers" в данной компоненте вообще не поддерживаются. Если кому-то потребуется на реальных задачах можно завести issue на гитхабе, чтобы ускорить процесс
85. Eret1k 02.08.19 10:04 Сейчас в теме
(77)
Метод BasicGet() забирает только одно сообщение из очереди. На практических задачах требуется обычно забрать все сообщения из очереди. Поэтому его нет.


Со всем уважением к данным трудам, но в данной реализации:
КлиентКомпоненты.BasicConsumeMessage("", ОтветноеСообщение, 5) Тогда
КлиентКомпоненты.BasicAck();
И
Результат = Модель.BasicGet(ИмяОчереди, Ложь);
делают абсолютно одно и тоже.

Если Я правильно понимаю API, чтобы забрать все сообщения через компоненту, нужно:
Потребитель = КлиентКомпоненты.BasicConsume(ИмяОчереди, "", Истина, Ложь, 0);
МассивСообщений = Новый Массив;
ОтветноеСообщение = "";
Пока КлиентКомпоненты.BasicConsumeMessage("", ОтветноеСообщение, 5) Цикл
	КлиентКомпоненты.BasicAck();
	МассивСообщений.Добавить(ОтветноеСообщение);
КонецЦикла;

Если бы реализовали Метод BasicGet() и MessageCount() было бы так:
МассивСообщений = Новый Массив;
Пока КлиентКомпоненты.MessageCount(ИмяОчереди) Цикл
	Результат = КлиентКомпоненты.BasicGet(ИмяОчереди, Ложь);
	МассивСообщений.Добавить(Результат.Сообщение);
КонецЦикла;

Второй вариант красивее и более интуитивно понятный чем имеющийся на данный момент.
88. ripreal1 626 03.08.19 12:26 Сейчас в теме
(85) Не получится так сделать. Нет метода, который позволяет получить количество сообщений в очереди. Кроме того мы делали API совместимое с серебрянной пулей.
78. glebushka 276 01.08.19 13:59 Сейчас в теме
(69) (77) реально ускорит процесс примеры из жизни, где бы потребовался указанный функционал, которые бы были релевантны реальным или потенциальным пользователям БИТ.Адаптер.
Если же это специфическое требование, нужное (69), то самый надежный способ: сделать самому и сделать пулл-риквест.
72. zurapa 01.08.19 11:13 Сейчас в теме
А у меня тут вопрос возник по обоим кроликам. Зачем они, если есть такие разработчики, которые не понимают его концепции и пихают туда большое, при том что 1С уже умеет SMTP, в который можно пихать и большое. Почтовик это вполне пережуёт и отправит и даже на говёных каналах связи это просрётся с какой-то там попытки. Но, почему-то мы все говорим о кроликах, которые не умеют срать ракетами, но каждый заурядный программист пытается выяснить величину ракеты, с которой кролик порвётся и перестанет бегать между серверами. А потом ещё и выступают на конференциях со своими открытиями.

Есть почтовый сервер без шифрования канала, без авторизации в локальной сети. На него можно подать по SMTP пакетик с данными (письмо), которое долетит в нужную точку. Почтовый сервер можно настроить так, чтобы от поределенного клиента письма дублировались и летели сразу в несколько других серверв, или почтовых ящиков, из которых потом можно другими базами забирать всё это говно. Почтовые сервера если они подняты на линукса, то тоже не шибко много потребляют и настраиваются влюбых вариациях и легко расширяемы по памяти. И вот в этой части мне не понятно преимущество кролика, чтобы ваять какую-то либу, постигать новую технологию, чтобы потом ещё привыкать к её особенностям.

Скорость! Да! Да! Да! Вы скажете скорость! Вот тут согласен. Только при всей этой скорости у вас возникают множество неизвестных, когда пакеты не приходят, или сервис упал, или ещё там что-то и вы не придумали как сохранить эту очередь... Надёжность! Да! Да! Да! Надёжность никакая! Особенно если вы её хорошо не обкатали!

Так вопрос снова - На... Зачем нужен кролик?! - если надежность и гарантия доставки падает, появляется куча других неизвестных, хоть и доставляется всё вроде бы быстрей.

А вы в курсе почему 1С так хорошо приживается в корпоративном секторе? Не из-за скорости работы? А из-за скорости и простоты разработки, и из-за гарантии хранения данных без путаницы и потери. 1С хороша тем, что потерять данные в ней нужно постараться, сама она их не теряет. Она может зависнуть под нагрузкой. Но правильно настроенный обмен, как он устроен в 1С не теряет данные. Вот поэтому 1С позволяет очень удобно быстро работать малоквалифицированными кадрами.

И вы со своим кролём пытаетесь эту технологию перевести на некий иной уровень, когда это будет работать непонятно как, вам потребуются неслабые знания в работе кроля, и понимание всех тонкостей одновременной работы с одинми и теми же данными из разных мест.
Значимость свою повышаете? Денег больше хотите? У вас это получится.

Только, когда вы станите очень крутыми руководителями, знающими весь этот багаж технологий: кролей, молей, постгресов - вам придётся искать себе в подчинение специалистов на эту инфраструктуру сложную, и там вы увидите то, что вижу я... Специалистов таких не будет. У вас будет отдельно специалист по постгресу, но не знающий 1С, и будет хотеть кучу денег за свои экспертные знания, у вас будет спец по кролику, который будет хотеть за свои знания много денег, но не будет хотеть разбираться в 1С, а ещё у вас будет системный администратор, который совершенно не за хочет знать 1С, но будет круто знать почтовики ( но увы не postfix, а Exchange).... Там бескончено можно продолжать. В общем у вас будет возможность раздуть бюджет IT до невообразимых размеров и потом хвастать на конференции, какой вы молодец, что вы всё это тяните шибко не вдаваясь в подробности, как это работает.
А если у вас фирмочка не транснациональная, то вы со всем этим сядите в лужу, потому, что такого многоликого спеца с нужным стеком знаний нет, а вам одобрили взять только двух, и вы будете выбирать между умным или дешёвыми двумя, которых ещё придётся доучивать. Но ни тот умный, ни те два тупых не закрывают ваших необузданных фантазий.

А мораль этой всей басни такова - чтобы что-то пихать в индустрию, нужно сначало думать, как это отзовётся на вас же.

Кролик - весьма сомнительная технология, как и кафка для 1С. В больших корпорациях это может и стрельнит, но в среднем бизнесе это лишь удорожает весь процесс решая всё тот же круг задач.
Dach; botokash; DSergunov; nicxxx; +4 –7 Ответить
76. glebushka 276 01.08.19 13:55 Сейчас в теме
(72)
Кролик - весьма сомнительная технология, как и кафка для 1С.


А кто вам сказал что клиентам нужно продавать кролика и данную компоненту к кролику? Это оупенсоурс, и незаконно :)
Мы продаем решение, которое состоит из коробки, готовых шаблонов интеграций между популярными системами и курсом (с сертификацией) для специалистов заказчика. По практике спец, который ранее занимался обменами на КД2/3 в течение недели начинает делать обмены на БИТ.Адаптер, в течение двух недель скорость разработки интеграций становится не меньше чем раньше, а в течение месяц интеграции разрабатываются быстрее. При этом сообщения мелкие, передаются часто, доставляются быстро и надежно. Разница очевидна при этом не только спецам, но и конечным пользователям.
А для корпораций есть версия КОРП, которая дополнительно и готовый CI-контур содержит. Но тут я соглашусь, для среднего бизнеса это пока слишком дорого в первичной настройке и обслуживании.
Поэтому мы и не паримся, и вложили в опенсоурс. Так как те, кто пользуются нашей компонентой это:
1. или энтузиасты, которые как минимум помогут улучшить и компоненту, и БИТ.Адаптер, как максимум - наши будущие сотрудники :)
2. или наши будущие клиенты, которые столкнувшись с описанными проблемами, сформируют как раз ту потребность, которую закрывает БИТ.Адаптер.
PS. С точки зрения сложности внедрения, поддержки и диагностики проблем традиционные решения гораздо сложнее чем кролик
84. zurapa 01.08.19 17:12 Сейчас в теме
(76) Позвольте я перефразирую ваши слова в контексте своего мнения как это выглядит на мой взгляд.

Вы говорите, что не продаёте кролика, а лишь продаёте курсы обучающие определённому стеку технологий. Там во всей моей тираде, как раз и объясняется, что вы делаете. Вы придумываете новый стек технологий, новый уровень компетенций, чтобы:
1. Из специалистов выжать деньги.
2. Из компаний выжать деньги на новых специалистов, подготовленных вами.

Это, как делать всё более требовательные к ресурсам приложения, чтобы покупали более дорогие и современные смартфоны.

Утилитарно вы не несёте никакой пользы, лишь вкраиваете в технический стек ещё больше мусора, который потом просто так уже не выкинешь, а придётся поддерживать как-то.

И Кстати о цене. У вас недешёвый продукт. Для большой корпорации это конечно не деньги, но вопрос в том, что это не хлеб... Платить деньги за кота в мешке, который не известно как будет работать на моей инфраструктуре - это как минимум не компетентно. Ваши тесты и обещания это не о чём.

Если вы такие прогрессивные за OpenSource сделайте так, чтобы нужно было платить за поддержку, обучении, сделайте продукт свободным для скачивания, а не 200-500 тыс. руб. Если продукт того стоит, то, думаю корпорации поддержат его рублём. Или нет?

С 1С'овской иглой и так всё понятно, к ней привыкли, с неё не соскочить. А ваша иголка очень дорогая. Но если 1С упирается где-то в потолок своих возможностей, и компания позволяет содержать штат разработчиков, то я бы что-нибудь своё, или из opensource взял и допиливал в складчину с другой такой же отчаянной компанией, нежели платил бы за очередной костыль для 1С, который всё равно упрёт меня в потолок но чуть позже.

П,С.: OpenSource можно продавать, и это законно. Вы всего лишь должны полностью открыть код для разработчиков, чтобы они могли его взять и поправить. Так работает BSD лицензия. Вы можете взять любой BSD код и продавать его. Можете его скопировать, модифицировать, закрыть и продавать. OpenSource - открытый код. Там не сказано про запрещение продавать. И даже в GPL если не ошибаюсь можно продавать такой код - только закрывать нельзя.
74. acanta 01.08.19 12:59 Сейчас в теме
Пока фирма 1с не сделает собственную сертификацию по постгресу и вообще каждый отдельной поддерживаемой СУБД как предшествующую экзамену на эксплуататора...
87. kabanoff 50 02.08.19 16:08 Сейчас в теме
Не получается проверить вашу компоненту.
Создал себе тестовый стенд на cloudamqp.com, в демонстрационной обработке прописал параметры подключения. При попытке подключиться обработка напрочь зависает как на клиенте, так и на сервере. Зависает на методе КлиентКомпоненты.Connect().
89. ripreal1 626 03.08.19 12:28 Сейчас в теме
(87) Компонента зависает, если пытается подключиться к порту, которого не сущесвует на сервере. Поэтому скорее всего неправильно прописан порт.
91. kabanoff 50 05.08.19 09:57 Сейчас в теме
(89) Да, всё получилось. Спасибо!
92. altu71 05.08.19 12:27 Сейчас в теме
Напишите, пожалуйста, поподробнее, что нужно сделать, чтобы заработала ваша компонента на сервере под Линуксом? Достаточно собрать с указанием нужной платформы или нужно вносить изменения в исходный код компоненты? Если второе, то планируете ли вы в ближайшее время это сделать? В наше импортозамещаемое время это было бы актуально для многих, мне кажется.
94. ripreal1 626 05.08.19 15:49 Сейчас в теме
(92)
Код нуждается в небольшой доработке. Кроме этого нужно пересобрать 2 зависимости, а также сделать новый конфиг в sln проекте для запуска под линукс. Пока таких планов нет. Контрибьюторы приветствуются.
95. artbear 1590 07.08.19 14:44 Сейчас в теме
(92) В исходном платном компоненте YellowRabbitMQ есть поддержка и Linux, и Win.
97. leobrn 712 19.08.19 11:05 Сейчас в теме
а как в компоненте закрыть соединение ? .Close() не отрабатывает, в документации компоненты не нашел.
98. ripreal1 626 19.08.19 20:37 Сейчас в теме
(97)
Соединение закрывается автоматически при очищении NativeAPI объекта. Нужно установить переменную компоненты в Неопределено. Метода Close() не предусмотрено.
99. maxdmt 28 18.09.19 18:40 Сейчас в теме
Обработка скачана и зарегистрирована.
Так, а где почитать как поставить сервис? к чему подключаться и где настраиваются логины пароли?
100. Begemoth80 448 18.09.19 23:24 Сейчас в теме
(99) Начать можно с бесплатного экаунта на https://www.cloudamqp.com
Если хотите установить сервер у себя, см. https://www.rabbitmq.com/download.html
mrcamomile; Irwin; +2 – Ответить
138. mrcamomile 107 28.03.20 21:12 Сейчас в теме
(100) Большое спасибо за труд! Сделали прототип - сейчас обкатываем в проде свой маленький обмен в реальном времени. Обработки от Битрикс24 по сравнению с этим унылое ...
101. An-Aleksey 64 16.10.19 20:28 Сейчас в теме
(99) тоже встал в ступор на этом вопросе - пришлось разгребать кучу мануалов, висов для чайников и набивать шашки.
Если кому-то еще "облегчит жизнь", то краткий перечень шагов для подготовки окружения перед началом использования демо-обработки на своей машинке без использования каких либо внешних бесплатных сервисов:

1. Кролик написан на Erlang, соответственно первым шагом будет установка платформы Erlang и сервера RabitMQ.
Заходим сюда, проверяем последнюю версию Кролика и с какой платформой он совместим (рекомендуем).
Тут скачиваем собственно эту верcию Erlang`a, запускаем установочник, прожимаем Далее-Далее-Далее.
После скачиваем и устанавливаем сервер кролика.
Все установки от имени администратора и желательно без сложно-сочинительных кириллиц в именах путей.

2. По умолчанию кролик администрируется из черного окошка, но можно подрубить браузерный плагин.
Для этого запускаем командную строку от имени администратора и вводим там следующую команду:
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.0\sbin>rabbitmq-pluins enable rabbitmq_management


Сразу после этого нам становится доступна панель администрирования:
http://localhost:15672/
Пользователь и пароль по-умолчанию guest guest

3. В вышеописанной панели на вкладке "Admin" можно (и нужно) создать нового пользователя с паролем.
Там же создаются эти самые "Виртуальные хосты", которые просит обработка (поиск информации о том, что это мифические хосты, которые просила демо-обработка довел до нервного тика). Создаем новый виртуальный хост, даем доступ нашему новому юзеру.
Все предварительный этап закончен.

Теперь уже можно открывать демо-обработку и запускать в любой базе 1С из сетевого окружения.
Настройки обработки:
Адрес:
• localhost (если на той же машине)
• Сетевое имя компьютера, если кролик развернут на другой машине (пробовал по ай-пи адресу, но проверка подключения просто зависала).
Порт:
• 5672 (по умолчанию)
Логин/Пароль:
Атрибуты ново-созданного пользователя в оснастке кролика.
*если использовать guest, который создаетсятся по умолчанию, то доступ будет только с localhost, для подключения к другой машине уже будет ругаться.
Виртуальный хост:
Наименование виртуального хоста, который мы так же создали в панели администрирования.
*теоретически можно было и не создавать и указать "/"

Если в процессе что-то указать не так, то проверка подключения будет выдавать вот такое сообщение:
{ВнешняяОбработка.ПростойПримерРаботыСКомпонентойPinkRabbitMQ.Форма.Форма.Форма(228)}: Ошибка подключения!{ВнешняяОбработка.ПростойПримерРаботыСКомпонентойPinkRabbitMQ.Форма.Форма.Форма(218)}: Ошибка при вызове метода контекста (Connect): Ошибка вызова метода внешней компоненты
ВызватьИсключение ТекстСообщения;

Коллеги, хотелось бы, чтобы методы компоненты были в состоянии определять недомогания в подключении и выдавать причины.
Благо нашел логи кролика, в который он все алерты скидывает:
C:\Users\@UserName@\AppData\Roaming\RabbitMQ\log

Возможно где-то перемудрил, как человек далекий от администрирования шел
(48) по 1совски "в лоб"
brvtvs; starik-2005; skalistratov; Shida; Lion_LexXx; Begemoth80; +6 – Ответить
102. Evil Beaver 8429 17.10.19 10:28 Сейчас в теме
(101) а можно сделать вот так:

apt install rabbitmq-server

или даже вот так:
docker run -d bitnami/rabbitmq
starik-2005; An-Aleksey; Begemoth80; +3 – Ответить
103. An-Aleksey 64 17.10.19 15:03 Сейчас в теме
(102) Андрей, это команды автоустановка сервера кролика вместе с Erlang`ом?
104. Evil Beaver 8429 17.10.19 15:55 Сейчас в теме
(103) Первая - нет, вторая - да. Но там есть нюансы, это не copy-paste-ready команды, нужны будут некоторые опции
105. An-Aleksey 64 17.10.19 17:20 Сейчас в теме
106. maxdmt 28 23.10.19 17:01 Сейчас в теме
Здравствуйте.
Вопрос.
Как прочитать сообщение с сервера повторно?
Например, я прочитал сообщение с сервера и по каким-то причинам не могу его сейчас обработать.
Вызываю метод BasicReject и очередь все равно очищена.
Если не подтверждать последнее сообщение - это также не помогает.
Подскажите, возможно ли прочитать повторно?
108. ripreal1 626 28.10.19 09:59 Сейчас в теме
(106) Все правильно делаете. Последовательность методов следующая:

basicConsumeMessage() с параметром
--- код, из-за которого нельзя прочитать сообщение---
basicReject() либо просто завершение процесса чтения с выходом из цикла чтения. Сообщение должно вернуться в очередь.

Если этот способ не работает, то нужно смотреть. Возможно ошибка в коде компоненте. ЛУчше зарегистрировать ее на гитхабе.
107. s0nya 26.10.19 18:10 Сейчас в теме
Для интереса сделал простенький скрипт на node.js по примерам с сайта RabbitMQ. Скрипт 1000 сообщений публикует за 0,5 секунд. Компонента за 46 с. Все время сьедает метод компоненты BasicPublish. Разница чуть не в 100 раз. Аналогичная ситуация с чтением. Скорость чтения около 10 сообщений в секунду с сервером кролика на отдельной виртуалке.

Ожидал увидеть не такой разрыв. Можете подсказать почему так?
109. ripreal1 626 28.10.19 10:01 Сейчас в теме
(107)

Все верно. Методы basicPublish и BasicConsumeMessage работают очень медленно из-за непотимально написанного кода. Узкие места известны. В новой версии компоненты собираемся поправить эти моменты.
111. specUT 03.12.19 14:42 Сейчас в теме
Метод Connect проходит хорошо, а потом зависает наглухо на методе DeclareExchange, в чем может быть проблема?
112. specUT 03.12.19 15:29 Сейчас в теме
(111) Разобрался спасибо (99), полез в виртуальные хосты, а там хост "/" его и проставил.
113. ripreal1 626 03.12.19 21:33 Сейчас в теме
114. s0nya 11.12.19 15:58 Сейчас в теме
Поставил последнюю версию 1.7 для тестирования. А она вообще не читает из очереди.
Для интереса подкинул в макет версию 1.6 - здесь все работает, но есть известный баг "Компонента зависает на методе basicCancel" https://github.com/BITERP/PinkRabbitMQ/issues/14
Никто версию 1.7 не смотрел?
115. s0nya 11.12.19 16:37 Сейчас в теме
(114) Оказывается в 1.6 как и в 1.7 работает вычитка после перезапуска 1С. Но если записать что то в очередь, не читается до перезагрузки 1С :(
Обработка из примера, на версии 1.2 проблем не было, но скорость не особо устраивала. В новых действительно менее чем за секунду 1000 сообщений принимает.
Немного доделал чтение для версии 1.7 согласно рекомендациям на гите и новому параметру таймаут:

КлиентКомпоненты.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения,100)
116. ripreal1 626 11.12.19 16:55 Сейчас в теме
(115)
Но если записать что то в очередь, не читается до перезагрузки 1С :(


Этот баг нам неизвестен. Приведите пожалуйста порядок воспроизведение с последовательностью вызовов методов компоненты
117. ripreal1 626 11.12.19 16:57 Сейчас в теме
(116)
Таймаут 100мс - это очень маленький таймаут. Рекомендую устанавливать не менее 1000мс. Для сообщений больше 1 мб может потребоваться 3000мс.
118. s0nya 11.12.19 18:12 Сейчас в теме
(116) За основу спечиально взял обработку из топика. Rabbit используется на CentOS. Версия 3.8.0 Erlang 22.1.4. Библиотека 1.7 с гита.


1. В Rabbit загнал 100 сообщений.
2. Запускаем 1С. Режим компоненты - клиент.
3. Нажимаю проверить подключение. Сообщение "Внешняя компонента успешно установлена"
4. Вкладка получить сообщение - нажимаю Прочитать сообщение. Получаю первое сообщение.
5. Повторное нажатие, в ответ "Очередь пустая!" (в Rabbit осталось 99 сообщений)
6. Вкладка отправить сообщение, нажимаю отправить. Сообщение уходит на Rabbit.
7. Возврат на вкладку чтение и попытка вычитки ничего не даёт.

В коде процедуры ПрочитатьСообщениеКлиентСервер минимальные изменения: добавлена переменная ТегСообщения, в вызов BasicConsumeMessage добавлен таймаут 1000, в вызов BasicAck добавлен параметр ТегСообщения.


Процедура ПрочитатьСообщениеКлиентСервер(КлиентКомпоненты, Форма)
	
	Попытка
		КлиентКомпоненты.Connect(
			Форма.Адрес,
			Форма.Порт,
			Форма.Логин,
			Форма.Пароль,
			Форма.ВиртуальныйХост);
		
		ИмяОчереди = Форма.ИмяОчереди;
		ТегСообщения = 0;
		
		Попытка
			КлиентКомпоненты.DeclareQueue(ИмяОчереди, Ложь, Ложь, Ложь, Ложь);
			
			Потребитель = КлиентКомпоненты.BasicConsume(ИмяОчереди, "", Истина, Ложь, 0);
			
			ОтветноеСообщение = "";
			
			//Если КлиентКомпоненты.BasicConsumeMessage("", ОтветноеСообщение, 5) Тогда 
			Если КлиентКомпоненты.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения,1000) Тогда
				КлиентКомпоненты.BasicAck(ТегСообщения);
				Форма.ОтветноеСообщение = ОтветноеСообщение;
				ТекстСообщения = НСтр("ru='Сообщение успешно прочитано!'");
			Иначе
				Форма.ОтветноеСообщение = ОтветноеСообщение;
				ТекстСообщения = НСтр("ru='Очередь пустая!'");
			КонецЕсли;
			Сообщить(ТекстСообщения);
			
			// Обнуляем, чтобы избежать утечку памяти
			ОтветноеСообщение = "";
			ТегСообщения = 0;

			КлиентКомпоненты.BasicCancel("");
		Исключение
			ВызватьИсключение КлиентКомпоненты.GetLastError();
		КонецПопытки;
	Исключение
		СистемнаяОшибка = ОписаниеОшибки();
		ТекстСообщения = "Ошибка чтения сообщения!%СистемнаяОшибка%";
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%СистемнаяОшибка%", СистемнаяОшибка);
		ВызватьИсключение ТекстСообщения;
	КонецПопытки;
	
КонецПроцедуры
Показать



В своей обработке использую цикл по вычитке сообщений по 1 штуке (попарно BasicConsumeMessage и BasicAck). При первой вычитке забирает из Rabbit хоть все 1000 сообщений. Такое ощущение, что при повторном использовании DeclareQueue или BasicConsume все ломается.
119. ripreal1 626 11.12.19 20:52 Сейчас в теме
(118)
Спасибо. Будем смотреть. Как способ обхода рекомендую заново инициализировать компоненту через Компонента = Новый ComОбъект() для отправки и получения сообщений
120. ripreal1 626 12.12.19 12:39 Сейчас в теме
(118) Ошибка не воспроизводится. Просьба написать полный сценарий воспроизведения на псевдокоде. Вот как я пытался вопроизвести. Обработка прикрепленная к статье устарела, не следует ее использовать.

Клиент. = Новый ComObject
Клиент.BasicConsume
Пока Клиент.BasicConsumeMessage Цикл
     Клиент.BasicAck
КонецЦикла
Клиент.BasicCancel
Клиент.BasicPublish // Ожидаю, что здесь зависнет или не отправиться сообщения. По факту все отправляется корректно
Показать
121. s0nya 14.12.19 18:42 Сейчас в теме
(120)
Привожу свою последовательность. На началло теста в очереде 30 сообщений. 64 битная версия dll. Если и дальше ошибку не видите могу выложить свою упрощенную до никуда обработку.

Клиент  = Новый("AddIn.BITERP.PinkRabbitMQ");
Клиент.Connect

//Отправка. Здесь никогда проблем не возникало
Клиент.DeclareQueue
Клиент.BasicPublish

//Получение. Первый раз все получает
Клиент.BasicConsume
Клиент.BasicConsumeMessage
Клиент.BasicAck
Клиент.BasicCancel

//Повторный запуск процедуры получения. Здесь уже ничего не получает 
Клиент.BasicConsume
Клиент.BasicConsumeMessage
Клиент.BasicAck
Клиент.BasicCancel

//Реинициализация компоненты
Клиент = Неопределено
Клиент  = Новый("AddIn.BITERP.PinkRabbitMQ");
Клиент.Connect

//Получение. Первый раз все снова получает
Клиент.BasicConsume
Клиент.BasicConsumeMessage
Клиент.BasicAck
Клиент.BasicCancel

//Повторный запуск процедуры получения. Здесь опять ничего нет 
Клиент.BasicConsume
Клиент.BasicConsumeMessage
Клиент.BasicAck
Клиент.BasicCancel



Показать
122. ripreal1 626 16.12.19 12:09 Сейчас в теме
Спасибо! Удалось воспроизвести баг. Завел задачу для релиза 1.8. https://github.com/BITERP/PinkRabbitMQ/issues/15
123. s0nya 16.12.19 15:34 Сейчас в теме
(122) Вам спасибо, за такую работу!
Жду решения, подписался в гитхабе ;)
Пока пользуюсь версией 1.2
124. ripreal1 626 31.12.19 14:17 Сейчас в теме
Опубликован новый релиз компоненты PRMQ 1.8 с поддержкой 64 битных Linux систем. https://github.com/BITERP/PinkRabbitMQ/releases. Просьба всех желающих проверить у себя, в особенности поддержку Linux части.
125. bforce 484 27.01.20 11:24 Сейчас в теме
Пробовали компоненту (в конце декабря). На наш взгляд, она еще сырая.
Отправка работает, но контроля доставки нет. Я отправляю в несуществующую точку обмена и это не приводит к ошибке или к выводу сообщения. Использование некоторых параметров приводит к неработоспособности.
Получение вообще не удалось протестировать.

В итоге, выбрали HTTP API, потому что там, хотя бы, можно анализировать код возврата HTTP и свойство routed в теле ответа.
126. ripreal1 626 27.01.20 11:44 Сейчас в теме
Насчет "Отправка работает, но контроля доставки нет." Так это не баг, а фича. См. п.2.2.3 официальной спецификации протокола amqp

https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf

2.2.3 No ConfirmationsA chatty protocol is slow. We use asynchronism heavily in those cases where performance is an issue. Thisis generally where we send content fr om one peer to another. We send off methods as fast as possible,without waiting for confirmations. Wh ere necessary, we implement windowing and throttling at a higher level, e.g. at the consumer level.We can dispense with confirmations because we adopt an assertion model for all actions. Either they succeed, or we have an exception that closes the channel or connection.There are no confirmations in AMQP. Success is silent, and failure is noisy. When applications needexplicit tracking of success and failure, they should use transactions.


Насчет неработоспособности в отдельных случаях - не отрицаем. Это надо смотреть. Было бы хорошо, если написали бы конкретнее.
127. bforce 484 27.01.20 13:16 Сейчас в теме
(126)
There are no confirmations in AMQP. Success is silent, and failure is noisy.

У меня последнее предложение и не выполняется.

(126)
Было бы хорошо, если написали бы конкретнее.

Скажите куда и как - напишу. Могу в том же github создать issue или на почту выслать примеры.
128. ripreal1 626 27.01.20 18:58 Сейчас в теме
(127)
Ну теперь стало понятнее требование. Желательно все ошибки овормлять в github репозитории проекта. Там они точно рано или поздно будут рассмотрены.
129. sandman.NN 07.02.20 00:13 Сейчас в теме
Ребятушки, а Линукс стоит того чтобы медленно и печально отправлять 50-100 сообщений в секунду? Я на коленке написал COM компоненту на шарпе за полдня. отправка 5000 сообщений в секунду, прём замерить не удалось, т.к. буферизацию впилил прямо в компоненту. При условии "получать пачками" по 100 за раз или всё, что есть у меня 1 получатель жрал все, что отправлялось с 10 отправителей (в 10 потоков)

PS Для пытливых умов. 1С отправляла кролику через COM компоненту.
130. Begemoth80 448 07.02.20 07:47 Сейчас в теме
(129) А какую задачу вы решали? Т.е. какие данные и зачем потребовалось отправлять из 1С в кролика со скоростью 5000 сообщений в секунду?
131. sandman.NN 07.02.20 07:55 Сейчас в теме
(130) я решал задачу замера производительности. А именно: Сколько времени занимает отправка одного сообщения. Для увеличения точности изменений, отправлял сообщения "кучей". Вы правильно отметили, что размер сообщения - имеет значение. Но по моим тестам, от 1 байта до 1 килобайта - на скорость не влияет.
132. Begemoth80 448 07.02.20 21:46 Сейчас в теме
(131) А какую задачу вы собирались решать? Т.е. у нас лежит задача ускорения выгрузки, вроде там понятно как делать, но мы ее уже 4 спринта откладываем, т.к. непонятно зачем. На всех наших проектах текущая скорость выгрузки не является узким местом (тем более, что ее можно делать в несколько потоков на стороне 1С).
133. sandman.NN 09.02.20 00:16 Сейчас в теме
(132) Я решал задачу доставки данных из ФЗ управляющего потока восстановления последовательности партионного учёта в обработку - интерфейс оператора. Сейчас реализовано таким образом, что наблюдать за процессом может более чем один оператор. Там валит поток порядка 80 сообщений/сек только исходящих из управляющего процесса (операции начала проведения и завершение проведения, постановка в очередь, перенос границы). В последовательности я провожу документы потоками (до 20 штук в раз)

Задействован менеджер потоков (тут где-то недалеко тема про него), который ещё и внутри себя данные гоняет крайне не эффективно (через хранилище общих настроек) Его в дальнейшем тоже переведу на "Крольчатину" чтобы не напрягать по чём зря базу и не упираться в блокировки. Таким образом поток данных только увеличится. Тратить на отправку одного сообщения 0.01 сек - непозволительная роскошь для моих задач.
134. Begemoth80 448 09.02.20 07:55 Сейчас в теме
(133) Спасибо за информацию
135. yufan 28.02.20 18:18 Сейчас в теме
Поставщик очереди предоставляет доступ к тестовому серверу через порты 45671 и 45672, к продуктовому через 5671.
Используя компоненту, получается установить соединение с тестовым сервером через порт 45672 (без TLS), но с теми же учётными данными не удаётся соединиться через 45671 порт к тестовому и 5671 к продуктовому серверу, получаю ошибку "Wrong login, password or vhost".
136. yufan 04.03.20 16:53 Сейчас в теме
(135) Похоже, в компоненте не реализована работа через TLS (5671).
И не планируется?
137. ripreal1 626 04.03.20 19:14 Сейчас в теме
(136)
Это нужно дорабатывать слой обмена через TCP с сервером RAbbitMQ. Создайте такую задачу здесь https://github.com/BITERP/PinkRabbitMQ/issues. Возможно кто-то возьмется за нее
139. s0nya 21.04.20 22:26 Сейчас в теме
В режиме работы в логах раббита постоянно предупреждение после отключения 1С. Это нормально?

2020-04-19 07:00:03.037 [warning] <0.794.427> closing AMQP connection <0.794.427>..................
client unexpectedly closed TCP connection
140. ripreal1 626 22.04.20 20:33 Сейчас в теме
Нет. Возможно внутри компоненты где-то ошибка при работе с соединением. Зарегал ошибку https://github.com/BITERP/PinkRabbitMQ/issues/26
141. vis_tmp 33 25.04.20 14:13 Сейчас в теме
Никак не могу найти, есть ли возможность для 7.7 использовать Rabbit MQ ?
142. Infactum 320 25.04.20 14:27 Сейчас в теме
(141) Есть, но не через эту компоненту.
Точно существует коммерческое решение. Возможно есть какие-то бесплатные. По сути, для 77 все делается через COM.
143. vis_tmp 33 25.04.20 17:50 Сейчас в теме
(142)Если вы знаете о них, не подскажете как найти?
144. specUT 23.06.20 12:36 Сейчас в теме
Метод GetPriority() не работает, всегда возвращает неопределено.
145. 13kawaii13 26.08.20 14:03 Сейчас в теме
Коллеги.

При работе с компонентой заканчивается место на диске C:\ сервера из-за переполнения папки temp

Судя по системам мониторинга, папка начала активно расти примерно с начала использования компоненты, и сейчас 1С корректно не очищает её, приходит удалять файлы вручную.

На текущий момент обмен работает в 20 потоках и каждый поток отдельно для себя подключает компоненту, всё это складируется в темпе и переодически не хватает места на диске С.

Подскажите как можно побороть это? Возможно ли как то програмно очищать временные файлы после завершения сеанса обмена ?
175. s0nya 07.06.21 00:22 Сейчас в теме
(145)
(145)
При работе с компонентой заканчивается место на диске C:\ сервера из-за переполнения папки temp

Судя по системам мониторинга, папка начала активно расти примерно с начала использования компоненты, и сейчас 1С корректно не очищает её, приходит удалять файлы вручную.

На текущий момент обмен работает в 20 потоках и каждый поток отдельно для себя подключает компоненту, всё это складируется в темпе и переодически не хватает места на диске С.

Подскажите как можно побороть это? Возможно ли как то програмно очищать временные файлы после завершения сеанса обмена ?


Аналогичная проблема. И такое ощущение, что возникла не сразу. Удалось решить?
146. ripreal1 626 26.08.20 17:16 Сейчас в теме
Компонента сама по себе никоим образом не работает с файловой системой машины. Что понимается под фразой "Все это складируется в темпе"?
147. 13kawaii13 27.08.20 15:15 Сейчас в теме
Тех журнал показывает что при подключении компоненты происходит загрузка компоненты в темп LoadComponent=C:/Users/User1c/AppData/Local/Temp/v8_59A_d7.tmp

8:23.852072-0,AddIn,2,process=rphost,p:processName=erp_bit_finance,OSThread=5332,t:clientID=166,t:applicationName=BackgroundJob,t:computerName=cl1-srv2,t:connectID=167,SessionID=76,Usr=DefUser,LoadComponent=C:/Users/User1c/AppData/Local/Temp/v8_59A_d7.tmp,Context='38:23.852072-0,AddIn,2,process=rphost,p:processName=erp_bit_finance,OSThread=5332,t:clientID=166,t:applicationName=BackgroundJob,t:computerName=cl1-srv2,t:connectID=167,SessionID=76,Usr=DefUser,LoadComponent=C:/Users/User1c/AppData/Local/Temp/v8_59A_d7.tmp,Context='ОбщийМодуль.RabbitMQ_Сервер.Модуль : 266 : КлиентКомпоненты = ПолучитьКомпонентуСервер(); ОбщийМодуль.RabbitMQ_Сервер.Модуль : 836 : ПодключитьКомпонентуСервер(); ОбщийМодуль.RabbitMQ_Сервер.Модуль : 861 : КомпонентаПодключена = ПодключитьВнешнююКомпоненту('
151. ripreal1 626 28.08.20 18:48 Сейчас в теме
(147)
Это какой-то платформенный механизм. Думаю он также работает и с другимим внешними компонентами
148. Kembreg 28.08.20 11:29 Сейчас в теме
Обработка, приложенная к статье не работает с версией компоненты 1.9, из-за изменившегося третьего параметра в BasicConsumeMessage, вместо timeout там теперь MessageTag. Плюс на Гите в Readme.md есть замечательные рекомендации, которым почему то не следуют авторы в самой обработке и наконец приводят её к рабочему виду, которую уже можно показывать начальству и говорить "а давай мы данные во внешнюю систему логирования будем так передавать"
ripreal1; +1 – Ответить
149. Kembreg 28.08.20 13:28 Сейчас в теме
Попытки познать радость быстрого обмена на компоненте версии 1.9 пока ни к чему не привели.

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

Скрытый текст


то цикл беззастенчиво проскакивает, не заходя.

Если же убрать цикл и стукнуть просто

Клиент.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения, 5)
 Клиент.BasicAck(ТегСообщения);
  Сообщить("Успешно! Из очереди прочитано сообщение " + ОтветноеСообщение);
 


то на выходе получим радостное "Успешно! Из очереди прочитано сообщение" без всяких следов ответа

ЧЯДНТ?
150. ripreal1 626 28.08.20 18:11 Сейчас в теме
(149)
См метод BasicConsumeMessage - у метода стоит очень низкий таймаут в 5 мс. Его нужно увеличить хотя бы до 3000
152. Kembreg 28.08.20 19:14 Сейчас в теме
(150) Помогло, спасибо
153. RIS2020 5 18.09.20 14:24 Сейчас в теме
{ВнешняяОбработка.ПростойПримерРаботыСКомпонентойPinkRabbitMQ.Форма.Форма.Форма(218)}: Ошибка при вызове метода контекста (Connect): Ошибка вызова метода внешней компоненты

Может обработку обновить стоит ?
154. ripreal1 626 18.09.20 19:08 Сейчас в теме
Не рекомендую вообщей ей пользоваться. Она написана не разработчиком компоненты. Рекомендую использовать примеры кода из репозитория https://github.com/BITERP/PinkRabbitMQ. Разработчик компоненты поддерживает эти примеры в актуальном состоянии
155. Alevtina_Off 15.12.20 17:09 Сейчас в теме
Добрый день! Планируется ли реализовать работу с RPC? При публикации сообщения нужны свойства reply_to и correlation_id для возможности идентификации ответа от сервера по конкретному запросу. При работе с ответами вижу, что задел на обработку данного свойства уже сделан:
Если Клиент.CorrelationId <> "МОЙ_ИД" Тогда
156. ripreal1 626 15.12.20 18:24 Сейчас в теме
(155)
Свойства CorrelationId reply_to уже реализованы.(см док https://github.com/BITERP/PinkRabbitMQ) Если они не работают - то это ошибка. По поводу RPC не понял. Компонента работает только с 1С и ничем больше.
157. Alevtina_Off 15.12.20 19:15 Сейчас в теме
Тогда я не понял, как задать CorrelationId и reply_to при BasicPublish. В описании не увидел.
Про RPC я имел ввиду, чтобы реализовать схему с Remote Procedure Call, когда мы шлем сообщение и ждем ответ от сервера. Как раз для этого и нужны reply_to - чтобы указать в какую очередь складывать ответы и CorrelationId - чтобы понять, что это ответ именно на наше сообщение.
158. ripreal1 626 15.12.20 20:10 Сейчас в теме
ПРимерно вот так
Компонента.CorrelationId = "myId"
Компонента.basicPublish()
Компонента.basicConsume()
Компонента.basicConsumeMessage()
Свойство = Компонента.CorrelationId
159. Alevtina_Off 14.01.21 11:25 Сейчас в теме
Пытаюсь указать reply_to при отправке сообщения, но не вижу данного свойства и естественно вылетает ошибка.
С CorrelationId разобрался, там все отрабатывает.
Прикрепленные файлы:
160. ripreal1 626 14.01.21 12:16 Сейчас в теме
(159)
Старая версия компоненты 1.2 Сейчас актуальная - это 1.9. https://github.com/BITERP/PinkRabbitMQ/releases и почти уже вышла версия 1.10. с существенными изменениями, включая поддержку SSL. Рекомендую обновиться
161. Alevtina_Off 14.01.21 12:54 Сейчас в теме
162. Morisato 15.01.21 12:27 Сейчас в теме
(140) Доброго времени суток! Столкнулся с подобной ошибкой. Логи сервера просто загаживаются подобной ошибкой.

client unexpectedly closed TCP connection

Подскажите пожалуйста, данная ошибка будет исправлена в 1.10 версии?
163. ripreal1 626 15.01.21 13:22 Сейчас в теме
(162) https://github.com/BITERP/PinkRabbitMQ/issues/26 такого нет в планах от основных контрибьютеров.
164. Morisato 20.01.21 10:59 Сейчас в теме
И снова здравствуйте!
Выполняю следующий код
ПодключитьВнешнююКомпоненту("ОбщийМакет.PinkRabbitMQ", "BITERP", ТипВнешнейКомпоненты.Native);
КлиентКомпоненты  = Новый("AddIn.BITERP.PinkRabbitMQ");

ТекстСообщения = "{test:test}";

Попытка
       КлиентКомпоненты.Connect(
		ВхСтруктура.Адрес,
		ВхСтруктура.Порт,
		ВхСтруктура.Логин,
		ВхСтруктура.Пароль,
		ВхСтруктура.ВиртуальныйХост);

     КлиентКомпоненты.ContentEncoding = "utf8";
     КлиентКомпоненты.ContentType = "application/json";
     КлиентКомпоненты.Expiration = "60000";

     КлиентКомпоненты.BasicPublish(
					ТочкаОбмена,
					ИмяОчереди,
					ТекстСообщения,
					0,
					Ложь);


Исключение
                СистемнаяОшибка = ОписаниеОшибки();
		ТекстСообщения = "Ошибка отправки сообщения!%СистемнаяОшибка%";
		ТекстСообщения = СтрЗаменить(ТекстСообщения, "%СистемнаяОшибка%", СистемнаяОшибка); 		
		ВызватьИсключение ТекстСообщения+"_:"+КлиентКомпоненты.GetLastError(); 
КонецПопытки;

КлиентКомпоненты = Неопределено;

Показать

На стороне кролика очередь уже создана. Соединения происходят успешно. Сообщения передаются в очередь.
Но когда выполняется КлиентКомпоненты = Неопределено; то в логах кролика появляется ошибка

client unexpectedly closed TCP connection

Код выполняется на сервере в фоновой процедуре.
Что я делаю не так?
165. ripreal1 626 20.01.21 11:22 Сейчас в теме
(164)
Повоторюсь https://github.com/BITERP/PinkRabbitMQ/issues/26. Просто компонента неправильно закрывает соединение.
166. ripreal1 626 20.01.21 11:24 Сейчас в теме
Но спасибо за воспроизведение
167. Morisato 26.01.21 13:05 Сейчас в теме
Здравствуйте. Подскажите пожалуйста примерную дату выпуска компоненты версии 1.10. Спасибо.
168. ripreal1 626 26.01.21 13:53 Сейчас в теме
Точной даты нет, но тянуть с релизом не будем. Как только будет готовы запланированные задачи. Отслеживать прогресс можно здесь https://github.com/BITERP/PinkRabbitMQ/milestone/7
170. Begemoth80 448 02.03.21 12:05 Сейчас в теме
Мы выпустили новый релиз 1.10 компоненты PinkRabbitMQ. В релизе реализована поддержка TLS 1.2, на порядок увеличена скорость передачи сообщений, и выполнены другие доработки. Эту версию компоненты, в составе Адаптера, мы использовали на проекте, в рамках которого организован обмен между 100 базами в "реальном времени"

В первую очередь компонента сохранила обратную совместимость по API, т.е. если вы используете ее на своих проектах, то можете просто обновить.

Основные доработки:
1. Поддержка TLS 1.2
-Теперь при обмене брокером можно использовать защищенный протокол
-Поддерживается проверка сертификата сервера при подключении (сертификат клиента для проверки сервером не передается)

2. На порядок увеличена скорость передачи сообщений
- Полностью переработана логика отправки сообщений. В результате скорость отправки увеличилась на 1-2 порядка
- При отправки сообщений используются “транзакции” rabbitmq, т.е. если уже в процессе отправки сообщения на сервере возникла ошибка, то в 1С вернется исключение

3. Ускорено получение первого сообщения с 1 секунды до “мгновенно”

4. Добавлена возможность создавать узлы обмена и очереди с нужными аргументами
- Можно создавать очереди с ограниченным временем жизни сообщений
- Можно создавать очереди с ограниченным временем жизни самих очередей

5. Добавлен метод для получения ключа маршрутизации сообщения

6. Исправлены ошибки, связанные с утечками памяти и падением компоненты, в редко-используемых сценариях
deevil; primat; +2 – Ответить
171. пользователь 31.03.21 13:16
Сообщение было скрыто модератором.
...
172. MarolaConstantin 13.05.21 15:53 Сейчас в теме
Есть тут кто-то который разобрался с интеграцией 1С + RabbitMQ через эту компоненту?
Хочется обменятся опытом ну и заодно обсудить некие трудности с которым я столкнулся.
173. coolo 28.05.21 16:09 Сейчас в теме
А для каффки планируется нативная опенсурс компонента?
174. Begemoth80 448 28.05.21 19:31 Сейчас в теме
(173) Пока нет, но вроде платные есть
176. Shmell 678 11.08.21 06:50 Сейчас в теме
177. ssp_ 156 12.08.21 11:33 Сейчас в теме
Скачал демонстрационную обработку, смог отправить только пустые сообщения. Если в сообщении хотя бы один символ, говорит что "Сообщение успешно отправлено", но в очереди оно не появляется. Что делаю не так? Сервер RabbitMQ 3.8.20 Erlang 24.0.5
178. CrazyHands 37 15.09.21 13:15 Сейчас в теме
Добрый день. А BasicConsumeMessage так и не починили? Долго отрабатывает метод
Прикрепленные файлы:
179. ripreal1 626 15.09.21 14:55 Сейчас в теме
180. CrazyHands 37 15.09.21 15:35 Сейчас в теме
(179)
RTFM

Понимаю, что мой вопрос скорее всего вызвал негодование. :) Не могли бы вы в двух словах объяснить причину долгой работы метода?
В документации написано рекомендуемое значение таймаута - 3000. При этом, если я снижаю значение таймаута, метод отрабатывает быстрее. Буду признателен за помощь.
181. ripreal1 626 15.09.21 15:51 Сейчас в теме
(180)
Так и должно быть. Этот паттерн называет long-pooling и означает, что метод BasicConsumeMessage будет ждать появления сообщения в очереди именно столько, сколько Вы указали в таймауте. Если сообщений за этот таймаует не появилось, тот метод возвращает управление основному коду
Begemoth80; +1 – Ответить
182. CrazyHands 37 15.09.21 19:08 Сейчас в теме
183. IvanGorbunov 12.10.21 12:01 Сейчас в теме
1) Если сообщения получать в цикле методом BasicConsumeMessage():
Пока Клиент.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения, 5000) Цикл
  ОтветноеСообщение = "";
  ТегСообщения = 0;
КонецЦикла;

, то читает только первое сообщение, а на второй итерации метода BasicConsumeMessage выбивает ошибку bad conversion. Что это может быть?

2) А есть возможность получать Timestamp из properties очереди? Я такой возможности не нахожу.
186. ripreal1 626 26.10.21 12:03 Сейчас в теме
(183)
1) Не сталкивался, не знаю
2) А такое свойство вроде и не реализовано
(184)
184. LexmanR 1 26.10.21 10:57 Сейчас в теме
Обработка PinkRabbitMQ
1.Соединение с локальным сервером Rabbit– соединение не проходит
2.Создали свой VHOST локальным сервером Rabbit – соединение не проходит
3.Развернули тестовый облачный сервер Rabbit размещен на cloudamqp.com – соединение проходит и сообщение отправлено в очередь
Тест на Python с с локальным сервером Rabbit
1. Скрипт на Python – соединение проходит и сообщение отправлено в очередь

Как итог могу сказать, что обработка работает только с облачным решением, с локальным кроликом по кокой-то причине не работает.
Не можем подключиться ни с помощью примера обработки, ни с помощью кода своей обработки
Прикрепленные файлы:
185. ripreal1 626 26.10.21 12:02 Сейчас в теме
Все там работает. И в облаке, и локально. Сам использую одну из последних версий компоненты для работы с локальным сервером RabbitMQ. Учите матчасть. Возможно права на vhost не предоставлены юзеру
user1687624; +1 – Ответить
187. LexmanR 1 26.10.21 16:22 Сейчас в теме
(184)

Заработало.
Не верно указал порт при подключении. Вылетело из головы, что порты в оболочке и при подключении в коде разные у Rabbit.
191. MVOralov_new 21.02.22 10:34 Сейчас в теме
Добрый день, подскажите, пожалуйста - какие будущие планы по развитию PinkRabbit? Есть ли вероятность, и если да, то когда планируется следующее включение:
1) Протокол AMQP версии 1.x
2) Поддержка альтернативных брокеров - кроме RMQ - например - Red Hat A-MQ, ActiveMQ, Kafka

Спасибо!
194. Begemoth80 448 12.05.22 15:15 Сейчас в теме
(191)
> Протокол AMQP версии 1.x
Сразу, как только появится готовая клиентская библиотек на с или с++ с поддержкой, мы сразу поддержим (пока есть библиотеки на ГО, джаве и т.п.).

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


>Поддержка альтернативных брокеров - кроме RMQ - например - Red Hat A-MQ, ActiveMQ, Kafka
Это точно пока не планируем
192. msergeev79 12 10.05.22 20:37 Сейчас в теме
Добрый день!
Для мобильной платформы версии не планируется?
193. Begemoth80 448 12.05.22 15:11 Сейчас в теме
(192) Открытой пока не планируется, закрытая есть в составе продукта БИТ.МДТ
Вы в принципе можете работать с кроликом из мобильной платформы через http
195. NikeeNik 81 29.07.22 10:05 Сейчас в теме
В последней версии компоненты (2.1.1.141) у меня не работает метод BasicConsumeMessage(), почему-то в параметр messageTag всегда возвращает 0, поэтому сделать ack не получается, сообщения так и висят в очереди.
keyn5565`; +1 – Ответить
196. NikeeNik 81 23.09.22 15:52 Сейчас в теме
(195) Заколебался, переписал на REST API
Rjhev; keyn5565`; +2 – Ответить
197. keyn5565` 17 26.10.22 14:56 Сейчас в теме
Добрый день!
Планируется ли исправление падения компоненты на linux?
198. Begemoth80 448 26.10.22 22:05 Сейчас в теме
(197) Ну мы ее активно используем ее на линуксе уже год, и не падает :-)
Т.е. возьмите свежую версию компоненты из репозитория, и опишите порядок воспроизведения проблемы
199. keyn5565` 17 27.10.22 16:08 Сейчас в теме
(198) Проверяли на самой свежей версии v2.1.1.141.
при подключении компоненты падает процесс rghost на сервере.
Особенно проявляется если использовать компоненту в несколько потоков.

падает при вызове:
ПодключитьВнешнююКомпоненту("ОбщийМакет.PinkRabbitMQ", "BITERP", ТипВнешнейКомпоненты.Native);


на Windosw сервере та же проблема, но только на актуальной версии компоненты

Как нам удалось выяснить, падение происходит если мы подключаем несколько экземпляров компоненты
Прикрепленные файлы:
200. Begemoth80 448 27.10.22 19:09 Сейчас в теме
(199) Да это известная проблема платформы, связанная с использованием одной и той же ВК в нескольких потоках на сервере.
Собственно по этому для последних версий мы собираем несколько одинаковых экземпляров компоненты с разным именем, для того, чтобы избежать падений нужно использовать в параллельных потоках разные экземпляры.

Скорее всего проблема решиться, на 21ой платформе если подключать компоненту в отдельном процессе (когда они поправят эту возможность)
keyn5565`; +1 – Ответить
201. Infactum 320 27.10.22 20:42 Сейчас в теме
(200) а код этой известной зарегистрированной ошибки можно? Звучит сомнительно.
203. Begemoth80 448 17.11.22 14:24 Сейчас в теме
(199) Выпустили новую версию компоненты, которая работает в отдельном потоке https://github.com/BITERP/PinkRabbitMQ/releases/tag/addins_PinkRabbitMQ_149­ (см. платформу начиная с 21 умеет подключать в отдельном потоке).
При таком способе подключения, описанных проблем быть не должно
204. keyn5565` 17 17.11.22 17:12 Сейчас в теме
(203) Я вам памятник поставлю!
Спасибо!
207. user991808 30.11.22 16:27 Сейчас в теме
(203)
Словили ошибку при фоновом запуске компоненты.
Подключение компоненты проводили в изолированном режиме

Имя сбойного приложения: addnhost64.exe, версия: 1.0.0.65, метка времени: 0x63469ae5
Имя сбойного модуля: PinkRabbitMQ64.dll, версия: 0.0.0.0, метка времени: 0x637610d1
Код исключения: 0xc0000409
Смещение ошибки: 0x00000000000ad361
Идентификатор сбойного процесса: 0x84
Время запуска сбойного приложения: 0x01d90493b6389da2
Путь сбойного приложения: C:\Program Files\1cv8\8.3.22.1709\bin\addnhost64.exe
Путь сбойного модуля: C:\Program Files\1cv8\common\PinkRabbitMQ64.dll
Идентификатор отчета: c1989dcd-620e-46cf-9c28-c593f03b6ac3
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
208. Begemoth80 448 30.11.22 23:01 Сейчас в теме
(207) А к чему это привело? Т.е. что-то в 1С упало или сломалось, или просто в журнале виндовс увидели ошибку, но на 1С никак не отразилось?

Ошибка была однократной, или повторялась?
210. user991808 01.12.22 08:37 Сейчас в теме
(208)
шибка была однократной, или повторялась?

Спасибо за ответ.
Постараюсь рассказать все по порядку. И так.
Операционная система: Windows 2016 Standart
Платформа: 8.3.22.1709
Версия компоненты: 2.1.1.149
Инициализация компоненты происходит на сервере в общем модуле в экспортной функции.
Код общего модуля инициализации компоненты выглядит так:

Попытка
КомпонентаКролика = Новый("AddIn.RabbitMQ.PinkRabbitMQ3");
Исключение
РезультатПодключения = ПодключитьВнешнююКомпоненту("C:\Program Files\1cv8\common\PinkRabbitMQ64.dll", "RabbitMQ", ТипВнешнейКомпоненты.Native, ТипПодключенияВнешнейКомпоненты.Изолированно);
КомпонентаКролика = ?(РезультатПодключения = Истина, Новый("AddIn.RabbitMQ.PinkRabbitMQ3"), Неопределено);
КонецПопытки;

Возврат КомпонентаКролика;

Далее компонента используется из обработки запускаемой по расписанию (1 раз в минуту), отправляет и получает сообщения с сервера кролика. Пока ограничились отправкой одного сообщения (тело сообщения "Ok". Строка JSON ) из одной базы и получением из другой базы с отправкой Ack после его прочтения. Дополнительных действий не производится.

При запуске компоненты в неизолируемом режиме вызывает перманентное "падение" службы rphost со всем вытекающими последствиями.
Если же запускать в изолированном режиме, то происходит падение с ошибкой в журнале windows описанной выше.
При этом служба rphost работает в штатном режиме. Отключений сеансов пользователей не замечено.

Падение происходит с непонятными интервалами времени. Иногда работает без регистрации ошибок в журнале день, а иногда "вылетает" каждые 15 минут.

Надеюсь моя информация поможет разобраться с данной ошибкой.
Спасибо)
209. Begemoth80 448 30.11.22 23:05 Сейчас в теме
(207) Там в папку пользователя в папку biterp пишутся логи компоненты (у меня в C:\Users\begemoth\AppData\Local\biterp\logs), можете по времени установить, при выполнении какого метода произошла ошибка?
211. user991808 01.12.22 09:37 Сейчас в теме
(209)
можете по времени установить, при выполнении какого метода произошла ошибка?


Лог компоненты:
[D 2022-12-01 01:36:32 1669847792 7728]construct
[D 2022-12-01 01:36:32 1669847792 7728]init start
[D 2022-12-01 01:36:32 1669847792 7728]init
[D 2022-12-01 01:36:32 1669847792 7728]init end
[D 2022-12-01 01:36:32 1669847792 7728]1C call proc start 1
[D 2022-12-01 01:36:32 1669847792 7728]1C call proc end 1
[D 2022-12-01 01:36:32 1669847792 7728]1C call func start 4
[D 2022-12-01 01:36:32 1669847792 7728]1C call func end 4
[D 2022-12-01 01:36:32 1669847792 7728]1C call func start 5
[D 2022-12-01 01:36:37 1669847797 7728]1C call func end 5
[D 2022-12-01 01:36:37 1669847797 7728]1C call proc start 6
[D 2022-12-01 01:36:37 1669847797 7728]1C call proc end 6
[D 2022-12-01 01:36:37 1669847797 7728]done start
[D 2022-12-01 01:36:37 1669847797 7728]done
[D 2022-12-01 01:36:37 1669847797 7728]done end
[D 2022-12-01 01:36:37 1669847797 7728]destruct

Ошибка в журнале Windows

Имя сбойного приложения: addnhost64.exe, версия: 1.0.0.65, метка времени: 0x63469ae5
Имя сбойного модуля: ntdll.dll, версия: 10.0.14393.3241, метка времени: 0x5d786bef
Код исключения: 0xc0000374
Смещение ошибки: 0x00000000000f7a33
Идентификатор сбойного процесса: 0x1554
Время запуска сбойного приложения: 0x01d905072a36e14b
Путь сбойного приложения: C:\Program Files\1cv8\8.3.22.1709\bin\addnhost64.exe
Путь сбойного модуля: C:\Windows\SYSTEM32\ntdll.dll
Идентификатор отчета: 1a76dc9f-5e5f-4307-b678-863c2e88c05c
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
(209)
214. user991808 02.12.22 09:28 Сейчас в теме
(209)
Добрый день.
Да, установили по логам. Может будет полезно другим коллегам при использовании компоненты.

Падение компоненты (и службы rphost если компонента подключена не в Изолированном режиме.) происходит в случаях:
1. Ошибки инициализации компоненты на сервере (не важно из макета двоичных данных или по указанию локального пути к компоненте) при вызове метода ПодключитьВнешнююКомпоненту(<Местоположение>, <Имя>, <Тип>, <ТипПодключения>)
2. При успешной инициализации компоненты на сервере, но при дальнейшей попытке подключения к серверу RabbitMQ (сервер не доступен, сеть не доступна или другие возможные ошибки)

В обоих перечисленных случаях в журнал Windows записывается ошибка вида (подключение компоненты в изолированном режиме):
Имя сбойного приложения: addnhost64.exe, версия: 1.0.0.65, метка времени: 0x63469ae5
Имя сбойного модуля: PinkRabbitMQ64.dll, версия: 0.0.0.0, метка времени: 0x637610d1
Код исключения: 0xc0000005
Смещение ошибки: 0x00000000000905e9
Идентификатор сбойного процесса: 0x273c
Время запуска сбойного приложения: 0x01d905dde90b63d7
Путь сбойного приложения: C:\Program Files\1cv8\8.3.22.1709\bin\addnhost64.exe
Путь сбойного модуля: C:\Program Files\1cv8\common\PinkRabbitMQ64.dll
Идентификатор отчета: b929f8eb-954d-4403-91af-ab43f239997e
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:

При подключении компоненты в неизолированном режиме происходит падение службы rphost с записью вида:
Имя сбойного приложения: rphost.exe, версия: 8.3.20.2180, метка времени: 0x637167be
Имя сбойного модуля: ntdll.dll, версия: 10.0.14393.5427, метка времени: 0x633688f6
Код исключения: 0xc0000374
Смещение ошибки: 0x00000000000f7183
Идентификатор сбойного процесса: 0x212c
Время запуска сбойного приложения: 0x01d8ff1c6dce18a2
Путь сбойного приложения: C:\Program Files\1cv8\8.3.20.2180\bin\rphost.exe
Путь сбойного модуля: C:\Windows\SYSTEM32\ntdll.dll
Идентификатор отчета: 40bbbb95-5b50-4917-ad47-d56faf4dd2ef
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:

Промежуточный вывод:
1. Компонента рабочая.
2. Подключать ТОЛЬКО в изолированном режиме
3. При использовании компоненты, необходимо дорабатывать исключения в работе компоненты средствами платформы.
4. Так как работа компоненты не устойчива, необходимо реализовать буфер сообщений средствами платформы при работе с сервером RabbitMQ
5. Для обмена сообщениями использовать небольшой объем данных тела сообщений (стрелять из пушки по воробьям наверное нет смысла, для этого есть более подходящие варианты)

Всем хорошего дня!
213. Begemoth80 448 01.12.22 16:03 Сейчас в теме
(207) А можете выложить кусок лога компоненты относящегося именно к этому сообщению, и указать точное время этого сообщения в журнале windows, чтобы мы могли сопоставить его с логом и понять при вызове какого метода возникла ошибка
215. user991808 02.12.22 09:40 Сейчас в теме
(213)
А можете выложить кусок лога компоненты относящегося именно к этому сообщению, и указать точное время этого сообщения в журнале windows, чтобы мы могли сопоставить его с логом и понять при вызове какого метода возникла ошибка


Ответил постом выше.
Наши "научные" изыскания так сказать, надеюсь помогут разработчикам компоненты "допилить" ее, а коллегам избежать сильнейших болей при краше службы rphost и "отвалом" интеграции с RabbitMQ
231. keyn5565` 17 11.01.23 15:20 Сейчас в теме
(203)
В многопоточном режиме не работает.
фоновые зависают при инициализации компоненты в изолированном режиме.
Мы реализовали подключение разных компонент, и при параллельной работе фоновые задания зависают
233. Begemoth80 448 11.01.23 19:47 Сейчас в теме
(231)

фоновые зависают при инициализации компоненты в изолированном режиме.
Мы реализовали подключение разных компонент, и при параллел



Правильно я понимаю что:
1. При работе внешней компоненты в изолированном режиме если фоновое задание одно, то все хорошо
2. При работе внешней компоненты в обычном (не изолированном/старом) режиме в нескольких праллельных заданиях все хорошо
3. При работе внешней компоненты в изолированном режиме в нескольких параллельных фоновых заданиях фоновые задания начиная со второго зависают при инициализации внешней компоненты

?
234. keyn5565` 17 12.01.23 14:31 Сейчас в теме
(233)
1. Да. Если задание одно, проблем нет.
2. В нескольких параллельных заданиях зависают фоновые.
3. В изолированном режиме при инициализации второй компоненты происходит зависание фоновых
236. Begemoth80 448 12.01.23 18:26 Сейчас в теме
(234)
аниях зависают фоновы


Ну т.е. зависание фоновых по видимому не связано с изолированным окружением, а связано с параллельной работой из разных заданий.

Мы обходим похожие проблемы следующим образом: в свойствах регл. задания ставим:
1. Время жизни регл задания 10 мин (кажется как то так называется)
2. Расписание каждую минуту
3. Ключ задания (чтобы 2 одновременно не запустились)

В результате даже если фоновое задание, запущенное из регл. задания зависнет, платформа его в худшем случае через 10 мин убьёт и через минуту новое запустит
239. keyn5565` 17 13.01.23 10:06 Сейчас в теме
(236)
Мы обходим похожие проблемы следующим образом: в свойствах регл. задания ставим:
1. Время жизни регл задания 10 мин (кажется как то так называется)
2. Расписание каждую минуту
3. Ключ задания (чтобы 2 одновременно не запустились)

У нас установлено практически так же, за исключением завершения рег. задания через 10 минут.
243. johnnyshut23 131 23.01.23 00:06 Сейчас в теме
(236)
Время жизни регл задания


Подскажите, а что за настройка такая "Время жизни рз"? не могу найти ничего похожего.
202. Begemoth80 448 28.10.22 09:46 Сейчас в теме
(201) 1С это ошибкой не признает и исправлять скорее всего не будет (т.е. исправлением является возможность запуска в отдельном процессе). Нам о проблеме рассказал Антон Дорошкевич (не помню в контексте какого обсуждения, год назад было).
Суть проблемы, как я помню, в том, что
1. если 2х потоках на сервере создать долгоживущий экземпляр одной и той же компоненты и имена компоненты одинаковые и процесс rphost общий, то платформа создает для нее общий "КЭШ"
2 если затем одном из потоков ее удалить, то платформа через 10 мин почистит этот КЭШ и если через эти 10 мин во втором потоке компонента будет еще жива, и обратиться к ней, то платформа падает

Т.е. у нас тоже бала такая проблема, как только мы этой рекомендации последовали (сделали компоненту с разным именем, чтобы мыл раздельный КЭШ, то проблема ушла
205. user1662836 25.11.22 10:20 Сейчас в теме
Добрый день! Будет ли реализован параметр "requeue" в методе BasicReject?
206. Begemoth80 448 25.11.22 16:39 Сейчас в теме
(205) Добрый день, пока не планировали. Опишите сценарий, где вы бы использовали requeue из 1С?
212. Begemoth80 448 01.12.22 12:41 Сейчас в теме
(210) (211) Спасибо!!! Будем смотреть
216. user1662836 05.12.22 06:47 Сейчас в теме
(206)
Обмен сайта с 1С через кролика. При ошибке загрузки сообщения хотелось бы простой метод возвращения его обратно в очередь. Сейчас BasicReject не работает, сообщение пропадает.
217. Begemoth80 448 05.12.22 13:23 Сейчас в теме
(216) Мы используем 2 подхода (в зависимости от задачи):
1. "Умный получатель", мы все сообщения забираем во внутреннюю очередь (на стороне 1С), и дальше обрабатываем в отдельном потоке (если есть ошибки обработки, обрабатываем повторно)
2. "Тупой получатель", при заборе сообщения пытаемся его обработать, подтверждаем сообщение только после обработки. Если падаем при обработке, то прерываем получение без подтверждения, и пробуем получить в следующий раз (в этом случае сообщение возвращается в очередь)

У вас какой-то другой сценарий?

Т.е. обычно явной возврат в очередь используется не для обработки ошибок, а для распараллеливания процесса, т.е. 1 процесс вернул, чтобы другой забрал (но вроде это не про 1С)
218. user1662836 05.12.22 14:06 Сейчас в теме
(217)
Можно, конечно, использовать и прерывание без подтверждения. Неаккуратненько. )
Думал, вдруг есть планы реализации исходного функционала.
219. FreeArcher 164 22.12.22 14:07 Сейчас в теме
Не могу подключить компоненту.
Подскажите, что делаю не так?

	УстановитьВнешнююКомпоненту("ОбщийМакет.PinkRabbitMQ");
	РезультатПодключения = ПодключитьВнешнююКомпоненту("ОбщийМакет.PinkRabbitMQ", "BITERP", ТипВнешнейКомпоненты.Native);
	Если РезультатПодключения Тогда
		КлиентКомпоненты  = Новый("AddIn.BITERP.PinkRabbitMQ");
	КонецЕсли;


В макете лежит архив PinkRabbitMQ3_v2.1.1.149.zip
РезультатПодключения возвращает Истина и есть окошко, что компонента подключена.
Но строчка КлиентКомпоненты = Новый("AddIn.BITERP.PinkRabbitMQ"); выдает ошибку
Тип не определен (AddIn.BITERP.PinkRabbitMQ)
220. FreeArcher 164 22.12.22 14:19 Сейчас в теме
(219) Методом тыка нашел
Клиент  = Новый("AddIn.BITERP.PinkRabbitMQ3");
221. user991808 22.12.22 16:07 Сейчас в теме
Кто может подсказать, чем отличаются версии PinkRabbitMQ3_v2.1.1.149.zip от PinkRabbitMQ2_v2.1.1.149.zip?
Есть еще версия PinkRabbitMQ_v2.1.1.149.zip

В чем отличия этих версий?
222. Begemoth80 448 22.12.22 18:56 Сейчас в теме
(221) (220) Подробное описание см. в http://forum.infostart.ru/forum28/topic222537/message2893470/#message2893470
Т.е. это одна и таже компонента отличающаяся только названием. Предназначена для того, чтобы обойти падение платформы при использовании одной и той-же компоненты в разных фоновых заданиях для платформы меньше 21

В платформах больше 21 можно использовать одну любую во всех заданиях, но подключать в отдельном потоке
223. user991808 23.12.22 07:38 Сейчас в теме
(222)
Подробное описание см. в http://forum.infostart.ru/forum28/topic222537/message2893470/#message2893470
Т.е. это одна и таже компонента отличающаяся только названием. Предназначена для того, чтобы обойти падение платформы при использовании одной и той-же компоненты в разных фоновых заданиях для платформы меньше 21

В платформах больше 21 можно использовать одну любую во всех заданиях, но подключать в отдельном потоке


Спасибо за ответ:)
224. FreeArcher 164 23.12.22 09:04 Сейчас в теме
(222) А что значит подключать в отдельном потоке?
225. Begemoth80 448 23.12.22 12:34 Сейчас в теме
(224) см. документацию по 21 платформе, у метода Подключить внешнюю компоненту, появился 3й параметр. Если его использовать, то для внешней компоненты будет создаваться отдельный поток, отличный от rphostа
FreeArcher; +1 – Ответить
226. keyn5565` 17 30.12.22 10:45 Сейчас в теме
Добрый день!
Начиная с версии v2.1.1.149
стали получать исключения при вызове метода "BasicAck"
Error calling context method (BasicAck);

, reason:
Add-in error

за раз мы получаем 1000 сообщений. Но из за этой ошибки получается забрать до 400 сообщений. Не подскажете в чем может быть причина?
227. keyn5565` 17 30.12.22 13:57 Сейчас в теме
(226) заметил еще кое что.
если словить эту ошибку, то последующий запуск зависает намертво.
228. Begemoth80 448 30.12.22 15:19 Сейчас в теме
(226) А если обработать ошибку в Попытка/Исключение и вывести текст через вызов метода GetLastError в компоненте, то что пишет?
230. keyn5565` 17 30.12.22 16:23 Сейчас в теме
(229)
(228)
GetLastError

При обращении GetLastError, возвращает либо "Метод не обнаружен", либо пустую строку.
Проблема возникает в обоих режимах, но в основном работаем в "Не изолированном"
Не могу понять закономерность
232. Begemoth80 448 11.01.23 19:37 Сейчас в теме
(230) А можете добавить логов в 1Сную часть, и показать чему равен messageTag в процессе получения сообщений (когда еще нет ошибки) и непосредственно перед ошибкой, т.е. что передается в BasicAck перед тем, как возникает ошибка
235. keyn5565` 17 12.01.23 14:50 Сейчас в теме
(232)
т.е. что передается в BasicAck перед тем, как возникает ошибка

ОтветноеСообщение:
ТегСообщения: 0
timeout: 5 000

Пока Клиент.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения, timeout) Цикл
Клиент.BasicAck(ТегСообщения);
ОтветноеСообщение = ""; // Обнуляем, чтобы избежать утечку памяти
ТегСообщения = 0; // Обнуляем, чтобы избежать утечку памяти
...
237. Begemoth80 448 12.01.23 18:30 Сейчас в теме
(235) А можно подробнее, т.е.
Мы в цикле Пока Клиент.BasicConsumeMessage() поулчаемсообщения и где то на 400м сообщении вызов Клиент.BasicAck(ТегСообщения) вызывает ошибку, при этом ТегСообщения =0, так (вообще это очень странно он должен монтонно расти по мере приема сообщений, и не должен быть 0)?

А чему равен ТегСообщения на предпоследнем сообщении которое удалось успешно подтвердить через Клиент.BasicAck() ?
238. keyn5565` 17 13.01.23 08:30 Сейчас в теме
(237)
    ИмяОчереди = "testroute";
    ОтправляемоеСообщение = "Test";
    ОтветноеСообщение = "";
    ТегСообщения = 0;
    
    УстановитьВнешнююКомпоненту("ОбщийМакет.PinkRabbitMQ");
    ПодключитьВнешнююКомпоненту("ОбщийМакет.PinkRabbitMQ", "BITERP", ТипВнешнейКомпоненты.Native);
    Клиент  = Новый("AddIn.BITERP.PinkRabbitMQ");
    
    Клиент.Connect("127.0.0.1", 5672, "user", "password", "vhost");
    Клиент.DeclareQueue(ИмяОчереди, Ложь, Ложь, Ложь, Ложь);
    Клиент.BasicPublish("", ИмяОчереди, ОтправляемоеСообщение, 0, Ложь);
    Попытка
        Потребитель = Клиент.BasicConsume(ИмяОчереди, "", Истина, Ложь, 0);
        Пока Клиент.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения, 5000) Цикл
            Клиент.BasicAck(ТегСообщения);
            Сообщить("Успешно! Из очереди прочитано сообщение " + ОтветноеСообщение);
            ОтветноеСообщение = ""; // Обнуляем, чтобы избежать утечку памяти
            ТегСообщения = 0; // Обнуляем, чтобы избежать утечку памяти
        КонецЦикла;
        Клиент.BasicCancel("");
    Исключение
        Сообщить(Клиент.GetLastError());
    КонецПопытки;
Показать

Реализовано на основании вашего примера.
Согласно ему, "ТегСообщения" всегда равен 0, в цикле он обнуляется.
240. Begemoth80 448 13.01.23 12:39 Сейчас в теме
(238)
Клиент.BasicAck(ТегСообщения);


Ну так интересно чему равен ТегСообщения перед вызовом Клиент.BasicAck(ТегСообщения); в котором происходит исключение
241. keyn5565` 17 13.01.23 12:54 Сейчас в теме
(240)
сообщений в очереди 8000
Получаем по 1000
Результат:
ТегСообщения: 470
timeout: 5 000

возможно ли что ошибка возникает если из одной очереди параллельно кто то тоже забирает сообщения, по этому и возникает ошибка?
229. Begemoth80 448 30.12.22 15:23 Сейчас в теме
(226)
v2.1.1.149


А проблема при подключении компоненты в отдельном потоке? Или в обоих режимах подключения
242. senshib 19.01.23 12:52 Сейчас в теме
Добрый день.
Версия dll - 2.1.1.149
Подключение через макет в ИБ с версией совместимости 8.3.21 и запуск в изолированном режиме.
Фоновое завершается через 10 минут и стартует одно новое.

При обнулении объекта компоненты в ТЖ такие строки:
10:56.318008-0,EXCP,2,process=rphost,p:processName=XXXX,OSThread=15728,t:clientID=175,t:applicationName=BackgroundJob,t:computerName=XXXXXXX,t:connectID=9736,SessionID=8703,Usr=DefUser,Exception=f6f167a0-dcc9-49ad-8f8e-2c9d9904e4fe,Descr="src\addnrmt\src\AddInTransportImpl.cpp(80):
f6f167a0-dcc9-49ad-8f8e-2c9d9904e4fe: Key not found: 'type'",Context='
ВнешняяОбработка.ЗагрузкаЗаказНарядИзRabbitMQ.МодульОбъекта : 40 : RMQ_РаботаСКомпонентой.ОбработатьСообщения(ПараметрыПотребителя, ИмяОбработчика, "нпОчередьСобытийЗаказНарядИзRabbitMQДляОбработки");
	дмИнтеграцияRabbitMQ ОбщийМодуль.RMQ_РаботаСКомпонентой.Модуль : 412 : УничтожитьОбъектКомпоненты(КлиентКомпоненты);
		дмИнтеграцияRabbitMQ ОбщийМодуль.RMQ_РаботаСКомпонентой.Модуль : 312 : КлиентКомпоненты = неопределено;'


В логах компоненты:
[D 2023-01-19 10:10:55 1674112255 14268]1C call func start 5
[D 2023-01-19 10:10:56 1674112256 14268]1C call func end 5
[D 2023-01-19 10:10:56 1674112256 14268]1C call proc start 6
[D 2023-01-19 10:10:56 1674112256 14268]1C call proc end 6
[D 2023-01-19 10:10:56 1674112256 14268]done start
[D 2023-01-19 10:10:56 1674112256 14268]done
[D 2023-01-19 10:10:56 1674112256 14268]done end
[D 2023-01-19 10:10:56 1674112256 14268]destruct


Это ведь ненормальное поведение завершения работы компоненты? Т.к. в памяти остаются процессы "addnhost64.exe" и спустя несколько часов работы рестартованной службы 1С этих процессов десятки.
244. Begemoth80 448 23.01.23 07:37 Сейчас в теме
(243) Расписание/Дневное/Завершать через
johnnyshut23; +1 – Ответить
245. senshib 23.01.23 13:23 Сейчас в теме
(244)
Расписание/Дневное/Завершать через
- я указал, что фоновое так и завершается через 10 минут.
Или предлагаете не обнулять объект компоненты в коде?
246. ser6702 187 05.03.23 22:14 Сейчас в теме
О адаптере к RabbitMQ который поставляется в виде расширения.
https://bit-erp.ru/adapter
Могу подтвердить что при наличии в компании специалистов с соответствующей квалификацией все нормально работает и взлетает.
247. Poroot4ik 28.03.23 10:55 Сейчас в теме
Огромное спасибо, за вашу разработку, очень помогли. Но заметил один баг. При переборе в цикле сообщений. Если после получения первого сообщения, при обработке этого сообщения проходит много времени, тогда компонента зависает на получении следующего сообщения.
248. Begemoth80 448 28.03.23 20:22 Сейчас в теме
(247)
при обработке этого сообщения проходит много времени, тогда компонента зависает на получении следующего сообщен


А много это сколько? т.е. не успевает TCP сессия отвалиться?
Посмотрите пожалуйста во время этой паузы на сервере RabbitMQ соединение с клиентом еще живое?
249. Poroot4ik 28.03.23 20:36 Сейчас в теме
(248)
Ну началось все с того, что было замечено, что на сервере висит соединение с RMQ. Когда начал разбираться, заметил, что при получении сообщения, если например стоять в отладке какое-то время, то при получении следующего сообщения 1С зависает. Сделал вывод, что скорее всего в какой-то момент из-за этого остается висеть соединение с очередью RMQ. Можете сами попробовать, подключитесь к очереди, а затем в цикле попробуйте обработать сообщения, и поставьте точку останова в цикле, и подождите минуту, может больше, соединение зависнет. Вообще должно работать так, мы один раз подключаемся к очереди, а затем обрабатываем все сообщения, потом закрываем соединение. Но из-за зависания при обработке сообщения, мне пришлось каждый раз подключатся к очереди, получать одно сообщение и затем закрывать соединение.
250. Begemoth80 448 31.03.23 14:27 Сейчас в теме
(249) Мы попробовали, и не удалось воспроизвести проблему. Т.е. вставали отладчиком после получения первого сообщения на 4 минуты, и потом все равно получались следующие сообщения.

Попробуйте сделать на брокере больший таймаут скажем 120 сек, см. https://www.rabbitmq.com/heartbeats.html
251. Poroot4ik 31.03.23 14:29 Сейчас в теме
(250)
Понял, спасибо. Но у меня такая проблема была, сейчас уже не смогу проверить. Я код переписал.
252. Poroot4ik 31.03.23 14:31 Сейчас в теме
(250)
Вообще эта проблема была и у других разработчиков. Они тоже переписывали код, чтобы получать по одному сообщению. Не могу сказать с чем это связано было.
253. odinassdeveloper 19.04.23 11:54 Сейчас в теме
Добрый день. В первую очередь - спасибо за вашу разработку.
Прочитал публикацию/ github/ комментарии, но не нашел ответ на вопрос как уведомлять 1С, что в кролике для него есть новое входящее сообщение.
Я так понимаю, во всех приведенных примерах 1с просто подключается к кролику, вычитывает все имеющиеся сообщения в нужной очереди, после чего отключается. Неужели предполагается просто осуществдять эту проверку с интервалом N секунд?
254. Begemoth80 448 19.04.23 16:26 Сейчас в теме
(253)

после чего отключается


Нет 1С не отключается, а ждет новых сообщений пока не закончиться таймаут. Т.е. если ставить этот таймаут достаточно большим (скажем 10мин) большем чем время перезапуска регл. задания для получения данных, то процесс получения будет практически мгновенным и бесконечным.

как уведомлять 1С
К сожалению на сервере технология внешних компонент nativeapi не позволяет в принципе никак уведомлять 1С о внешних событиях
odinassdeveloper; +1 – Ответить
255. odinassdeveloper 19.04.23 23:54 Сейчас в теме
(254)
т.е. в примере с github вызов:
Клиент.BasicConsumeMessage("", ОтветноеСообщение, ТегСообщения, 5000)
в случае пустой очереди будет 5 секунд ждать "а вдруг там что-то появится" и только потом вернет Ложь, правильно я понял?
Если да, то еще вопрос - в документации рекомендуется таймаут 3000-60000 мс. Это обусловлено какими-то ограничениями? В моем случае хочется сделать "бесконечного слушателя" и поставить таймаут 24 часа.
И в целом, вот это обертывание работы компоненты в регламентное задание с "завершать через 10 минут" чем вызвано? Нестабильность при длительной работе, борьба с утечками памяти или просто специфика применения в ваших проектах?
256. Begemoth80 448 20.04.23 07:02 Сейчас в теме
(255)
в случае пустой очереди будет 5 секунд ждать "а вдруг там что-то появится" и только потом вернет Ложь, правильно я понял?


Да

Это обусловлено какими-то ограничениями? В моем случае хочется сделать "бесконечного слушателя" и поставить таймаут 24 часа.


Нет никаких явных ограничений нет, но очень длинные (24 часа) регл. задания в 1С не выживают (умирают/зависают).
Интервал 10 мин выбран "по опыту".
Кроме интервала 10 мин, нужно поставить в расписании "запускать каждые 10 мин", и "Прибивать старые задания при перезапуске" (не помню как точно называется флаг, но где-то выше в этом треде уже писали).
Таким образом в самом плохом случае задержка в получении составит не более 10 мин
odinassdeveloper; +1 – Ответить
257. lleonidov 27.04.23 10:24 Сейчас в теме
Добрый день, спасибо за компоненту.
Есть просьба, добавьте в basicAck второй параметр channel.basicAck(deliveryTag, true);
Это бы очень сильно ускорило чтение из очереди кролика в схеме с подтверждением.
"For example, given that there are delivery tags 5, 6, 7, and 8 unacknowledged on channel Ch, when an acknowledgement frame arrives on that channel with delivery_tag set to 8 and multiple set to true, all tags from 5 to 8 will be acknowledged. If multiple was set to false, deliveries 5, 6, and 7 would still be unacknowledged."
258. lemilk 8 29.09.23 15:07 Сейчас в теме
Добрый день! После установки релиза 1С 8.3.22.2239
стало зависать на строке:
ПодключитьВнешнююКомпоненту("ОбщийМакет.PinkRabbitMQ", "BITERP", ТипВнешнейКомпоненты.Native);

Как это можно исправить? После перезапуска службы сервера 1С некоторое время работает - потом зависает
259. German_L 09.11.23 16:56 Сейчас в теме
(258) Добрый день! Попробуйте использовать неизолированный способ подключения компоненты.
260. lemilk 8 24.11.23 16:23 Сейчас в теме
(259) Пробовали оба режима подключения. Результат один. Некоторое время работает - потом зависает.
keyn5565`; +1 – Ответить
263. AlexSTAL 127 29.08.24 10:15 Сейчас в теме
(258) Вероятно это связано с ошибкой 70056326, хоть в описании и указано, что она для Linux, но мы её подтвердили и для Windows. На свежих платформах она исправлена
261. user662605_bencly 21.08.24 10:10 Сейчас в теме
Подскажите, я в общий макет подливаю новую версию компоненты (прям архив PinkRabbitMQ2_2_v2.2.0.37.zip
) в общий макет, и не подключается компонента. А если беру общий макет из приложенной обработки в этой статье, то все работает, но версия соответственно старая. Как-то надо по особенному подлить в общий макет? что-то не пойму почему не хочет работать
262. user662605_bencly 21.08.24 10:30 Сейчас в теме
(261) кажись сам разобрался, нужно было изменить вот это

как было у меня ==> Компонента = Новый("AddIn.BITERP.PinkRabbitMQ");

как стало с использованием новой версии ==> Компонента = Новый("AddIn.BITERP.PinkRabbitMQ2_2");
264. user858809 05.11.24 10:19 Сейчас в теме
Добрый день. Подскажите по какой причине последние версии компоненты кодируют большие сообщения в base64? можно ли это как то отключить?
265. SergeSHA 21.03.25 09:38 Сейчас в теме
Добрый день. Подскажите имеется сервер 1С (8.3.25.1394) под ubuntu 22.04 - компонента при использовании на сервере НЕ подключается, в чём может быть проблема?
267. SergeSHA 21.03.25 23:19 Сейчас в теме
разобрался - нужно вручную установить библиотеку (например, /opt/1c/components/) на сервере и прописать переменные окружения (Environment="LD_LIBRARY_PATH=/opt/1c/components/").
268. Begemoth80 448 22.03.25 08:39 Сейчас в теме
(267) Ну вообще это странно. Именно на 25ой платформе не тестировали, но на всех прошлых платформах такого делать не приходилось
269. Begemoth80 448 28.03.25 13:52 Сейчас в теме
(265) Попробуйте пожалуйста на последней версии https://github.com/BITERP/PinkRabbitMQ/releases/tag/prmq_42
Т.е. действительно в 25 версии платформы под линукс в платформу включили другую версию библиотеки.
272. 0ct0ber 14.11.25 13:28 Сейчас в теме
(269) Добрый день. Компонента отказывается подключаться. Сервер 1С 8.3.25.1445 под Debian GNU/Linux 11 (bullseye). Просто false возвращает при подключении. Версия компоненты последняя: PinkRabbitMQ_v2.2.0.42.zip. Рядом на MSQL проблем нет.
270. Avatarzorro 82 21.05.25 18:06 Сейчас в теме
сталкивался кто с падением компоненты при попытке отправить "большое" сообщение? у мня на 100+к байт компонента тупо падает, хотя в протоколе сообщения до 500мб поддерживаются. При этом при падение сообщение все же доходит до очереди, но может немного целостность поломаться
271. Bassgood 1509 26.05.25 12:08 Сейчас в теме
При вызове метода компоненты "Connect" наблюдается повышение загрузки процессора (ЦП) на 25%, т.е. фактически не выполняя еще каких-либо операций с брокером процессор уже на 1/4 чем-то занят?
Есть предположение, что при вызове этого метода в компоненте выполняется какой-то бесконечный цикл ожидания, который бесполезно сильно нагружает процессор.
Данная проблема наблюдается как в версии "PinkRabbitMQ3_v2.2.0.42", так и в более старой версии (от 2021 года), т.е. проблема уже очень старая, но видимо до сих пор еще не оптимизирована.
Прикрепленные файлы:
keyn5565`; +1 – Ответить
273. Jokemas 196 25.12.25 23:58 Сейчас в теме
Пытаюсь собрать компоненту из исходников, версии 2.2.0.42 со своим именем, чтобы не конфликтовала с уже собранными. Компонента собирается без ошибок, в 1С подключается нормально, но при попытке получить компоненту - ничего не выходит, ошибка "тип не определен".

Для сборки используется Visual Studio 2022 из под win10, со всеми необходимыми зависимостями

Инструкция по сборке давно не обновлялась и устарела.

Есть идеи, как собрать компоненту?

Задача в том, что на компоненте много всяких обменов висит, и чтобы не конфликтовали на каждую операцию, что вертится, используется свой экземпляр, Поэтому нужно прям много компонент. Может есть обновлённая инструкция по сборке?
274. Begemoth80 448 26.12.25 07:15 Сейчас в теме
(273) Компонента собирается на гитхаб экшенс, пайпалайн сборки лежит там же в репозитории https://github.com/BITERP/PinkRabbitMQ/blob/master/.github/workflows/build.yml
(собственно его сейчас для сборки и используют)



(273)
на каждую операцию, что вертится, используется свой экземпляр

Собственно для этого в релизе уже собирается 2 десятка компонент, которые отличаются только именами https://github.com/BITERP/PinkRabbitMQ/releases/tag/prmq_42

То что до "_v2" это имя компоненты как ее в 1С подключать.
275. Jokemas 196 26.12.25 09:54 Сейчас в теме
(274) 2 десятка мало, как оказалось =). Да, я пока ковырял нашёл инструкции сборки yml, понял, порядок сборки. Надо только повторить.

Спасиб за ответ!
276. Begemoth80 448 26.12.25 13:37 Сейчас в теме
(275) Кажется что будет достаточно просто форкнуть репозиторий, подправить список собираемых экземпляров в файле https://github.com/BITERP/PinkRabbitMQ/blob/prmq_42/.github/workflows/entry.yml и собрать через гитхабэкшенс.
277. evgaid 149 14.01.26 09:01 Сейчас в теме
Добрый день. Не посдкажите - база стала выдавать ошибку
Не подклюилась компонента = {sensi_WebService ОбщийМодуль.ex_ОбщийМодульСерверRabbitMQ.Модуль(71)}: Тип не определен (AddIn.BITERP.PinkRabbitMQ)
мне она по наследству досталась. Не подскажите как решить проблему
278. Jokemas 196 07.02.26 13:12 Сейчас в теме
(277) имя компоненты в строке "AddIn.BITERP.PinkRabbitMQ", т.е. "PinkRabbitMQ" не совпадает с тем, что внутри компоненты указано.

Скорее всего это связано с обновлением компоненты.
279. Evgeniy 107 22.07.26 21:01 Сейчас в теме
(278) Коллеги, кто может поделиться последней версией данной обработки, в которую внедрена последняя версия компоненты? Буду очень признателен. Взамен могу поделиться стартмани.
Для отправки сообщения требуется регистрация/авторизация