postgresql - 使用 AWS Aurora Postgres 和 aws_lambda.invoke 的事务发件箱模式
问题描述
我正在开发一个由几个微服务组成的项目。我计划在插入触发器后通过在 Postgres 中调用 lambda 函数来使用事务发件箱模式。
我在想这样的事情
CREATE OR REPLACE FUNCTION tx_msg_func() RETURNS trigger AS
$$
DECLARE newRecord JSON;
BEGIN
newRecord := row_to_json(NEW.*);
PERFORM * FROM aws_lambda.invoke(
aws_commons.create_lambda_function_arn('my_lambda_function'),
newRecord,
'Event'
);
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER tx_msg_insert AFTER INSERT ON tx_outbox_table
FOR EACH ROW EXECUTE PROCEDURE tx_msg_func();
在这里,lambda 函数将接收 JSON 格式的新记录并发送一条 SQS 消息。消息发送成功后,将删除记录tx_outbox_table
我想知道这里是否有我遗漏的缺点。你认为这是一个生产就绪的解决方案吗?有什么我应该注意的吗?
解决方案
那么,交易呢?它应该尽可能短。在事务内部执行插入后,所以...... TCP调用进入事务内部。可以用它做什么?这是一个想法。异常在当前事务之外处理。当什么都不写时,新事务更轻,所以也许这是要走的路?
推荐阅读
- python - 为什么 Python hex() 函数不适用于以 1 开头的 64 位二进制数字?
- python - Raspi I2c IOError:[Errno 121] 远程 I/O 错误
- python - Python 中使用朴素贝叶斯进行简单文本分类 - KeyError
- python - 使用谷歌 API 重复错误,但在 Pycharm 中有效
- javascript - 源图像 React Native
- c# - C# webBrowser 自动提交按钮单击不起作用
- unreal-engine4 - 在虚幻引擎 4 中,提高麦克风录音电平的最佳方法是什么?
- wpf - WPF - 数据网格 - 显示一个文本框以在选择其行时由用户设置值
- wordpress - 向 WooCommerce REST API 公开二级货币
- angular - 为什么我无法在我的 HTML 页面中显示 Observable 数据?