#KafkaЭтоПросто: Kafka Adapter 1С (Confluent) - отправляем сообщения

24.07.22

Разработка - Инструментарий разработчика

Сегодня поднимем в docker kafka с confluent'om, а в 1С, в EDT загрузим проект из репозитория, создадим обработку, в которой несколькими строчками отправим сообщение в kafka через rest proxy и в confluent control center посмотрим на него. Если коротко, то: как отправить сообщение в Kafka несколькими строчками кода без компонент, регистраций и смс.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Конфигурация с модулем адаптера Kafka(из примера)
.cf 46,67Kb ver:0.4
25
25 Скачать (5 SM) Купить за 3 050 руб.
Обработка с кнопкой "отправить" из примера
.epf 6,71Kb
21
21 Скачать (1 SM) Купить за 1 850 руб.

Введение

Меня очень печалит тот факт, что в 1С принято изобретать собственные решения вместо того, чтобы пользоваться готовыми.

Сей факт, возможно, следует из-за отсутствия вменяемого канала дистрибьюции модульных решений и поиска по ним.

К сожалению, данный канал дистрибьюции пока является единственным возможным, и я понимаю, что решение со временем "утонет", но надеюсь на индексацию и, возможно, несколько "звездочек", которые заставят публикацию "всплыть".

 

Предисловие

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

Честно сказать, я очень надеялся, что появится какое-то простое и удобное решение в общем доступе для общения с кафкой. Но, похоже, в этом никто не заинтересован, разработчики не заинтересованы, потому что нужно быстрее на коленке написать код и задеплоить в продакшен, гуру заинтересованы продать свою компоненту или решение, которое придумали, сама 1С заинтересована в том, чтобы на ее новую "поделку" - "1С:Шина" люди "сели".

И вот, найдя немного времени, решил поделиться результатом, который получился - модуль, адаптер, который позволяет выполнять взаимодействие с кафкой через рест прокси от confluent несколькими строчками кода.

Сегодня будем отправлять сообщение.

Подготовка

Для экспериментов нам нужно окружение, а именно сама кафка.

1. Ставим Docker.

2. Ставим в докер себе конфлюент(https://docs.confluent.io/platform/current/quickstart/ce-docker-quickstart.html#cp-quickstart-step-1)

 

3. Запускаем:

 

4. Проверяем: http://localhost:9021/

 

5. Далее переходим к 1с, клонируем репозиторий, создаем базу, обновляем ее:

 

6. Далее делаем обработку с кнопкой которая и будет отсылать сообщение:

 

7. Дальше копируем код отсюда: https://github.com/huxuxuya/KafkaConfluentRESTProxyAdapter1C

 

8. Дальше запускаем обработину, нажимаем кнопку:

 

9. И идем в панель управления и смотрим сообщение которое отправили:

 

 

В следующей части будем читать сообщения, если наберется хотя бы 100 плюсиков :)

 

Платформа, на которой проводилась демонстрация: 8.3.19.1467 

Зависимости:

"Коннектор: удобный HTTP-клиент для 1С:Предприятие 8" https://github.com/vbondarevsky/Connector

 

Ссылки:

Данная разработка: GitHub: 1С Kafka Confluent Adapter

 

Прочее:

Обработка "FormCodeGenerator"Проект на GitHub 

Группа в телеграмм: https://t.me/FormCodeGenerator1c

Статьи:

Модуль "FormEditor"(РедакторФорм)Проект на GitHub 

Статьи:

кафка kafka confluent proxy adapter адаптер какфка шина интеграции брокер сообщений api

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159648    875    399    

862

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7853    58    23    

69

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    20676    21    49    

38

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23488    68    45    

117

Поиск данных Внешние источники данных Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Если вам нужно автоматически генерировать представления (view) к вашей базе данных 1С (есть две версии - для СУБД MS SQL Server и для PostgreSQL) по структуре метаданных 1С, то вам необходима данная обработка. Наш "Генератор View", другими словами - это коннектор к данным 1С для Power BI - незаменимый помощник для бизнес-аналитиков, работающих с базами 1С из Yandex Datalens/Power BI и т.д. Работает для обычных и управляемых форм под 1С 8.3

230000 руб.

31.07.2020    13741    13    48    

25

Внешние источники данных Зарплата Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

48000 руб.

24.04.2017    51044    101    165    

89

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    10793    13    8    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1324 25.07.22 08:37 Сейчас в теме
Желательно перед использование описать что такое confluent, за что хотят денег (с какого порога надо платить), какую часть платформы используем.
Спойлеры можно подписывать.
Код лучше текстом чем скриншотами, удобнее копировать, ключевые блоки кода можно и без спойлеров.

