【问题标题】:Mule:Polling on multiple table of a database connectorMule:轮询数据库连接器的多个表
【发布时间】:2015-05-19 00:22:12
【问题描述】:

需要轮询数据库连接器的多个表。尝试使用复合源对表应用单独轮询时

<composite-source>
   <poll>
     <db:select config-ref="databaseConnector"/> <!--select on table 1-->
   </poll>
   <poll>
     <db:select config-ref="databaseConnector"/> <!--select on table 2-->
   </poll>
</composite-source>

获取已在端点 uri 上注册的错误轮询器。如何使用数据库连接器轮询多个表以获取更新的数据。

【问题讨论】:

    标签: mule mule-studio mule-component mule-el mule-cluster


    【解决方案1】:

    使用三个流程:

    <flow name="poll-table-1">
      <poll frequency="...">...</poll>
      <flow-ref name="table-data-processor" />
    </flow>
    
    <flow name="poll-table-2">
      <poll frequency="...">...</poll>
      <flow-ref name="table-data-processor" />
    </flow>
    
    <flow name="table-data-processor">
      ...
    </flow>
    

    【讨论】:

    • 谢谢@David。但是为什么单个流不起作用。错误是--connectorexception:endpointuri 上的此连接器上已经注册了一个侦听器:轮询:
    • 我的解决方案有效吗?不完全确定单个流失败的原因,可能是 Mule 在内部为轮询器创建端点 URI 的方式,它应该是唯一的,但对于同一流中的多个轮询器结果不是唯一的?
    • 我仍在测试面临一些通信故障问题的代码,但它看起来与驱动程序相关的问题,一旦完成就会更新它是否有效。
    • 是的,它的工作@David。再次感谢您的宝贵建议。
    【解决方案2】:

    您可以尝试以下方式:-

    <composite-source>
            <poll frequency="10000" doc:name="Poll">
            <processor-chain > 
             <db:select config-ref="Oracle_Configuration" doc:name="Database">
                <db:parameterized-query><![CDATA[select * from Table1]]></db:parameterized-query>
            </db:select> 
             <logger level="INFO" message="Your Payload from Table1:- ....." doc:name="Logger"/>
    
            <db:select config-ref="Oracle_Configuration" doc:name="Database">
                <db:parameterized-query><![CDATA[select * from Table2]]></db:parameterized-query>
            </db:select>
             <logger level="INFO" message="Your Payload from Table2:- ...." doc:name="Logger"/>
             </processor-chain>
            </poll>
    </composite-source>
             <logger level="INFO" message="The remaining flow " doc:name="Logger"/>
    

    这对我来说很好用:)

    【讨论】:

    • 使用单轮询会有问题,我们不能为不同的表指定不同的轮询配置。我需要使用水印来识别上次加载后插入的数据。水印的配置也将是所有表的一个。有没有一种方法可以为多个表指定不同的轮询器
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多