【问题标题】:Mule - Using Salesforce Connector with a Spring ComponentMule - 将 Salesforce 连接器与 Spring 组件一起使用
【发布时间】:2013-10-29 22:57:32
【问题描述】:

我正在使用 mule 独立版 3.4。我正在尝试使用 Salesforce 连接器创建流以执行查询操作,然后将有效负载传递给 spring 组件。结果是组件没有被调用。

    <flow name="sfcdContact" doc:name="sfcdContact">
    <quartz:inbound-endpoint repeatInterval="2000" 
                             startDelay="3000" 
                             jobName="sfcdContact">
        <quartz:event-generator-job/>
    </quartz:inbound-endpoint> 
    <sfdc:query config-ref="Salesforce" 
                query="${salesforce.query.contact}" 
                doc:name="sfcdContactQuery"/>
    <component>
        <spring-object bean="salesForceConsumer"/>      
    </component>
    <catch-exception-strategy doc:name="Catch Exception Strategy">
        <flow-ref name="ErrorHandling"/>
    </catch-exception-strategy> 
</flow> 

如果我从流程中删除 sfdc 部分,则成功调用了 spring 组件。如果我从流程中删除组件部分并将其替换为:

         <logger message="\#\#\# query operation payload \#[payload]" level="INFO" doc:name="Logger"/>

结果已成功输入日志。所以看起来各个部分都可以正常工作。

我将日志设置为调试,并且没有报告错误。

这是 Java 代码:

 public class SalesForceConsumer {

    public Object consume(@Payload Object payload) throws Exception {
        System.out.println("SalesForceConsumer::consume called");
        return payload;
    }


 }

我也尝试将签名修改为:

 public Object consume(@Payload HashMap<String,Object> payload)

从连接器返回文档指示的内容。

Salesforce 连接器是否有任何原因无法与 bean 组合,或者我的配置不正确?谢谢。

【问题讨论】:

  • 添加你的组件的代码?还要提到它是否给出错误?怎么发现它没有调用组件?
  • 嗨 user1760178 - 我用您要求的信息更新了我的问题。谢谢。
  • 尝试通过实现 Callable Interface 将您的组件修改为 Mule 感知组件。您可以访问 MuleMessage。您可以调试和检查。
  • onCall() 方法永远不会被执行。无论如何谢谢。
  • 顺便问一下 Salesforce 问题可以直接在salesforce.stackexchange.com

标签: spring salesforce mule


【解决方案1】:

我在 Mule EE 3.4 上运行了您的代码,它运行良好。

控制台输出:

INFO 2015-03-26 18:37:51,903 org.mule.api.processor.LoggerMessageProcessor: \#\#\# query operation payload \[{FirstName=Test, Id=null, type=Contact}]
SalesForceConsumer::consume called

流程:

<spring:beans>
    <spring:bean id="salesForceConsumer" name="salesForceConsumer" class="com.acme.util.SalesForceConsumer"/>
</spring:beans>
<sfdc:config name="Salesforce" username="XXXX" password="XXXX" securityToken="XXXX" url="https://login.salesforce.com/services/Soap/u/28.0" doc:name="Salesforce">
    <sfdc:connection-pooling-profile initialisationPolicy="INITIALISE_ONE"  exhaustedAction="WHEN_EXHAUSTED_GROW"/>
</sfdc:config>
<flow name="sfcdContact" doc:name="sfcdContact">
    <quartz:inbound-endpoint repeatInterval="2000" startDelay="3000" jobName="sfcdContact">
       <quartz:event-generator-job/>
    </quartz:inbound-endpoint> 
    <sfdc:query config-ref="Salesforce" query="select FirstName from Contact" doc:name="sfcdContactQuery"/>
    <logger message="\#\#\# query operation payload \#[payload]" level="INFO" doc:name="Logger"/>
    <component>
       <spring-object bean="salesForceConsumer"/>      
    </component>
</flow>

【讨论】:

  • 不确定这是一个怎样的答案,更适合 cmets 部分。
猜你喜欢
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多