阿里云消息服务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,从而造成函数无限循环调用。