0. Goleff74 150 09.06.18 19:40 Сейчас в теме

RabbitMQ + 1С. Быстрый старт

Внешняя компонента для отправки сообщения из 1С в кролика. Сервис прослушивания и перенаправления сообщений из кролика в http или web-сервис.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. kraynev-navi 409 10.06.18 07:45 Сейчас в теме
Я бы все-таки обратил внимание на разграничение доступа. Нужна хотя бы минимальная защита. Любая копия базы, снятая с рабочей, начнет слать в рэббит "левые" сообщения. Сэкономленные человеко-часы будут перечеркнуты "случайными" отправками платежных документов из баз разработчиков.
2. Goleff74 150 10.06.18 10:28 Сейчас в теме
(1)
Ну, это уже на уровне кода конфигураций контролировать. Либо ключи маршрутизации создавать вида <Строка базы 1><Строка базы 2>, или наплодить несколько узлов с именами Система отправителя в виде строк этих баз, и оттуда уже ключами маршрутизации перенаправлять в узел получателя. Простор для творчества.
А еще лучше не регистрировать компоненту на сервере разработчиков :)
3. Steelvan 10.06.18 11:53 Сейчас в теме
туториал = руководство, неуч
Yakud3a; Gureev; +2 20 Ответить
6. nixel 777 10.06.18 23:44 Сейчас в теме
(3) граммар наци живёт в ЖЖ. проследуйте туда.
RFP; ZhdanovR; ktb; amon_ra; pbazeliuk; webester; UniversaLL; +7 Ответить
12. Evil Beaver 6199 13.06.18 18:47 Сейчас в теме
4. s-coder 10.06.18 20:44 Сейчас в теме
Почему я должен скачивать за мани этих стар, чтобы попробовать?
5. Goleff74 150 10.06.18 23:01 Сейчас в теме
(4)
Вы не должны
Ganjubas; Alien_job; o.nikolaev; kote; Berckk; ABudnikov; igormiro; bsturtle; baton_pk; Evil Beaver; JohnyDeath; WizaXxX; ArchLord42; madonov; karpik666; ktb; pbazeliuk; jaroslav.h; evgefremov; 9-pm; ifal; t.v.s.; UniversaLL; +23 Ответить
7. Новиков 291 13.06.18 11:56 Сейчас в теме
Приветствую!

К Вашей цитате:
я не обнаружил сразу описания HTTP интерфейса Кролика


Не могли бы пруфом поделиться? Спасибо!
8. Goleff74 150 13.06.18 12:23 Сейчас в теме
10. Evil Beaver 6199 13.06.18 18:37 Сейчас в теме
(8) ой не, HTTP-API это прям совсем медленно, тем более, что по ссылке - администраторский API. Да, он позволяет отправлять, но это костылище. Используйте родных клиентов, работающих по протоколу AMQP. Например, наш <скрытая реклама детектед> :)
32. barelpro 1025 01.12.18 11:11 Сейчас в теме
(10) Коллега, можно подробней плз, за счет чего прямые HTTP-запросы из 1С к RMQ медленнее вашей ВК? Сравнительные замеры проводили?
9. user634257_mryzhov 13.06.18 16:04 Сейчас в теме
В целом не видно в чем здесь выигрыш от Раббит.
30 тысяч сообщений в сутки - не является каким то запредельным параметром для стандартных файловых транспортов фтп, общая папка. Интересно менялась ли схема выгружаемых данных,обработка коллизий, обработка потери сообщений (по крайней мере не принятые пакеты хорошо бы не удалять из очереди или кидать в очередь сообщений с ошибками). Как я понял по коду компоненты, нет обработки исключений, т.е. сообщение в любом случае удаляется из очереди.
Открывает лог отправки данных в системе отправителе и смотрит в нем все статусы пакета данных (дата отправки, дата получения, ссылка на текст отправленных данных).
Проверяет логику формирования данных.
Подобную логику можно гораздо легче на стандартном обмене через файлы реализовать. А то усложняем там где ничего усложнять не требуется.
11. Evil Beaver 6199 13.06.18 18:40 Сейчас в теме
(9) дело в управлении этим хранилищем файлов. Рано или поздно, автоматизируя папку обмена и настраивая к ней доступ, вы напишете сервер очередей. Так может сразу начать с него?
artbear; Сурикат; +2 Ответить
13. user634257_mryzhov 14.06.18 16:21 Сейчас в теме
(11) На этапе когда нужен обмен между двумя базами - сервер очередей избыточен.
В описанном примере это именно такой случай - из-за применения Раббита осталось только еще больше не проработанных вопросов, которые до этого при обычном файловом обмене были решены. То есть мы существенно увеличили сложность решения (отдельный сервер очередей, внешние компоненты для обмена, ХТТП-сервис), функциональность та же, а качество хуже.

