MNS支持OSS事件通知啦!!!

事件通知概述,请参考介绍

MNS 推出重磅功能,支持阿里云各大服务通过MNS实现事件通知(回调)。用户可以通过在MNS上创建事件通知的规则,来关注其他阿里云产品指定资源上产生的事件,并且由MNS以消息的方式主动推送到指定的接收端。

  • 事件通知按区域提供服务
  • 事件通知为异步通知,不会影响用户使用其他云产品的体验
  • 事件通知消息在有效时间内不会丢失,当用户接收消息失败时,会按照指定的重试策略重试
  • 事件通知消息的接收端目前支持HttpServer和Queue(可以将消息转移到Queue中,由用户来主动消费)
  • 事件通知中消息推送的相关介绍请参考主题模型

MNS支持OSS事件通知啦!!!

注意事项

  • 事件通知规则创建完,约10分钟后生效
  • 在没有其他规则的情况下,默认规则匹配所有资源上的所有事件
  • 在有其他规则并且也有默认规则的情况下,不匹配其他规则的事件会匹配默认规则
  • 事件通知规则只能创建和删除,目前不支持更新

作用

  • 如果您授权其他人可以对您的资源(Bucket)进行某些操作,而您又希望关注这些操作的话,您就可以创建对应的规则,使得这些操作发生时,能够主动通知到您。
  • 如果您需要对操作进行统计的话,也可以通过事件通知的方式进行数据分析,查看一段时间内某个操作发生的次数,据此来分析您的业务最近有什么样的发展趋势。并且,您也可以将这些事件通知的消息继续导入其他服务(比如:EMR,进一步进行您自定义的分析)
  • 您也可以通过事件通知监控您的资源上发生的某些操作的QPS等等指标。

五步玩转事件通知

示例:

某个用户创建了一个Bucket:event-notification-test,然后他关心有哪些Object被上传到这个Bucket中了,他想把事件通知消息推送到Queue中,然后再慢慢消费,于是他就可以创建下面这样的事件通知规则:

  • 规则名称:event-notification-test-rule
  • 资源描述:event-notification-test/
  • 事件类型:PutObject、PostObject
  • 接收终端:event-notification-test-queue

五步玩转事件通知:

  • Step1. 创建Bucket
  • Step2. 创建消息接收的Queue
  • Step3. 创建事件通知规则
  • Step4. 上传Object
  • Step5. 查看Queue中是否接收到消息

Step1. 创建Bucket

  • 登录阿里云官网,进入OSS控制台,点击“新建Bucket”,再依次填入BucketName:“event-notification-test”以及选择所属地域:“华南1”(此处方便测试可以设置读写权限为公共读写),如下:

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

Step2. 创建消息接收的Queue

  • 进入MNS控制台,选择“华南1”区域,点击“创建队列”,再依次输入队列名称:“event-notification-test-queue”,选择地域:“华南1”,其他按默认值即可,如下:

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

Step3. 创建事件通知规则

  • 依然保持在MNS控制台,选择左边标签页:“事件通知”,点击“创建规则”,再依次输入规则名称:“event-notification-test-rule”、添加资源(点击“添加”按钮)、选择事件类型(可以多选)以及添加接收终端,如下图:
  • 其中资源描述稍微复杂一些,可以参考资源描述后面的问号“?”,其中给了Tips,摘录如下(特别注意:资源描述不能有交集):
资源描述可以是全名、前缀、后缀以及前后缀,不同资源描述不能有交集。
OSS资源包括Bucket和Object,通过“/”连接。
以Bucket(movie)和Object(hello.avi)为例。
1.全名:movie/hello.avi;
2.前缀:
    movie/hello,表示movie中以hello为前缀的所有Object,
    movie/,表示movie中所有的Object,
    mov,表示以mov为前缀的所有Bucket中的所有Object;
3.后缀:.avi,表示所有Bucket中以.avi为后缀的Object;
4.前后缀:前movie/,后.avi,表示movie中所有以.avi为后缀的Object。
  • 接收端目前支持HttpServer以及Queue两种,此处我们选择Step2.中创建的Queue。
  • 创建一条新规则后,MNS会自动创建一个Topic,并且以指定的Endpoint创建订阅,可以从MNS控制台发布订阅的标签页进行查看,并且可以*管理这些Topic与Subscription(比如创建新的订阅)。
  • 新规则创建完成后,需要约10分钟的时间才能生效。

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

Step4. 上传Object

  • 新规则创建成功10分钟后,回到OSS控制台,尝试上传Object到Step1.创建的Bucket:“event-notification-test”中,验证是否能够触发事件通知。在OSS控制台选中“event-notification-test”,再点击左侧标签页的Object管理,然后在该标签页上传Object,如下图:

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

Step5. 查看Queue中是否接收到消息

  • 上传Object成功后,回到MNS控制台,选中左侧标签页“队列”,并选中区域:“华南1”,查看Step2.创建的队列中的活跃消息数是否为1,并可以点击“接收消息”,查看推送过来的具体事件通知消息。同时,在发布订阅标签页中,也可以看到Topic中多了一条消息,至此可验证事件通知成功。如下图:
  • 推送的事件通知消息内容如下,其具体含义可参考Here
{"events": [{ "eventName": "ObjectCreated:PutObject", "eventSource": "acs:oss", "eventTime": "2016-07-05T15:07:59.000Z", "eventVersion": "1.0", "oss": { "bucket": { "arn": "acs:oss:cn-shenzhen:12345:event-notification-test", "name": "event-notification-test", "ownerIdentity": "12345"}, "object": { "deltaSize": 0, "eTag": "D41D8CD98F00B204E9800998ECF8427E", "key": "a", "size": 0}, "ossSchemaVersion": "1.0", "ruleId": "event-notification-test-rule"}, "region": "cn-shenzhen", "requestParameters": {"sourceIPAddress": "140.205.128.107"}, "responseElements": {"requestId": "577BCD4FF3D45CE477F2FA94"}, "userIdentity": {"principalId": "1390402650033793"}}]}

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

MNS支持OSS事件通知啦!!!

上一篇:最佳实践:如何对MNS消息进行加密传输


下一篇:最佳实践:如何使用消息服务MNS的ChangeMessageVIsibility