AWS Lambda接收AmazonMQ RabbitMQ消息[AWS Lambda教程-AWS SAM系列]

AWS Lambda可以和多种数据源做集成,几乎全部的AWS托管服务都可以方便的触发Lambda的运行,详情请看Using AWS Lambda with other services。一般就海外用户而言在AWS上用MQ触发Lambda运行的场景以AWS SQS占绝大多数,但是在中国国内我们喜欢使用Kafka、RabbitMQ、ActiveMQ等开源MQ,这时我们也可以方便的让AWS Lambda和上述的3种开源的MQ集成。其中Amazon MQ是AWS托管的MQ产品,能支持RabbitMQ和ActiveMQ。本文以Amazon MQ中的RabbitMQ为例,介绍Amazon MQ和AWS Lambda的集成。

AmazonMQ和AWS Lambda的集成,我们需要仔细的了解网络配置,在本文中我的Lamdba和RabbiMQ都放在私有子网里面,并为私有子网设置了NAT网关,允许它们通过NAT访问互联网

创建AmazonMQ RabbitMQ

提前在AWS Secrets Manager中保存RabbitMQ访问密码

这里我们直接设置username和password的值,方便后续lambda和RabbitMQ的集成有权限。

创建AmazonMQ RabbitMQ

在AmazonMQ控制台选择RabbitMQ。 只是测试使用,我们可以选择单节点即可,生产环境建议选择集群模式,提示MQ整体的性能和可用性。 我们可以自由选择RabbitMQ的实例的规格和账户密码,账户密码需要和前面保存在AWS Secrets Manager中的一致。 这里我们设置RabbitMQ的可访问性,对AWS Lambda而言RabbitMQ的private和public模式都可以正常的触发Lambda的运行。这里为了方便我们可以选择public,这样我们可以直接访问RabbitMQ的控制台。 创建后我们需要等一段时间直到RabbitMQ就绪 ... RabbitMQ就绪后我们就可以继续和AWS Lambda集成了 我们登陆RabbitMQ的控制台,并创建一个queue来接收消息并触发Lambda运行,名称我自己设置为lambda-poc-queue

集成AWS Lambda和RabbitMQ

我们需要提前找到RabbitMQ的ARN 我们需要提前找到AWS Secrets Manager的ARN

然后我们在AWS SAM中设置好事件触发源,这里我们可以填入前面知道的RabbitMQ ARN、AWS Secrets Manager ARN和Queue名称 最后我们直接发布即可,发布成功后会看到Lambda的触发源中,RabbitMQ的state: EnabledActivate trigger: Yes,这时说明RabbitMQ和lambda的集成已经成功了。

测试

我们可以直接在RabbitMQ中发送文字消息 等待片刻会发现这个消息触发了Lambda执行,Lamdba接收到了消息内容并运行了。其中data内容看起来是乱码了,实际上没问题,MQ传过来的内容是Base64编码后的 ,使用的时候Base64解码即可。

到这里全部的开发就完成了,详细的代码请看amazon-mq-rabbitmq-demo

参考

相关推荐
I'm Jie8 分钟前
告别重复编码!SpringBoot 字段变更(新旧值)日志工具类的规范化设计与优雅实现
java·spring boot·后端
开心猴爷24 分钟前
Bundle Id 创建与管理的工程化方法,一次团队多项目协作中的流程重构
后端
databook25 分钟前
用样本猜总体的秘密武器,4大抽样分布总结
后端·python·数据分析
小坏讲微服务1 小时前
SpringBoot4.0整合Scala完整使用
java·开发语言·spring boot·后端·scala·mybatis
泉城老铁1 小时前
windows服务器mysql数据库备份脚本
java·后端·mysql
却尘1 小时前
用 25 个概念彻底看懂SQL多维分析的底层逻辑
后端·sql·mysql
白衣鸽子1 小时前
JsonUtils:打造企业级的序列化与反序列化瑞士军刀
后端·开源
计算机学姐1 小时前
基于Python的校园美食推荐系统【2026最新】
开发语言·vue.js·后端·python·mysql·django·推荐算法
q***48411 小时前
十八,Spring Boot 整合 MyBatis-Plus 的详细配置
spring boot·后端·mybatis