【问题标题】:How to use Stored Procedure with Mule 3.5 Batch Processing如何在 Mule 3.5 批处理中使用存储过程
【发布时间】:2014-06-26 19:50:05
【问题描述】:

我正在使用 Mule 3.5 Anypoint 连接器,并且已从选择查询转移到批处理范围组件中的存储过程。随着这种变化,骡子不喜欢存储过程返回的对象类型。

这是我返回的错误:

ERROR 2014-06-26 15:15:00,426 [pool-15-thread-1] org.mule.exception.DefaultMessagingExceptionStrategy: 
********************************************************************************
Message               : Object "java.util.HashMap" not of correct type. It must be of type "{interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}" (java.lang.IllegalArgumentException)
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------

使用存储过程从数据库连接器返回的对象类型如下:

java.util.HashMap

使用Select 语句(有效),类型如下:

org.mule.util.CaseInsensitiveHashMap

就像上面所说的 select 语句,这确实有效。

关于系统的一些额外信息:

  • 是SQL Server 2008 R2
  • 数据库连接器在存储过程中工作正常,但在到达进程记录部分时出错

    <batch:job name="ons-esb-mainBatch1">
    <batch:threading-profile poolExhaustedAction="WAIT"/>
    <batch:input>
        <poll doc:name="Poll">
            <fixed-frequency-scheduler frequency="15" timeUnit="SECONDS"/>
            <db:stored-procedure config-ref="Generic_Database_Configuration" doc:name="Database">
                <db:parameterized-query><![CDATA[{ CALL otis.GetEntityQueueByTime() }]]></db:parameterized-query>
            </db:stored-procedure>
        </poll>
        <logger level="INFO" doc:name="Logger"/>
    </batch:input>
    <batch:process-records>
        <batch:step name="Batch_Step">
            <choice doc:name="Choice">
                <!-- Choice Selector Logic -- Taken Out to Save Space --!>
            </choice>
        </batch:step>
    </batch:process-records>
    <batch:on-complete>
        <logger message="EntityQueues Completed Queueing into ActiveMQ" level="INFO" doc:name="Logger"/>
    </batch:on-complete>
    

总结

我想找到一种方法,让通过批处理过程处理的对象将像 select 语句一样工作。

【问题讨论】:

    标签: stored-procedures sql-server-2008-r2 hashmap mule batch-processing


    【解决方案1】:

    java.util.HashMap 不可迭代。尝试将消息负载替换为其entrySet()

    <batch:input> <poll doc:name="Poll"> <fixed-frequency-scheduler frequency="15" timeUnit="SECONDS"/> <db:stored-procedure config-ref="Generic_Database_Configuration" doc:name="Database"> <db:parameterized-query><![CDATA[{ CALL otis.GetEntityQueueByTime() }]]></db:parameterized-query> </db:stored-procedure> </poll> <set-payload value="#[message.payload.entrySet()]" /> <logger level="INFO" doc:name="Logger"/> </batch:input>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      相关资源
      最近更新 更多