
# 使用分布式消息服务 RabbitMQ版（RABBITMQ）触发器
本节介绍如何通过函数工作流控制台创建RabbitMQ触发器（当前只支持fanout路由模式），以实现FunctionGraph在RabbitMQ实例中，指定交换机绑定的队列下的新消息进行定期轮询。FunctionGraph会将轮询得到的消息作为参数，用于调用相应函数。
关于分布式消息服务RabbitMQ触发器的事件源介绍，请参见[支持的事件源](https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0102.html)。
#### 约束与限制
RABBITMQ触发器支持使用的区域和具体运行时函数请以控制台展示为准。
#### 前提条件
- **函数及其配置：**
  - 已创建函数。
  
  - 已配置函数的分布式消息服务DMS委托权限，委托的创建请参见[配置函数的委托权限](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html)。
  
  - 请参见[配置网络](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0222.html)开启函数访问VPC内资源的网络配置，开启后需在RabbitMQ服务安全组配置对应子网的权限，请参考RabbitMQ前提条件配置。
   
- **分布式消息服务RabbitMQ：**
  - 已创建RabbitMQ实例，创建操作请参见[购买RabbitMQ实例](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq-ug-180604004.html)。
  
  - 创建Vhost、Exchange和Queue。
    1. 创建RabbitMQ Vhost，创建操作请参见[创建RabbitMQ Vhost](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq_ug_0022.html)。
    
    2. 创建RabbitMQ Exchange，创建操作请参见[创建RabbitMQ Exchange](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq_ug_0027.html)。
    
    3. 创建RabbitMQ Queue，创建操作请参见[创建RabbitMQ Queue](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq_ug_0029.html)。
    
    4. 绑定RabbitMQ Exchange和RabbitMQ Queue，绑定操作请参见[绑定RabbitMQ Exchange](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq-ug-0045.html)、[绑定RabbitMQ Queue](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq_ug_0031.html)。
       ![](https://support.huaweicloud.com/usermanual-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
       Vhost是一个相对独立的RabbitMQ服务，用于管理Exchange、Queue。一个RabbitMQ实例下可以有多个Vhost，一个Vhost里可以有若干个Exchange和Queue，具体详情请参见[RabbitMQ业务使用流程](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq-ug-0044.html)。
       
     
  
  - 确认实例安全组规则是否配置正确。
    1. 在RabbitMQ实例详情页面的"基本信息 \> 网络"，单击安全组名称，跳转到安全组页面。
    
    2. 选择"入方向规则"，查看安全组入方向规则。
       1. 实例未开启SSL开关 ▪ 如果是VPC内访问，实例安全组入方向规则，需要允许端口5672的访问。
          ▪ 如果是公网访问，需要允许端口15672的访问。
          
       
       2. 实例已开启SSL开关 ▪ 如果是VPC内访问，实例安全组入方向规则，需要允许端口5671的访问。
          ▪ 如果是公网访问，需要运行端口15671的访问。
          
        
     
   
 
#### 创建RabbitMQ触发器
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择待配置的函数，单击进入函数详情页。
3. 选择"设置 \> 触发器"，单击"创建触发器"，弹出"创建触发器"对话框。 
   图1创建触发器   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002082254022.png "点击放大")
   
   

4. 配置以下参数。 
   表1RabbitMQ触发器参数说明 
   | 参数    | 说明                                                                                                                          | 取值样例                         |
   |:---|:---|:---|
   | 触发器类型 | 必选参数。 选择"分布式消息服务 RabbitMQ版 (RABBITMQ)"。                                              | 分布式消息服务 RabbitMQ版 (RABBITMQ) |
   | 实例    | 必选参数。 选择已创建的RabbitMQ实例。若无实例，可单击"创建实例"完成创建。                                         | rabbitmq-fg                  |
   | 密码    | 必选参数。 填写创建的RabbitMQ实例的密码。                                                          | testrabbitmq                 |
   | 交换机名称 | 必选参数。 填写已创建的交换机名称，详情请参见[创建RabbitMQExchange]。 | rabbitmqEX                   |
   | 虚拟机名称 | 可选参数。 填写已创建的vhost，详情请参见[创建RabbitMQVhost]。 | test                         |
   | 批处理大小 | 必选参数。 输入每次从Topic消费的消息数量，设置范围：1\~1000。                                             | 100                          |
      
   
   
5. 单击"确定"，完成RabbitMQ触发器的创建。
 
#### 配置RabbitMQ事件触发函数
1. 返回函数工作流控制台，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择待配置的函数，单击函数名称进入函数详情页。
3. 在函数详情页，选择函数版本。
4. 在"代码"页签下，单击"测试"，弹出"配置测试事件"对话框。
5. 填写如[表2]所示测试信息后，单击"创建"。
   
    表2测试信息 
   | 参数     | 说明                                                                                         |
   |:---|:---|
   | 配置测试事件 | 可创建新的测试事件，也可编辑已有的测试事件。 选择默认值："创建新的测试事件"。          |
   | 事件模板   | 选择"分布式消息服务 RabbitMQ版 (RABBITMQ)"模板，使用系统内置RabbitMQ事件模板。                                     |
   | 事件名称   | 事件名称必须以大写或小写字母开头，支持字母（大写或小写），数字和下划线"_"（或中划线"-"），并以字母或数字结尾，长度为1-25个字符，例如"rabbitmq-123test"。 |
   | 测试事件   | 自动加载系统内置RabbitMQ事件模板，本例不做修改。                                                               |
      
   
   

6. 单击"测试"，可以得到函数运行结果，函数会返回输入RabbitMQ消息数据。
 
#### 相关文档
除使用控制台外，函数工作流支持通过API的方式使用函数触发器，详情请参见[函数触发器API参考](https://support.huaweicloud.com/api-functiongraph/FunctionTriggers.html)。
