2017-08-28 131 views
0

我在轮询器内部有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(&quot;yyyy-MM-dd'T'HH:mm:ss.SSS'Z'&quot;)]" 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 &lt; #[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 

回答

0
  1. 查询实际上并没有选择LastModifiedDate帮助,所以当调查试图更新它,它将永诺为空,将不会更新。

  2. 该查询只选择时间戳之前的记录,这意味着MAX水印将永远不会更新。

0

您必须清除您的应用程序数据以解决此问题。如果你在studio中运行,水印变量将被本地存储在Object store中。

如果您清除应用程序数据,它将按预期工作。 请按照下图清除应用程序数据。

右键单击项目 - >运行方式 - >运行会议 - >常规选项卡 - >将清除应用程序数据更改为始终(您需要向下滚动以查看此选项)。

enter image description here