165 lines
4.7 KiB
Markdown
165 lines
4.7 KiB
Markdown
#Rule-Engine-CLIs
|
|
|
|
## Rules
|
|
|
|
### create
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl rules create 'SELECT payload FROM "t/#" username="Steven"' '[{"name":"data_to_webserver", "params": {"$resource": "resource:9093f1cb"}}]' --descr="Msg From Steven to WebServer"
|
|
|
|
Rule rule:98a75239 created
|
|
```
|
|
|
|
### modify
|
|
|
|
|
|
```shell
|
|
## update sql, action, description
|
|
$ ./bin/emqx_ctl rules update 'rule:98a75239' \
|
|
-s "select * from \"t/a\" " \
|
|
-a '[{"name":"do_nothing", "fallbacks": []' -g continue \
|
|
-d 'Rule for debug2' \
|
|
|
|
## update sql only
|
|
$ ./bin/emqx_ctl rules update 'rule:98a75239' -s 'SELECT * FROM "t/a"'
|
|
|
|
## disable the rule
|
|
$ ./bin/emqx_ctl rules update 'rule:98a75239' -e false
|
|
|
|
```
|
|
|
|
### show
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl rules show rule:98a75239
|
|
|
|
rule(id='rule:98a75239', rawsql='SELECT payload FROM "t/#" username="Steven"', actions=[{"name":"data_to_webserver","params":{"$resource":"resource:9093f1cb","url":"http://host-name/chats"}}], enabled='true', description='Msg From Steven to WebServer')
|
|
```
|
|
|
|
### list
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl rules list
|
|
|
|
rule(id='rule:98a75239', rawsql='SELECT payload FROM "t/#" username="Steven"', actions=[{"name":"data_to_webserver","params":{"$resource":"resource:9093f1cb","url":"http://host-name/chats"}}], enabled='true', description='Msg From Steven to WebServer')
|
|
|
|
```
|
|
|
|
### delete
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl rules delete 'rule:98a75239'
|
|
|
|
ok
|
|
```
|
|
|
|
## Actions
|
|
|
|
### list
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl rule-actions list
|
|
|
|
action(name='republish', app='emqx_rule_engine', types=[], params=#{...}, description='Republish a MQTT message to a another topic')
|
|
action(name='inspect', app='emqx_rule_engine', types=[], params=#{...}, description='Inspect the details of action params for debug purpose')
|
|
action(name='data_to_webserver', app='emqx_web_hook', types=[], params=#{...}, description='Forward Messages to Web Server')
|
|
```
|
|
|
|
### show
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl rule-actions show 'data_to_webserver'
|
|
|
|
action(name='data_to_webserver', app='emqx_web_hook', types=['web_hook'], params=#{...}, description='Forward Messages to Web Server')
|
|
```
|
|
|
|
## Resource
|
|
|
|
### create
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl resources create 'web_hook' -c '{"url": "http://host-name/chats"}' --descr 'Resource towards http://host-name/chats'
|
|
|
|
Resource resource:19addfef created
|
|
```
|
|
|
|
### list
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl resources list
|
|
|
|
resource(id='resource:19addfef', type='web_hook', config=#{<<"url">> => <<"http://host-name/chats">>}, attrs=undefined, description='Resource towards http://host-name/chats')
|
|
|
|
```
|
|
|
|
### list all resources of a type
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl resources list -t 'web_hook'
|
|
|
|
resource(id='resource:19addfef', type='web_hook', config=#{<<"url">> => <<"http://host-name/chats">>}, attrs=undefined, description='Resource towards http://host-name/chats')
|
|
```
|
|
|
|
### show
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl resources show 'resource:19addfef'
|
|
|
|
resource(id='resource:19addfef', type='web_hook', config=#{<<"url">> => <<"http://host-name/chats">>}, attrs=undefined, description='Resource towards http://host-name/chats')
|
|
```
|
|
|
|
### delete
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl resources delete 'resource:19addfef'
|
|
|
|
ok
|
|
```
|
|
|
|
## Resources Types
|
|
|
|
### list
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl resource-types list
|
|
|
|
resource_type(name='built_in', provider='emqx_rule_engine', params=#{...}, on_create={emqx_rule_actions,on_resource_create}, description='The built in resource type for debug purpose')
|
|
resource_type(name='web_hook', provider='emqx_web_hook', params=#{...}, on_create={emqx_web_hook_actions,on_resource_create}, description='WebHook Resource')
|
|
```
|
|
|
|
### show
|
|
|
|
```shell
|
|
$ ./bin/emqx_ctl resource-types show built_in
|
|
|
|
resource_type(name='built_in', provider='emqx_rule_engine', params=#{}, description='The built in resource type for debug purpose')
|
|
```
|
|
|
|
## Rule example using webhook
|
|
|
|
``` shell
|
|
1. Create a webhook resource to URL http://127.0.0.1:9910.
|
|
./bin/emqx_ctl resources create 'web_hook' --config '{"url": "http://127.0.0.1:9910", "headers": {"token":"axfw34y235wrq234t4ersgw4t"}, "method": "POST"}'
|
|
Resource resource:3128243e created
|
|
|
|
2. Create a rule using action data_to_webserver, and bind above resource to that action.
|
|
./bin/emqx_ctl rules create 'client.connected' 'SELECT clientid as c, username as u.name FROM "#"' '[{"name":"data_to_webserver", "params": {"$resource": "resource:3128243e"}}]' --descr "Forward Connected Events to WebServer"
|
|
Rule rule:222b59f7 created
|
|
```
|
|
|
|
Start a simple `Web Server` using `nc`, and then connect to emqx broker using a mqtt client with username = 'Shawn':
|
|
|
|
```shell
|
|
$ echo -e "HTTP/1.1 200 OK\n\n $(date)" | nc -l 127.0.0.1 9910
|
|
|
|
POST / HTTP/1.1
|
|
content-type: application/json
|
|
content-length: 48
|
|
te:
|
|
host: 127.0.0.1:9910
|
|
connection: keep-alive
|
|
token: axfw34y235wrq234t4ersgw4t
|
|
|
|
{"c":"clientId-bP70ymeIyo","u":{"name":"Shawn"}
|
|
```
|