В целом полезно.

Дальше нужно мерять предел производительности на ядро, для определения порога применения, после которого надо переходить на NativeAPI + TCP.
ProstoProgrammist; Johny_v; Upiterus; Dimanchik00; izidakg; cleaner_it; CyberCerber; huxuxuya; +8 Ответить
9. huxuxuya 376 26.07.22 09:59 Сейчас в теме
(1) Спасибо за комментарий, хорошее замечание, только вот если про конфлюент рассказывать то это же выйдет статья больше чем эта в несколько раз :)

Главной целью статьи у меня было показать что в пару кликов можно сделать так, чтобы ты мог "потыкать" кафку если это все ещё экзотика и отправить сообщение, т.е. прям базовый минимум, который очень-очень простой.
Чтобы это не казалось рокет сайнсом.

Код отдельно не вставлял, чтобы как раз скопировать нельзя было, а надо было по ссылке в доку перейти на гитхаб и почитать пришлось.

Не знаю достаточно ли дополнить информацию в комментарии, но могу добавить про лицензирование - у конфлюента комьюнити версия и ее единственное ограничение - ее нельзя использовать если у тебя SAAS сервис, для таких случаев надо энтерпрайз версию покупать.В большинстве случаев комьюнити версии достаточно.

По производительности точных цифр конечно не скажу, сравнить было бы интересно, но компонент для Кафки для 1са вроде в паблике не видел.
2. mifka186 9 25.07.22 10:55 Сейчас в теме
И про формат AVRO расскажете?
6. stepan96 74 26.07.22 08:53 Сейчас в теме
(2) Вы тоже с АВРО намучились? )))))) Мы найфай используем.
8. huxuxuya 376 26.07.22 09:43 Сейчас в теме
(2)нет, про авро, протобаф не буду рассказывать, аудитории в 1се нет кому это будет интересно :(
16. palsergeich 27.07.22 13:13 Сейчас в теме
(8)Жаль, на самом деле это спорное утверждение.
Очень был бы не лишним, сторонние системы очень просят.
Пока на json торгуемся.
ShiningPhoenix; +1 Ответить
3. BESL 25.07.22 14:13 Сейчас в теме
Как kafka ведет себя при отправке в нее больших файлов(>10 мб) ?
7. stepan96 74 26.07.22 08:55 Сейчас в теме
(3) Не нужно в кафку кидать такие большие сообщения. В какой-то момент у нас тоже возникла подобная потребность, но еще раз все проанализировав, поняли, что сообщение можно упростить.
10. huxuxuya 376 26.07.22 10:00 Сейчас в теме
(3) а что за файлы >10 мб в кафку отправляются?
4. malikov_pro 1324 26.07.22 07:18 Сейчас в теме
(3) Объект (большой файл(>10 мб)) в объектное хранилище, например S3, а в kafka ссылку на него. Не нужно гвозди забивать микроскопом.
5. Serg O. 297 26.07.22 08:51 Сейчас в теме
интересное решение, спасибо автору +
но почему confluent ? Для чего он нужен ? и почему именно он ? confluent - платный?
одной Kafka не достаточно?

Я так понял из описания с официального сайта confluent.io, что это очередная API и web-интерфейс для Шина данных Kafka...
Вроде пару-тройку лет назад все "топили" за различные "бесплатные" и "условно-бесплатные" решения
Elastic+ Kafka, Kafka + Grafana и т.п.
И вроде как понятно было для чего... для сбора/хранения и анализа Журнала регистрации и различных мониторингов и метрик в онлайне... Дашборды всякие красивые...
например, 2020г статья https://infostart.ru/1c/articles/1216620/ по докладу на INFOSTART EVENT 2019

а это решение - для чего может пригодиться?
11. huxuxuya 376 26.07.22 11:00 Сейчас в теме
(5) конфлюент - веб морда для Кафки + рест интерфейс + schema registry

confluent в версии комьюнити эдишн бесплатный, но его нельзя использовать в SAAS продуктах

Одной кафки может быть достаточно, если у тебя есть компонента для подключения к кафки, но компонент в открытом доступе я не видел, у серебряной пули была компонента которую они продавали, но если вдруг у кого есть компонента, с удовольствием бы с ней ознакомился :)

Если знаете ещё нормальные рест интерфейсы к кафки, напишите ознакомлюсь, но 3-4 года назад и конфлюента то не было.

