西班牙
斯潘4
使用amazon sqs或任何排队服务是存储不能或不需要立即处理的数据的一种好方法。它还提供了一些保证,即功能只有在处理完后才会从队列中删除。FME中的SQS有一个很好的概述这里是的。
与前面讨论的两种方法(http post to a topic和websockets)不同,使用amazon sqs不需要长期的作业过程或大量的通知(尽管它可以同时执行这两种操作!)是的。
fme使得通过通知服务(创建sqs发布/订阅)或使用可用的sqs转换器与sqs进行交互变得很容易。在本练习中,sqsreceiver转换器将用于接收来自sqs队列的消息。此转换器允许您指定转换器何时停止接收功能,可以是:从不、队列为空或固定数量的消息之后。这使得运行和发动机使用更加灵活。
每次postgis中的表中更改一个特性(行)时,node.js都会接收有关该特性的信息。在javascript文件中,当node.js从postgis接收到特性时,它使用aws sdk模块将特性推送到amazon sqs队列中。
var pg=需要('pg');var request=require('request');var pgconstring=“postgres://username:password@server:port/database”;var aws=需要('aws-sdk');aws.config.update({accesskeyid:'accesskey',secretaccesskey:'secretaccesskey'});var sqs=new aws.sqs({region:'region'});log(“向sqs发送消息”);pg.connect(pgconstring,函数(err,client){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:'消息'};var sqsparams={messagebody:json.stringify(db_body),queueurl:'queueurl'};sqs.sendmessage(sqsparams,函数(err,data){if(err){console.log('err',err);}控制台.log(数据);});});var query=client.query(“监听监视程序2”);});
此处提供完整的工作区:SQS-接收机complete.fmw
有关需求的更多信息,请参见教程的起始页。
修改postgis2sqs.js文件以匹配数据库和aws sqs连接要求。
在命令提示窗口中,导航到节点可执行文件所在的文件夹。在命令窗口中键入:node
如果没有反应,那是很好的。代码中的任何错误都将在这里得到报道。
在FME Workbench中,添加一个SQSReceiver变压器和亚马逊SQS连接填写详细信息。将停止接收参数“当队列为空”。
现在是时候去和编辑,创建或从PostGIS的表中删除一些功能的时间。这可以是使用FME(在一个单独的工作区),或者使用GIS。
一些功能已经创建完成后,删除或更改你应该能够看到在AWS SQS管理控制台这些变化:
一旦有队列功能,您可以运行工作空间。你应该找到相同数量的从SQS和输出到日志信息接收功能:
由于sqs_content属性是JSON,一个JSONFlattener将有助于把每个键为属性。然后AttributeManager可以用来创建可以用来通知的功能所做的更改某人的消息。
?2019安全亚搏在线软件公司|合法的