Rabbit - не серебрянная пуля:)

Я не рассматриваю случаи когда у нас сотни потребителей, распаралеленные очереди, несколько серверов очередей связанных между собой и разнородные среды для интеграции - тогда да я обеими руками за Раббит)
14. 1cProfit 25.06.18 15:49 Сейчас в теме
у кого-то есть готовая компонента для раббита ?
15. Goleff74 150 28.06.18 10:15 Сейчас в теме
(14)
Прикреплена к статье вместе с исходниками.
16. baracuda 2 26.07.18 12:36 Сейчас в теме
Правильно понимаю, что в основном это применяется для разработки сервисных шин данных? ESB?
Где еще можно применить связку?
17. Goleff74 150 26.07.18 14:13 Сейчас в теме
(16)
Например, распределение пиковой нагрузки. Пришло вам 100500 запросов в секунду и веб-сервер отказался работать. Засунули эти 100500 в очередь, сами указали сколько потоков параллельно обрабатываются из Кролика и в колбэк функцию вернули результаты запроса.
18. baracuda 2 26.07.18 15:16 Сейчас в теме
(17) ясно. спасибо за пример.
19. zarucheisky 30.07.18 11:29 Сейчас в теме
(0) ActiveMQ имеет встроенный REST API :)
Вовсе необязательно подсовывать кролика где ни попадя.
noname148; kote; +2 Ответить
20. MherArsh 24 29.10.18 18:17 Сейчас в теме
А можно как то подписаться на события кролика?
21. Goleff74 150 29.10.18 18:19 Сейчас в теме
(20)
Дописывать / Переписывать приложенную службу.
22. MherArsh 24 29.10.18 18:40 Сейчас в теме
(21) не реализовано, понял, но вот в чем вопрос, как в контексте сервера можно подписаться на события, это не регламентное задание где периодически что то вызывается, все, а иметь запущенного клиента тоже не очень хорошо... у меня варианты кончились )
23. Goleff74 150 29.10.18 20:59 Сейчас в теме
(22)
Не понимаю вашей боли. Давайте пример, чтоли, что вы хотите получить.
24. MherArsh 24 30.10.18 11:01 Сейчас в теме
(23) хочу обработать события по конкретному каналу из кролика, как это сделать в контексте севера 1С, без запущенных клиентов 1С.
25. Goleff74 150 30.10.18 13:35 Сейчас в теме
(24)
При получении сообщения служба посылает http-запрос по указанному вами адресу. Клиентов никаких загружать не надо. Или вы под событиями понимаете что-то иное?
26. MherArsh 24 30.10.18 18:03 Сейчас в теме
(25) я сейчас не говорю про http, его нет, есть RabbitMQ, как 1С может получать данные из какой то очереди, при их появлении.
27. Goleff74 150 30.10.18 18:22 Сейчас в теме
(26)
Эм. Вы ведь прочитали публикацию?
Получателям 1С служба умеет отправлять данные двумя способами - в HTTP-сервис или в Web-сервис. Служба может поднимать множественное количество подписчиков на разные ключи маршрутизации и узлы, переправляя данные в http и/или web-сервис.

