All Projects → emqx → emqx-exhook

emqx / emqx-exhook

Licence: Apache-2.0 license
The Multiple-Language extension plugin for EMQ X Hooks

Programming Languages

erlang
1774 projects
java
68154 projects - #9 most used programming language
python
139335 projects - #7 most used programming language
Makefile
30231 projects

emqx_extension_hook

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.

Feature

  • Support python and java.
  • 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.

Architecture

 EMQ X                                      Third-party Runtimes
+========================+                 +====================+
|    Extension           |                 |                    |
|   +----------------+   |     Hooks       |  Python scripts /  |
|   |    Drivers     | ------------------> |  Java Classes   /  |
|   +----------------+   |     (pipe)      |  Others ...        |
|                        |                 |                    |
+========================+                 +====================+

Drivers

Python

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

Java

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

Configurations

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

SDK

See sdk/README.md

Known Issues or TODOs

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.

Reference

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].