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

参考

相关推荐
寻月隐君6 分钟前
Rust + Protobuf:从零打造高效键值存储项目
后端·rust·github
radient13 分钟前
Java/Go双修 - Go哈希表map原理
后端
陈随易15 分钟前
Gitea v1.24.0发布,自建github神器
前端·后端·程序员
前端付豪18 分钟前
汇丰银行技术架构揭秘:全球交易稳定背后的“微服务+容灾+零信任安全体系”
前端·后端·架构
于顾而言23 分钟前
【Map Or Rewrite】Nginx基于会话转发的一些实践
后端
程序员爱钓鱼23 分钟前
Go语言并发模型与模式:Fan-out / Fan-in 模式
后端·go
魔镜魔镜_谁是世界上最漂亮的小仙女25 分钟前
java-maven依赖管理
java·后端·全栈
木雷坞25 分钟前
容器服务Containerd登录
后端
于顾而言25 分钟前
单机模拟MongoDB测试集群与Go应用集成
后端
程序员马晓博1 小时前
深入聊聊Qwen3的混合推理:全球唯三,开源唯一
前端·后端