使用轮询中的轮询水印时遇到错误
问题描述:
我在轮询器内部有sfdc(salesforce连接器),然后在从sfdc获取数据并将数据加载到数据库后为其启用了水印。使用轮询中的轮询水印时遇到错误
<flow name="loadData" processingStrategy="synchronous">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="2" timeUnit="MINUTES"/>
<watermark variable="timestamp" default-expression="#[server.dateTime.format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")]" selector="MAX" selector-expression="#[payload.LastModifiedDate]" object-store-ref="sfdcStore"/>
<processor-chain doc:name="Processor Chain">
<logger message="poller started at #[server.dateTime]" level="INFO" doc:name="start"/>
<sfdc:query config-ref="svccloud_salesforce_configuration" query="SELECT Name, , Id, BillingStreet, BillingCity, BillingState, BillingCountry, BillingPostalCode, Phone, Pathway_Status__c FROM Account where LastModifiedDate < #[flowVars['timestamp']] and RecordTypeId IN (SELECT Id FROM RecordType where Name = 'Customer')" doc:name="Quering Customer Details"/>
</processor-chain>
</poll>
<logger message="process to DB" level="INFO"/>
</flow>
数据正在获取并正确加载到数据库,但最新日期没有存储在timestamp变量中。我收到以下信息消息。如果存储时间戳值,我们将得到什么消息。能否请您在此
INFO 2017-08-28 15:06:26,795 [pool-13-thread-1] org.mule.transport.polling.watermark.Watermark: Watermark value will not be updated since poll processor returned no results
答
查询实际上并没有选择LastModifiedDate帮助,所以当调查试图更新它,它将永诺为空,将不会更新。
该查询只选择时间戳之前的记录,这意味着MAX水印将永远不会更新。
答
您必须清除您的应用程序数据以解决此问题。如果你在studio中运行,水印变量将被本地存储在Object store中。
如果您清除应用程序数据,它将按预期工作。 请按照下图清除应用程序数据。
右键单击项目 - >运行方式 - >运行会议 - >常规选项卡 - >将清除应用程序数据更改为始终(您需要向下滚动以查看此选项)。