# Multi-language support

Since 4.1, EMQ X provides multi-language support. It allows users to use Python, Java or other programming languages to handle EMQ X's hooks, or parse your private protocol on TCP/UDP transport. In this way, you can customize EMQ X with other programming languages.


  • In 4.1 and 4.2, this functional was implemented using erlport (opens new window) as the low-level communication support, and it was upgraded to gRPC (opens new window) in the 4.3. These two version interface are not compatible. Please check the corresponding documentation for the older implemented.

  • After 4.3, all hooks are publicly supported.

# Extension Hook

The Extension Hook is supported by the emqx-exhook plugin. It allows users to process EMQ X's Hooks using other programming languages. For example:

  • Check the login permission for a client.
  • Check the PUB/SUB operation privileges for a client.
  • Bridge or Store a message

See: Extension Hook.

# Extension Protocol

The Extension Protocol is supported by the emqx-exproto plugin. It allows users to implement their private access protocol using other programming languages. In the emqx-exproto, you can:

  • Establish a connection based on TCP/SSL/UDP/DTLS
  • Subscribe a topic to receive messages and deliver it to your client
  • Parse bytes and publish it to EMQ X

# Historical Legacy

Prior to EMQ X 4.1, only Lua support was included, and it was implemented by emqx-lua-hook. This plugin only supports handling of hooks, not protocol access.

See: Lua Support.