Сборка данной библиотеки осуществляется из внутренней сети компании BIOCAD (до того момента, как данный компонент будет переведён в hackage) с помощью инструмента stack:
stack build
Данная библиотека используется при разработке компонентов на языке haskell. Её необходимо подключить в зависимостях разрабатываемой библиотеки.
Порядок создания нового компонента описан тут.
Подразумевается, что "одно место" у вас уже запущено на локальной машине (подробнее читай в документации mq).
Перед запуском необходимо собрать все примеры с помощью команды
stack build
Является примером асинхронного общения двух компонентов: один умеет формировать и рассылать сообщения, а другой их получать и обрабатывать.
Типы сообщений для данного примера определены в этом файле.
"Радио точка" реализована в этом файле и запускается с помощью команды
stack exec example-radio-speaker
Получатель сообщений реализован в этом файле и запускается с помощью команды
stack exec example-radio-listener
Можно обратить внимание на то, что получатель сообщений реализован с использованием соответствующего шаблона.
Является примером компонента, который умеет принять соответствующее сообщение с конфигурацией, обработать его и отправить результат обратно. Раньше такой компонент назывался "рабочим".
Типы сообщений для данного примера определены в этом файле.
Логика простейшего калькулятора описана в этом файле, а запускается он с помощью команды
stack exec example-calculator
Поставить задачу этому компоненту можно с помощью библиотеки mq-jobcontrol. Необходимо помнить, что калькулятор к этому моменту уже должен быть запущен.
Можно обратить внимание на то, что калькулятор реализован с использованием соответствующего шаблона.
Является примером того, как один компонент при выполнении задачи может использовать другой компонент. При выполнении задачи банк будет использовать компонент из примера "калькулятор", который описан выше. Поэтому и его тоже надо запустить.
Типы сообщений для данного примера определены в этом файле.
Логика нашего банка определена в этом файле, а запускается он с помощью команды
stack exec example-bank
Поставить задачу этому компоненту можно также с помощью библиотеки mq-jobcontrol.
Можно обратить внимание на то, что банк использует шаблон "рабочего" и вызов удалённого компонента.
Является примером компонента, задачи на который распределяются через контроллер (для более подробной информации читай тут).
Типы сообщений для данного примера определены в этом файле.
Пример состоит из двух частей. Первая часть принимает сообщение от соответствующего контроллера и возвращает в очередь ответ с текущим временем. Логика этого компонента определена в этом файле
Компонент, который выполняет работу, описан в этом файле.
Перед запускам этого компонента необходимо запустить контроллер.
Как именно это сделать, описано в этом репозитории.
Для запуска конкретно этого примера никаких правок в файле config.json
производить не следует.
После запуска контроллера сам компонент можно запустить с помощью команды
stack exec example-clock-reply
stack exec example-clock-reply
Здесь приведена одна и та же команда. Их можно ввести в различных терминалах. Если всё будет запущено правильно, то после запуска второй части (которая описана ниже) можно будет увидеть, что эти два приложения будут по очереди принимать и выполнять задачи.
Вторая часть совсем простая. Это самый обычный компонент, который в некоторой периодичностью отправляет в очередь вопрос, а получив на него ответ просто его печатает. Логика этого компонента описана в этом файле и его можно запустить с помощью команды
stack exec example-clock-ask
Как вы уже наверняка знаете, для полноценной работы компонента в его обёртке необходимо реализовать различную функциональность. Ниже приведены указания на места в библиотеке с соответствующей реализацией.
Основные модули:
- Протокол
- Транспортный слой
- Межпоточное общение между техническим и коммуникационным слоями
- Технический слой
- Коммуникационный слой (реализуется в каждом компоненте отдельно)
- Конфигурации
- Окружения
- Запуск приложения
Дополнительные модули: