RuleGo — это облегченная версия языка Go.、высокийпроизводительность、Двигатель правил Интегра. Это также гибкая конфигурация и инфраструктура обработки событий с широкими возможностями настройки. Входные сообщения можно фильтровать.、Конвертировать、Обогащайтесь и совершайте различные действия.
Использовать лицензию с открытым исходным кодом Apache-2.0
цепочка правила — это логическая группа узлов правил и их отношений. Получает исходящее сообщение от узла и отправляет его следующему узлу или узлам через указанную связь. Вот некоторые часто используемые цепочки правилпример:
RuleGo — это облегченная версия языка Go.、высокийпроизводительность、Двигатель правил Интегра. Это также гибкая конфигурация и инфраструктура обработки событий с широкими возможностями настройки. Входные сообщения можно фильтровать.、Конвертировать、Обогащайтесь и совершайте различные действия.
Этот проект находится под сильным влиянием Thingsboard Вдохновлять. Справочник правил Мысль,Однако в структуру были внесены существенные изменения.,Для удовлетворения следующих сценариев:
использоватьgo getЗаказ УстановитьRuleGo:
go get github.com/rulego/rulego
https://github.com/rulego/rulego/blob/main/README_ZH.md#%E4%BD%BF%E7%94%A8
использоватьJsonопределение форматацепочка правилDSL:
В следующем примере определяются 3 узла правил: цепочка правил逻辑нравиться下图:(更多пример参考testcases/)
{
"ruleChain": {
"name": "тестцепочка правил",
"root": true
},
"metadata": {
"nodes": [
{
"id": "s1",
"type": "jsFilter",
"name": "фильтр",
"debugMode": true,
"configuration": {
"jsScript": "return msg!='bb';"
}
},
{
"id": "s2",
"type": "jsTransform",
"name": «конвертировать»,
"debugMode": true,
"configuration": {
"jsScript": "metadata['test']='test02';\n metadata['index']=50;\n msgType='TEST_MSG_TYPE2';\n var msg2=JSON.parse(msg);\n msg2['aa']=66;\n return {'msg':msg2,'metadata':metadata,'msgType':msgType};"
}
},
{
"id": "s3",
"type": "restApiCall",
"name": "толкатьданные",
"debugMode": true,
"configuration": {
"restEndpointUrlPattern": "http://192.168.216.21:9099/api/socket/msg",
"requestMethod": "POST",
"maxParallelRequestsCount": 200
}
}
],
"connections": [
{
"fromId": "s1",
"toId": "s2",
"type": "True"
},
{
"fromId": "s2",
"toId": "s3",
"type": "Success"
}
],
"ruleChainConnections": null
}
}
Подробности смотрите в документе README.md.
Rulego практически не добавляет дополнительных затрат на систему,Очень низкое использование ресурсов,Потому что у использования есть пул объектных сопрограмм и пул объектов.,Производительность даже выше, чем при прямом вызове бизнеса.,Особенно подходит для работы на пограничных серверах.
Машина: Raspberry Pi 2 (900 МГц) Cortex-A7*4,1GB LPDDR2) Размер данных: 260Б цепочка правил:JSФильтрация скриптов->JSсложный Конвертировать->HTTPтолкать Результаты теста: 100 параллелизма и 500 параллелизма, использование памяти не сильно меняется, оба около 19M.