emqx_eviction_agent is a part of the node evacuation/node rebalance feature in EMQX.
It is a low-level application that encapsulates working with actual MQTT connections.
emqx_eviction_agent application:
The emqx_eviction_agent is relatively passive and has no eviction/rebalancing logic. It allows
emqx_node_rebalance to perform eviction/rebalancing operations using high-level API, without having to deal with
MQTT connections directly.
emqx_eviction_agent interacts with the following EMQX components:
emqx_cm - to get the list of active MQTT connections;emqx_hooks subsystem - to block/unblock incoming connections;emqx_channel and the corresponding connection modules to perform the eviction.The application provided a very simple API (CLI and HTTP) to inspect the current blocking status.
The rebalancing concept is described in the corresponding EIP.
Please see our contributing.md.