我正在使用mule standalone 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)
doc表示从连接器返回的内容。
Salesforce连接器是否有任何理由不能与bean组合,或者我是否将其配置错误?感谢信。
答案 0 :(得分:0)
我在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>