# 插件

EMQX 插件允许用户使用 Erlang 扩展核心功能，或将自定义逻辑集成到消息服务器中。这种机制非常适合实现自定义认证、权限控制、日志记录、指标采集或协议转换等功能。

本章节介绍插件的基本概念，以及如何开发、定制和管理插件。

## 什么是插件？

在 EMQX 中，插件是运行于 EMQX 节点中的 Erlang/OTP 应用。插件通过钩子与 EMQX 核心系统交互，钩子是一些预定义的事件，例如客户端连接、消息发布、认证等。

要在 EMQX 中使用插件，通常需要：

1. 构建为发布包， 即一个 `.tar.gz` 文件，包含编译后的插件及其元数据；
2. 通过 Dashboard、REST API 或 CLI 进行安装；
3. 通过配置和生命周期操作进行管理（如启动、停止、卸载）。

插件启动时，通常会将部分函数注册为 EMQX 的回调函数，以扩展或修改其默认行为。插件彼此之间、以及与核心系统是隔离运行的，避免相互影响。同时，插件具备完整的生命周期管理机制，涵盖安装、启动、停止和卸载，使其在生产环境中更安全、可控。

## 核心概念

- **钩子**：EMQX 工作流程中的扩展点，插件可以在这些点插入自定义逻辑。
- **回调函数**：插件模块中注册到钩子的函数，用于处理特定事件。
- **配置模式**：可选的 Avro 格式配置校验模式，用于验证插件配置，并在 EMQX Dashboard 中动态生成配置表单。

## 插件开发流程概览

1. 使用 EMQX 提供的[插件模板](https://github.com/emqx/emqx-plugin-template)开发插件；
2. 根据实际需求定制插件逻辑（例如实现认证逻辑）；
3. 使用 `make rel` 命令构建插件发布包（`.tar.gz`）；
4. 通过 Dashboard、CLI 或 API 安装并启动插件；
5. 根据需要更新配置、停止或 卸载插件。

## 了解更多

- [**开发 EMQX 插件**](./plugin-development.md)：了解如何使用模板从零构建插件；
- [**自定义插件逻辑**](./plugin-example.md)：查看如何实现认证、授权等回调逻辑；
- [**管理插件**](./plugin-management.md)：学习如何安装、配置、启停和卸载插件，适用于单节点和集群环境。
- [**插件目录**](./plugin-catalog.md)：浏览可直接使用的插件，涵盖数据集成、数据治理和访问控制等场景。
