您可以通过事件规则过滤事件,将事件路由到云消息队列 RabbitMQ 版。本文以自定义事件为例介绍将事件路由到云消息队列 RabbitMQ 版的前提条件、操作步骤和结果验证。
前提条件
事件总线EventBridge
云消息队列 RabbitMQ 版
步骤一:添加自定义事件源
- 登录事件总线EventBridge控制台,在左侧导航栏,单击事件总线。
- 在顶部菜单栏,选择地域,在事件总线页面,单击目标自定义事件总线名称。
- 在左侧导航栏,单击事件源,然后单击添加事件源。
- 在添加自定义事件源面板,输入名称和描述,事件提供方选择自定义应用,然后单击确定。
步骤二:创建事件规则
目标服务和事件规则必须处于同一地域。
- 登录事件总线EventBridge控制台。
- 在左侧导航栏,单击事件总线。
- 在顶部菜单栏,选择地域。
- 在事件总线页面,单击目标总线名称。
- 在左侧导航栏,单击事件规则。
在事件规则页面,单击创建规则。
在创建规则页面,完成以下操作。
在配置基本信息配置向导,在名称文本框输入规则名称,在描述文本框输入规则的描述,然后单击下一步。
在配置事件模式配置向导,事件源类型选择自定义事件源,事件源选择步骤一添加的自定义事件源,在模式内容代码框输入事件模式,然后单击下一步。
如需了解更多信息,请参见事件模式。
在配置事件目标配置向导,配置事件目标,然后单击创建。
说明1个事件规则最多可以添加5个目标。
事件目标云消息队列 RabbitMQ 版涉及配置的参数如下:
参数名称
参数说明
服务类型
单击消息队列 RabbitMQ 版。
实例 ID
选择已创建的消息队列 RabbitMQ 版的实例ID。
Vhost
选择已创建的Vhost。
目标类型
选择Exchange或Queue。
Exchange
选择已创建的Exchange。仅当目标类型选择为Exchange时,需配置此参数。
消息路由规则(Routing Key)
单击部分事件或固定值。仅当目标类型选择为Exchange时,需配置此参数。
Queue
选择已创建的Queue。仅当目标类型选择为Queue时,需配置此参数。
消息体(Body)
单击完整事件、部分事件、固定值或模板。
MessageId
单击部分事件、固定值或模板。
自定义属性(Properties)
单击部分事件或模板。
说明该参数取值类型为Map。
以下分别提供事件总线EventBridge的事件内容转换类型的示例。更多信息,请参见事件内容转换。
- 部分事件示例:
$.data.body
- 常量示例:
请注意告警!
- 变量和模板的示例:
变量示例:
{ "type":"$.type" }
模板示例:
The event type is ${type}.
- 部分事件示例:
步骤三:发布事件
- 登录事件总线EventBridge控制台,在左侧导航栏,单击事件总线。
- 在顶部菜单栏,选择地域。
- 在事件总线页面,找到目标总线,在其右侧操作列单击发布事件。说明 仅自定义事件总线支持通过控制台发布事件。
- 在发布事件至自定义事件总线面板,自定义事件源下拉列表选择已创建的自定义事件源,在事件体代码框输入事件内容,然后单击确定。事件包含的参数规范,请参见事件概述。
结果验证
您可以在云消息队列 RabbitMQ 版控制台确认是否接收到事件。
登录云消息队列 RabbitMQ 版控制台,然后在左侧导航栏选择实例列表。
在实例列表页面的顶部菜单栏选择地域,然后在实例列表中,单击目标实例名称。
在实例列表页面,找到目标实例,在其右侧操作列选择 。
在消息查询页面,选择查询方式为按 Queue 查询,选择要查询消息的Queue和时间范围,然后单击查询。
接收到的示例消息内容如下所示:
{
"datacontenttype":"application/json;charset=utf-8",
"aliyunaccountid":"143998900779****",
"data":{
"envelope":{
"deliveryTag":98,
"exchange":"",
"redeliver":false,
"routingKey":"housekeeping"
},
"body":{
"Hello":"EventBridge"
},
"props":{
"contentEncoding":"UTF-8",
"messageId":"f7622d51-e198-41de-a072-77c1ead7****"
}
},
"subject":"acs:amqp:cn-hangzhou:143998900779****:/instances/amqp-cn-zvp2av0m****/vhosts/eb-connect/queues/housekeeping",
"aliyunoriginalaccountid":"143998900779****",
"source":"housekeeping.rabbitmq",
"type":"amqp:Queue:SendMessage",
"aliyunpublishtime":"2021-08-12T06:56:50.783Z",
"specversion":"1.0",
"aliyuneventbusname":"Housekeeping-Connect",
"id":"8b09e19b-8cbd-4c46-ab77-9cc39c44****",
"time":"2021-08-12T06:56:40.709Z",
"aliyunregionid":"cn-hangzhou"
}