您可以通过事件规则过滤事件,将事件路由到消息服务MNS的队列。本文以自定义事件为例介绍将事件路由到消息服务的前提条件、操作步骤和结果验证。

前提条件

您已完成以下操作:

步骤一:创建自定义总线

您可以执行以下操作创建自定义总线从您自己的应用程序接收事件。

  1. 登录事件总线EventBridge控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击自定义总线
  4. 自定义总线页面,单击创建自定义总线
  5. 创建自定义总线面板的名称文本框,输入MyEventBus,在描述文本框,输入用于接收自定义应用事件。,然后单击确定

步骤二:发布事件

  1. 登录事件总线EventBridge控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击自定义总线
  4. 自定义总线页面,找到目标总线,在其右侧操作列单击发布事件
    说明 仅自定义总线支持通过控制台发布事件。
  5. 发布事件面板,输入事件内容,然后单击确定
    事件包含的参数规范,请参见事件概述

步骤三:创建事件规则

  1. 登录事件总线EventBridge控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击自定义总线
  4. 自定义总线页面,找到目标总线,在其右侧操作列单击规则管理
  5. 规则管理页面,单击创建规则
  6. 创建规则页面,完成以下操作。
    1. 配置基本信息页面,在名称文本框输入规则名称,在描述文本框输入规则的描述,然后单击下一步
    2. 配置事件模式页面,事件模式类型选择自定义事件模式,在事件模式内容代码框输入事件模式,然后单击下一步

      如需了解更多信息,请参见事件模式

    3. 配置事件目标页面,选择目标服务类型。
      • 服务类型:单击消息服务
      • 队列:选择已创建的队列。
      • 消息内容:选择转换格式。
        • 完整事件:不做转换,直接投递原生CloudEvents 1.0协议中的完整结构。
        • 部分事件:通过JSONPath提取出需要投递到事件目标的内容。
        • 常量:事件只起到触发器的作用,不管事件内容是什么,投递内容为常量。
        • 模板:通过自定义变量和模板,将事件按照模板的示例输出。

          以下提供变量和模板的示例。

          变量示例:

          {
            "source":"$.source"
          }

          模板示例:

          The event comes from ${source} is abnormal.

        如需了解更多信息,请参见转换事件内容

      注意 目标服务和事件规则必须处于同一地域。
    4. 单击创建

结果验证

您可以在消息服务MNS控制台确认是否接收到事件。

  1. 登录消息服务MNS控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击队列
  4. 队列页面,找到目标队列,在其右侧操作列,单击接收消息
  5. 接收消息对话框,清空Base64解码,查看消息的相关属性。
    {
        "id":"22h0iaji-8cf5-2iea-j4a6-i99a5j1a****",
        "source":"acs.oss",
        "specversion":"1.0",
        "type":"oss:ObjectCreated:PostObject",
        "datacontenttype":"application/json;charset=utf-8",
        "dataschema":"http://example.com/item.json",
        "subject":"acs:oss:cn-hangzhou:<yourAccountId>:xls-papk/game_apk/123.jpg",
        "aliyunaccountid":"165228866041****",
        "aliyunpublishtime":"2020-10-14T17:00:03.628Asia/Shanghai",
        "aliyuneventbusname":"MyEventBus",
        "aliyunpublishaddr":"10.0.XX.XX",
        "data":{
            "name":"Eventbridge",
            "number":100
        }
    }
    接收消息对话框打开后就开始接收消息,如果需要接收下一条消息,单击接收消息