Про "Elastic+ Kafka, Kafka + Grafana" даже не знаю что ответить, кафка - брокер сообщений, нужна для отправки чем чтения сообщений, эластик - нужен для поиска и визуализации информации, графана для сбора метрик, конечно можно при отправке сообщения в кафку так же логировать его в эластике и отправлять какие то метрики в графану, но кажется что это разные продукты, конечно можно их скрещивать и строить какие то архитектурные решения с кучей продуктов, но тут бы с кафкой сначала разобраться:)
pavlov_dv; Serg O.; +2 Ответить
12. Serg O. 297 26.07.22 17:50 Сейчас в теме
(11) а это решение: Kafka + Confluent для чего может пригодиться?
Зачем слать какие-то текстовые сообщения в Kafka?
Кто их оттуда забирать/видеть будет?

Есть ли разделение на "каналы" или ещё какое-то разделение ?.
Чтобы сообщения видели только те, для кого "это" сообщение предназначено?
нечто подобное была публикация про сервер и клиент Centrifugo
(у сервера сразу есть web-админка )
- там тоже можно "сообщения", точнее JSON-текст POST-запросами к API посылать сразу на нужный "канал", а подключенные к этому каналу "клиенты" тут же (0,1 - 0,2 сек) принимают это сообщение.

есть в этой схеме что-то похожее ? или всё ручками ? сам закинул сам и забирай?
не очень понятна схема что куда и главное зачем

целый абзац с официального сайта - очень размыто и не понятно зачем всё-таки он нужен:
Why Confluent ?
"Интегрируя исторические данные и данные в реальном времени в единый центральный источник достоверной информации, Confluent упрощает создание совершенно новой категории современных приложений, управляемых событиями, обеспечивает универсальный конвейер данных и открывает новые мощные варианты использования с полной масштабируемостью. , производительность и надежность."
14. Dimanchik00 27.07.22 06:11 Сейчас в теме
(11)
отправке

Вроде проскакивала компонента на просторах сети. Но это лучше у Алексея Лустина спросить.
18. rabid_otter 134 29.07.22 10:01 Сейчас в теме
(11)

Если знаете ещё нормальные рест интерфейсы к кафки, напишите ознакомлюсь, но 3-4 года назад и конфлюента то не было.


confluent был еще в 2018м.
правда после обновления версии Kafka, внезапно перестал быстро читать сообщения.
компонента от серебряной пули у меня есть, но она чет тоже как-то медленно сообщеньки читает - 1200 в минуту.
возможно дело в том, что у нас как-то неправильно была настроена Kafka.
с нашими объемами нас бы съел бизнес - питонисты написали нам REST-сервис, который отдавал сообщеньки в 1С.
я потом ушел из 1С, устал сношаться с ее вечными "да, но нет".
13. huxuxuya 376 26.07.22 20:54 Сейчас в теме
а это решение: Kafka + Confluent для чего может пригодиться?

Kafka как и RabbitMQ - брокеры сообщений, нужны чтобы обмениваться сообщениями, сейчас эти брокеры являются корпоративным стандартом.

Но т.к. возможности платформы ограничены нашим любимым вендором, 1с не поддерживает возможность работать с данными брокерами из коробки и скорее всего не будет поддерживать, т.к. она выпустила 1С:Шину и надо пользоваться ей.

Why Confluent ?

Чтобы получить возможность как отправлять так и читать сообщения из этих брокеров, нужна дополнительная прослойка - либо компонента, либо апишка, которая предоставит такую возможность. И вот тут выходит на сцену Confluent Rest Proxy который и предоставляет такую возможность.
Грубо говоря Confluent в этом примере нужен только как посредник для отправки и получения сообщений.
Для всех нормальных языков уже давным давно написаны адаптеры для работы с этими брокерами, только 1С отстает лет на 5 - 10 от других.


Есть ли разделение на "каналы" или ещё какое-то разделение ?.

Кафка имеет топики и группы получателей, в топики засылаются сообщения, получатели на них подписываются, потом забирают.
Доставкой сообщений ни кафка ни реббит не занимаются.

Кто их оттуда забирать/видеть будет?

Грубо говоря в 1с есть номенклатура и это мастер система, в кафке создаешь топик "номенклатура" и туда из 1с засылаешь сообщения, дальше системы, которым это нужно, например какая то аналитическая система, или бэк для сайта или любой другой потребитель, подписывается на этот топик и забирает себе оттуда всю самую актуальную номенклатуру.

Зачем слать какие-то текстовые сообщения в Kafka?

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

есть в этой схеме что-то похожее ? или всё ручками ? сам закинул сам и забирай?

