阿里云消息服务 MNS(Message Notification Service)与阿里云函数计算集成后,将 MNS Topic(主题)作为事件源接入函数计算(即 Topic 的订阅者是函数)。通过消息服务主题触发器(以下简称“MNS 主题触发器”)触发函数执行,可以对发布在 Topic 上的消息进行自定义处理。

背景介绍

MNS 是一种高效、可靠、安全、便捷、可弹性扩展的分布式消息服务。MNS 能够帮助应用开发者在他们应用的分布式组件上自由地传递数据、通知消息,构建松耦合系统。在 MNS 中,Topic 是发布消息的目的地。发布者可以通过 PublishMessage 接口向 Topic 发布消息,Topic 的订阅者接收该消息。接口信息请参见 PublishMessage,更多 MNS 的内容请参见 MNS 产品文档

配置一个 MNS 主题触发器,相当于将函数注册为这个 MNS 主题的订阅者,当发布者向 MNS 主题发布消息的时候,就会把消息内容通知给函数,即触发函数执行,同时消息内容作为函数入口的 event 参数,详情请参见函数入参

目前,MNS 可以支持特定的订阅对象,但是不够灵活。而 MNS 与函数计算集成有以下优势:
  • 可以实现对消息进行一些高阶处理再发送邮件或者短信。
  • HTTP Endpoint 不需要有自建的服务。
  • 支持丰富的自定义处理。例如,把消息发送给 Slack 或者对于特定的消息进行持久化存储。
compare

注意事项

  • 强烈建议 MNS Topic 和函数计算的函数在相同的地域。

    虽然 MNS 主题触发器支持 Topic 和函数在不同的地域,但是在不同的地域会增加网络延时,尤其当函数所在的地域和 MNS Topic 所在的地域分别是国内和国外时。

  • 避免出现循环调用的情况。

    编写函数时,注意不要出现以下逻辑:Topic A 触发函数 B,函数 B 又 Publish 新的 Message 到 Topic A,从而造成函数无限循环调用。