斯潘8
斯潘4
使用Amazon SQS,或者,任何队列服务都是存储不能或不需要立即处理的数据的好方法。它还提供了一些保证,即只有在处理完某个特性之后,它才会从队列中删除。对FME中的SQS有一个很好的概述。在这里.
与前面讨论的两种方法不同(http-post-to-a-topic和websockets)。使用AmazonSQS不需要长期的工作流程或大量的通知(尽管它可以两者兼备!).
FME使与SQS的交互变得容易,通过通知服务(创建SQS发布/订阅)或使用可用的SQS变压器。在本练习中,将使用sqsreceiver转换器接收来自sqs队列的消息。此变压器允许您指定变压器何时停止接收功能,或者:从来没有,当队列为空或在固定数量的消息之后。这使得运行作业和使用引擎具有更大的灵活性。
每次在postgis中的表中更改一个特征(行)时,node.js接收有关该功能的信息。在javascript文件中,当node.js从postgis接收到一个特性时,它使用awsdk模块将特性推送到AmazonSQS队列中。
var pg=require('pg');var request=require('request');var pgnostring=“postgres://username:password@server:port/database”;var aws=require('aws-sdk');aws.config.update(accesskeyid:'accesskey',secretaccesskey:'secretaccesskey');var sqs=new aws.sqs(region:'region');console.log(“向sqs发送消息”);pg.connect(pgconstring,功能(错误,客户端)if(err)console.log(err);}client.on(“通知”,函数(msg)//console.log(msg);//console.log(json.parse(msg.payload));db_body=json.parse(msg.payload);var sqsmsg=payload:'a message'var sqsparams=messagebody:json.stringify(db_body),queueurl:'queueurl'sqs.sendmessage(sqsparams,功能(错误,data)if(err)console.log('err',错误;}console.log(数据););(});var query=client.query(“listen watchers2”););
完整的工作区在这里可用:SQS-接收器-完成.fmw
有关需求的更多信息,请参见教程的起始页。
修改postgis2sqs.js文件以匹配数据库和AWS SQS连接要求。
在命令提示窗口中,导航到节点可执行文件所在的文件夹。在命令窗口中,键入:node
如果什么都没有发生,很好。代码中的任何错误都将在此处报告。
在FME工作台中,添加一个sqsreceiver变压器并填写Amazon sqs连接详细信息。将“停止接收”参数设置为“队列为空时”。
现在是时候去编辑了,从Postgis表中创建或删除一些功能。这可以使用FME(在单独的工作空间)或使用GIS。
创建了一些功能之后,删除或更改您应该能够在AWS SQS管理控制台中看到这些更改:
一旦队列中有了特性,就可以运行工作区。您应该发现从SQS接收到相同数量的特性并将其输出到日志消息中:
因为sqs_content属性是json,JSonFlatener将有助于将每个键转换为一个属性。然后,可以使用attributeManager创建一条消息,用于通知某人功能的更改。
?2019安全亚搏在线软件公司|合法的