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="Querying Customer Details"/>
            </processor-chain>
        </poll>
        <logger message="process to DB" level="INFO"/>
</flow>

数据正在获取并正确加载到数据库,但最新日期未存储在时间戳变量中。我收到以下信息消息。如果存储时间戳值,我们将得到什么消息。你能帮忙吗

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
4

2 回答 2

0
  1. The query doesn't actually select LastModifiedDate, so when the poll tries to update it, it will allways be null and will not update.

  2. The query selects only records that are before the timestamp, meaning that the MAX watermark will never be updated.

于 2017-08-28T10:29:46.863 回答
0

您必须清除您的应用程序数据才能解决此问题。如果您在工作室中运行,水印变量将存储在本地对象存储中。

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

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

在此处输入图像描述

于 2017-08-29T10:30:06.780 回答