The emqx_extension_hook
extremly enhance the extensibility for EMQ X. It allow using an others programming language to mount the hooks intead of erlang.
- Support
python
andjava
. - Support all hooks of emqx.
- Allows you to use the return value to extend emqx behavior.
We temporarily no plans to support other languages. Plaease open a issue if you have to use other programming languages.
EMQ X Third-party Runtimes
+========================+ +====================+
| Extension | | |
| +----------------+ | Hooks | Python scripts / |
| | Drivers | ------------------> | Java Classes / |
| +----------------+ | (pipe) | Others ... |
| | | |
+========================+ +====================+
Requirements:
- It requires the emqx hosted machine has Python3 Runtimes (not support python2)
- The
python3
executable commands in your shell
Examples:
See test/scripts/main.py
Requirements:
- It requires the emqx hosted machine has Java 8+ Runtimes
- An executable commands in your shell, i,g:
java
Examples:
See test/scripts/Main.java
Name | Data Type | Options | Default | Description |
---|---|---|---|---|
drivers | Enum | python3 java |
python3 |
Drivers type |
.path | String | - | data/extension |
The codes/library search path |
.call_timeout | Duration | - | 5s |
Function call timeout |
.pool_size | Integer | - | 8 |
The pool size for the driver |
.init_module | String | - | main | The module name for initial call |
See sdk/README.md
Configurable Log System
- use stderr to print logs to the emqx console instead of stdout. An alternative is to print the logs to a file.
- The Java driver can not redirect the
stderr
stream to erlang vm on Windows platform.