Только pull модель, кафка это не ESB, маршрутизацией не занимается, трансформированием данных не занимается. Но тебе ничего не мешает взять ESB систему, подключить коннектором ее к кафке, настроить маршрутизацию и тогда она будет сама доставлять сообщения в другую систему из кафки и вручную ничего ручками забирать не надо будет.
clic007; vampo; kotlovD; ShiningPhoenix; Serg O.; pavlov_dv; +6 Ответить
15. Serg O. 297 27.07.22 09:59 Сейчас в теме
(13) спасибо за развёрнутый ответ
17. kotlovD 88 28.07.22 12:12 Сейчас в теме
(13) спасибо. Вот бы это сразу в статье разместить
19. DenisDert 17.08.22 00:31 Сейчас в теме
(13)
Доставкой сообщений ни кафка ни реббит не занимаются


У RabbitMQ Push модель доставки сообщений, pull api поддерживается, но устарело
huxuxuya; +1 Ответить
26. Power_0N 45 02.01.23 21:01 Сейчас в теме
(13) а разве Универсальный обмен данными и фабрики XDTO в 1С это не механизм стандартизации обменов ?
27. huxuxuya 376 12.01.23 13:14 Сейчас в теме
(26) Если рассматривать только системы 1с то да, xdto и универсальный обмен это хороший механизм стандартизации обменов в контексте 1Са, но если смотреть шире на все системы компании, то это получается такое решение "в себе" - сделал 1с для продуктов 1с(т.к. обмен в хмл формате и еще и на русском все).
Но тут основное централизация, а дальше от централизации, идет стандартизация, чтобы у тебя в одной очереди не лежали архивчики, в другой ХМЛки, в третьей джейсоны ну и дальше в джейсончиках чтобы были одинаковые принципы структурирования данных.
20. gybson 07.09.22 17:03 Сейчас в теме
Брокер сообщений это намного меньше, чем ESB и в принципе даже по идеологии не очень хорошо подходит. Шина в первую очередь распаривает узлы обмена, здесь этого нет. Шина подразумевает конвертацию данных, тут этого тоже нет. Брокер сообщений просто транспорт, как тот же самый e-mail.
21. huxuxuya 376 13.09.22 10:24 Сейчас в теме
(20) Добрый день, а где я перепутал значение брокера сообщения и esb решения? Я понимаю различие, но не понимаю где не так выразился.
22. gybson 13.09.22 12:12 Сейчас в теме
(21)" сама 1С заинтересована в том, чтобы на ее новую "поделку" - "1С:Шина" люди "сели"".

Вот это тут не в тему. Их поделка с кроликом работает и с кафкой думаю будет работать.
23. huxuxuya 376 21.09.22 14:48 Сейчас в теме
(22)
Не вижу противоречий.
Я тут написал про то что 1С вынуждает покупать 1С Шину в любом случае.

Сама 1С:Шина позволяет работать с брокерами сообщений, например рэббит и каффка, но при этом в платформу не добавляют возможности работать с данными брокерами напрямую(сомневаюсь что это сделать сложно. скорее политика компании), т.к. если бы добавили эта 1С:Шина не продавалась бы. И получается что эту часть вендор не развивает в угоду кроссейла.
24. gybson 21.09.22 16:21 Сейчас в теме
(23) Для широкого пользователя такая интеграция не нужна. Для узкого есть внешние компоненты. Хотя лучше поднимать рест-апи для кролика.
25. dtybr 16 08.10.22 13:13 Сейчас в теме
Добрый день.
Скажите а есть возможность от Kafka формировать WebHook на опубликованный из 1с HTTP сервис?
Каким модулем Kafka это может делать?
28. huxuxuya 376 12.01.23 13:16 Сейчас в теме
(25) Не изучал вопрос, можно попробовать что нибудь в докере изобразить, должно быть не сложно, но это будет отдельный сервис. Если о вебхуках и кафке речь, может стоит посмотреть в сторону шины, там емул например, который на себя возьмет мониторинг очереди и доставку сообщений. Или ту же шину 1са.
29. AlexanderChurbanov 02.02.23 21:09 Сейчас в теме
(28) подскажите, пожалуйста, каким докером вы пользуетесь ? Не совсем понял по скриншоту, спасибо!
30. FreeArcher 162 13.11.23 12:45 Сейчас в теме
Спасибо за статью и конфигурацию! Получилось отправлять и получать сообщения.
Единственное не могу попасть в админку кафки по адресу http://localhost:9021/. Пишет что адрес не доступен. Пробовал и другие сборки поднимать, так же не могу попасть в админку. Что-то может быть её нужно или не так делаю?
31. rom-x 152 14.11.23 14:09 Сейчас в теме
Для тех кто будет разворачивать в докере, с 4 гб озу сервис не завелся ksqldb-server exit 137, выдал 8 гб и все ок.
Оставьте свое сообщение