我在poller中有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="Querying Customer Details"/>
</processor-chain>
</poll>
<logger message="process to DB" level="INFO"/>
</flow>
数据正在获取并正确加载到DB,但最新的Date未存储在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
答案 0 :(得分:0)
查询实际上并未选择LastModifiedDate,因此当轮询尝试更新时,它将始终为null且不会更新。
查询仅选择时间戳之前的记录,这意味着MAX水印永远不会更新。
答案 1 :(得分:0)
您必须清除应用程序数据,才能解决此问题。如果在studio中运行,水印变量将在本地存储在Object store中。
如果清除应用程序数据,它将按预期工作。 请按照下面的图像清除应用程序数据。
右键点击项目 - &gt;运行方式 - &gt;运行配置 - &gt;常规标签 - &gt;将“清除应用程序数据”更改为“始终”(您需要向下滚动才能看到此选项)。