规则引擎组成

使用 EMQ X 的规则引擎可以灵活地处理消息和事件。使用规则引擎可以方便地实现诸如将消息转换成指定格式,然后存入数据库表,或者发送到消息队列等。

与 EMQ X 规则引擎相关的概念包括: 规则(rule)、动作(action)、资源(resource) 和 资源类型(resource-type)。

规则、动作、资源的关系:

  1. 规则: {
  2. SQL 语句,
  3. 动作列表: [
  4. {
  5. 动作1,
  6. 动作参数,
  7. 绑定资源: {
  8. 资源配置
  9. }
  10. },
  11. {
  12. 动作2,
  13. 动作参数,
  14. 绑定资源: {
  15. 资源配置
  16. }
  17. }
  18. ]
  19. }
  • 规则(Rule): 规则由 SQL 语句和动作列表组成。动作列表包含一个或多个动作及其参数。
  • SQL 语句用于筛选或转换消息中的数据。
  • 动作(Action) 是 SQL 语句匹配通过之后,所执行的任务。动作定义了一个针对数据的操作。 动作可以绑定资源,也可以不绑定。例如,“inspect” 动作不需要绑定资源,它只是简单打印数据内容和动作参数。而 “data_to_webserver” 动作需要绑定一个 web_hook 类型的资源,此资源中配置了 URL。
  • 资源(Resource): 资源是通过资源类型为模板实例化出来的对象,保存了与资源相关的配置(比如数据库连接地址和端口、用户名和密码等) 和系统资源(如文件句柄,连接套接字等)。
  • 资源类型 (Resource Type): 资源类型是资源的静态定义,描述了此类型资源需要的配置项。

动作和资源类型是由 emqx 或插件的代码提供的,不能通过 API 和 CLI 动态创建。