0

I’m trying to understand how plugin systems differ between Mattermost and Apache APISIX, specifically in how they use RPC for external plugins.

Mattermost plugins must be written in Go. The server runs plugins as subprocesses and communicates with them over RPC. The documentation states:

“Mattermost plugins extend the server using a Go API. In the future, gRPC may be supported, allowing you to write plugins in any language. For now, you’ll need a functioning Go environment.”

From this, it sounds like Mattermost cannot use RPC with plugins written in other languages.

However, Apache APISIX, which is written in Lua, supports external plugins written in many languages (Go, Python, Java, Node.js, etc.). These plugins communicate with APISIX over RPC as well, but they require language-specific runners such as go-runner or java-runner.

My question is:

How does RPC communication work in APISIX between Lua and external plugin processes (e.g., Lua → Go or Lua → Java)? Do these runners play an extra role to make this multi-language RPC possible?

Can someone explain the architectural difference between APISIX’s approach and Mattermost’s?

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.