nsq - еще один менеджер очередей

05.03.20

Интеграция - WEB-интеграция

В статье будет описан процесс запуска nsq. Данный mq достаточно прост в использовании по сравнению с другими. Самое главное для меня в этом менеджере, это возможность отправить данные так: http://127.0.0.1:4151/pub?topic=test-messages - вполне достаточно когда 1С выступает поставщиком данных.

Быстрый старт

Скачиваем бинарники. Далее описание будет под window, есть так же docker-compose, запускается с пол пинка

Разархивируем все в папку C:\nsq-1.2.0\, будем запускать приложения с учетом предварительного перехода в эту директорию 'cd /d C:\nsq-1.2.0'

  1. В первую очередь из командной строки запускаем nsqlookupd - это своего рода сервис дискавери, он в курсе обо всех запущенных экземплярах основного сервиса nsqd, официальная документация
cd /d C:\nsq-1.2.0 nsqlookupd 
  1. В новом экземпляре командной строки, запускаем nsqd - это основной сервис, который получает, кладет в очередь и отдает клиентам сообщения, официальная документация
cd /d C:\nsq-1.2.0 nsqd --lookupd-tcp-address=127.0.0.1:4160 --max-msg-size 52428800

--lookupd-tcp-address - это установка адреса nsqlookupd, в первую очередь nsqd сообщает nsqlookupd, что он запущен и адрес как к нему можно обратиться

--max-msg-size - максимальный размер принимаемых сообщений, по умолчанию 1048576 байт, около 1 мб. В примере ставим 52МБ.

  1. в новом экземпляре командной строки запускаем nsqadmin - это веб интерфейс администратора для выполнения различных задач с кластером
cd /d C:\nsq-1.2.0 nsqadmin --lookupd-http-address=127.0.0.1:4161

Теперь можно перейти в админку по адресу http://localhost:4171/

  1. В админ панели заходим в раздел Lookup
  2. Создадим новый топик с именем test-messages и в поле channel укажем group-app-1

В идеологии NSQ, понятие topik является потоком данных, а channel выступает в роли логической группы подписчиков. Балансировку нагрузки на несколько экземпляров сервиса-подписчика как раз можно реализовать с помощью channels.

  1. в новом экземпляре командной строки запускаем nsq_tail - это один из вариантов реализации подписчика, который выводит данные в stdout. Этот экземпляр будет подключен только к топику, без указания канала, т.е будет получать все сообщения по топику.
cd /d C:\nsq-1.2.0 nsq_tail --topic=test-messages --lookupd-http-address=localhost:4161

Существуют другие варианты реализации подписчиков:

  • nsq_to_file - клиент записывающий данные в файл
  • nsq_to_http - клиент, который перенаправляет сообщение по http (get или post) по другому адресу.
  • nsq_to_nsq - перенаправляет сообщения в другой nsqd по TCP, как вариант реализации федерации.

Про все утилиты в официальной документации

  1. в новом экземпляре командной строки еще раз запускаем nsq_tail, но добавим указание канала
cd /d C:\nsq-1.2.0 nsq_tail --topic=test-messages --channel=group-app-1 --lookupd-http-address=localhost:4161
  1. еще раз повторим пункт 7, что бы у нас было несколько экземпляров одной группы (channel)

В итоге, у нас запущено 6 командных строк, 3 сервисных, 3 клиента

  1. одно из преимуществ nsq в том, что из коробки мы имеем возможность опубликовать сообщение по http, выполним cURL запрос
curl -d 'evening in the hut 1' 'http://127.0.0.1:4151/pub?topic=test-messages'

После выполнения отправки сообщения, в 2х из 3х клиентов мы увидим наше сообщение, в экземпляр без канала, сообщение пришло 100%, а вот из группы group-app-1 сообщение получил только один из экземпляров.

  1. выполним еще одну отправку сообщения
curl -d 'evening in the hut 1' 'http://127.0.0.1:4151/pub?topic=test-messages'

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

Вместо итога

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

Есть официальные библиотеки на go и python, список из официальной документации

nsq mq очереди обмен интеграция

См. также

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    1235    1    1    

4

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18355    20    22    

18

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20564    13    19    

18

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    320    2    0    

5

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    2483    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 307 05.03.20 13:01 Сейчас в теме
Какой-то сумбурный набор предложений криво переведенных фраз из документации с постоянной отсылкой к документации.

Во всей публикации 1С упомянуто только 1 раз в заголовке.

Есть официальные библиотеки на go и python, список из официальной документации


Здорово !
Нам, 1Сникам, это очень важно !
DrAku1a; t278; +2 Ответить
3. pallid 273 05.03.20 13:04 Сейчас в теме
(1) Рад что Вы прочитали до конца.

Нам, 1Сникам, это очень важно !


Да, важно. Мы часто используем не только 1С.
2. Steelvan 307 05.03.20 13:02 Сейчас в теме
Инфостарт уже превращается в чьи-то записные книжки для хранения заметок ?
4. pallid 273 05.03.20 13:07 Сейчас в теме
(2) вот тут в точку, ранее это был гист https://gist.github.com/pallid/45fda5d91bc323df8d33486d9147054a

решил поделиться и тут
9. DrAku1a 1748 07.03.20 07:32 Сейчас в теме
1. Что такое nsq, для чего он нужен и на кой он 1С-никам?
2. Стиль описания и вёрстка текста - просто ужасны
3. Не говоря уже, что это копипаст с другого источника, упомянутого в (4), причем, в оригинале оформлено намного лучше.
4. Зачем вообще это выкладывать на Инфостарте?
5. orfos 218 05.03.20 17:29 Сейчас в теме
Вася привет !!! Как дела? Как поживаешь?
Скажи а какой практическое применения этой штуки?
Можно свой мессенджер запилить?
6. pallid 273 05.03.20 17:36 Сейчас в теме
(5) Месседжер или чат можно https://github.com/manhtai/golang-nsq-chat вот пример

Практическое применение у меня такое:
- регламентная отправка информации из >500 областей данных 1С в nsq
- забор информации группой клиентов из очереди

Ну как бы это компонента для etl процесса
7. orfos 218 06.03.20 00:09 Сейчас в теме
(6) Спасибо почитаю. У нас IRIS для таких целей используется
8. t278 58 06.03.20 03:38 Сейчас в теме
для чего нужен nsq ???
Нет аннотации статьи
Оставьте свое сообщение