Не можете поднять веб-сервер, допишите службу, пусть напрямую в СКЛ пушит данные или КОМ-соединение поднимает и в него пуляет.
30. MherArsh 24 30.10.18 19:33 Сейчас в теме
(27) я читал, и все понял, и задал вопрос, может не по конкретной это теме но это про очереди+1с в целом, как решить вопрос я знаю, просто хочется послушать мысли умных людей по этому вопросу :)
33. leka99 21 22.03.19 11:06 Сейчас в теме
Добрый день.
При подключении к серверу кроля с сервера (Windows server 2008 R2) выдаёт ошибку - {ВнешняяОбработка.ПостановкаВОчередьКролика.МодульОбъекта(27)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (AMQPSending): Не удалось загрузить файл или сборку "RabbitMQ.Client, Version=5.0.0.0, Culture=neutral, PublicKeyToken=89e7d7c5feba84ce" либо одну из их зависимостей. Не удается найти указанный файл.
Подключение с компа с Windows 7 работает.
Не подскажите направление - в чем может быть проблема ?
28. artbear 1143 30.10.18 18:56 Сейчас в теме
(26) Обрати внимание на платную компоненту
https://silverbulleters.org/rabbitmq

Серьезно и быстро
29. artbear 1143 30.10.18 18:56 Сейчас в теме
(28) Работает напрямую с Реббитом через нативную компоненту 1С
31. MherArsh 24 30.10.18 19:42 Сейчас в теме
(29) спасибо за ссылку, не вариант
34. ardarik 9 11.04.19 09:55 Сейчас в теме
А где в конфиг файле указывается лого пасы web-сервиса?
35. spogo 2 12.04.19 11:00 Сейчас в теме
Коллеги, объясните мне убогому пожалуйста.
Правильно я понимаю: Когда на Кролик приходит некое сообщение оно переправляется слушателю.
Слушать пусть будет вебсервис 1С. я не понимаю где я должен указать логин и пароль вебсервиса 1С чтобы кролик в него послал это некое сообщение.
36. seregasame 29.04.19 13:34 Сейчас в теме
webClient.Headers.Add("Authorization: Basic", "логин:пароль"); логин:пароль от 1С нужно в басе64
или
soapRequest.Headers.Add("Authorization: Basic", "логин:пароль");

в зависимости от того что вы используете, http или soap

            
            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("логин:пароль");
            webClient.Headers.Add("Authorization: Basic", System.Convert.ToBase64String(plainTextBytes));


или

            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("логин:пароль");
            soapRequest.Headers.Add("Authorization: Basic", System.Convert.ToBase64String(plainTextBytes));
37. seregasame 29.04.19 14:13 Сейчас в теме
можете самостоятельно добавить в файл Consumers.xml в тег Consumer пару полей user1c и password1c.
добавить их же в класс MyConsumer и в его конструктор.
добавить в ServiceMQConsumer в методе InitialiazeConsumers их заполнение.
при отправке запроса в хеадер добавлять логин и пасс из конкретного экземпляра mqConsumer
38. seregasame 30.04.19 10:14 Сейчас в теме
С хеадерами правильно вот так:

            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(this.user1c + ":" + this.password1c);
            webClient.Headers.Add("Authorization", "Basic " + System.Convert.ToBase64String(plainTextBytes));

и
            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(this.user1c + ":" + this.password1c);
            soapRequest.Headers.Add("Authorization", "Basic " + System.Convert.ToBase64String(plainTextBytes));
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Бизнес-аналитик 1С
Москва
зарплата от 140 000 руб. до 200 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Консультант 1С (Бухгалтерия)
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Программист 1С
Тюмень
зарплата от 70 000 руб.
Полный день