You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by newmax <go...@gmail.com> on 2006/10/29 02:56:01 UTC
Not able to plug Aggregator in
I have 3 services configured i.e. EquifaxRoutingSlip, ExperianRoutingSlip and
TransunionRoutingSlip. I have configured such that the results from each of
the services should aggregate into a aggregator i.e. CreditReportAggregator.
But, when I run my program aggregator is ignored with no message on the
screen. Could anyone help me out please. Folllowing is my configuration
file.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
xmlns:lb="http://servicemix.org/demos/loan-broker"
xmlns:foo="http://servicemix.org/demo/"
xmlns:eip="http://servicemix.apache.org/eip/1.0">
<classpath>
<location>.</location>
</classpath>
<sm:serviceunit id="jbi">
<sm:activationSpecs>
<sm:activationSpec componentName="JmsSource1"
destinationService="foo:equifaxRoutingSlip">
<sm:component>
<bean
class="org.apache.servicemix.components.jms.JmsServiceComponent">
<property name="template">
<bean class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsFactory" />
<property name="defaultDestinationName"
value="demo.org.apache.servicemix.source" />
<property name="pubSubDomain" value="true" />
</bean>
</property>
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="JmsSource2"
destinationService="foo:experianRoutingSlip">
<sm:component>
<bean
class="org.apache.servicemix.components.jms.JmsServiceComponent">
<property name="template">
<bean class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsFactory" />
<property name="defaultDestinationName"
value="demo.org.apache.servicemix.source" />
<property name="pubSubDomain" value="true" />
</bean>
</property>
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="JmsSource"
destinationService="foo:transunionRoutingSlip">
<sm:component>
<bean
class="org.apache.servicemix.components.jms.JmsServiceComponent">
<property name="template">
<bean class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsFactory" />
<property name="defaultDestinationName"
value="demo.org.apache.servicemix.source" />
<property name="pubSubDomain" value="true" />
</bean>
</property>
</bean>
</sm:component>
</sm:activationSpec>
<!-- Routers -->
<sm:activationSpec componentName="servicemix-eip1">
<sm:component>
<eip:component>
<eip:endpoints>
<eip:static-recipient-list service="foo:creditAgencyGateway">
<eip:recipients>
<eip:exchange-target service="foo:equifaxRoutingSlip" />
<eip:exchange-target service="foo:experianRoutingSlip" />
<eip:exchange-target service="foo:transunionRoutingSlip" />
</eip:recipients>
</eip:static-recipient-list>
<eip:static-routing-slip service="foo:equifaxRoutingSlip">
<eip:targets>
<eip:exchange-target service="foo:equifaxRequestTransformer" />
<eip:exchange-target service="foo:equifax" />
<eip:exchange-target service="foo:equifaxResponseTransformer" />
<eip:exchange-target service="foo:creditReportAggregator" />
</eip:targets>
</eip:static-routing-slip>
<eip:static-routing-slip service="foo:experianRoutingSlip">
<eip:targets>
<eip:exchange-target service="foo:experianRequestTransformer" />
<eip:exchange-target service="foo:experian" />
<eip:exchange-target service="foo:experianResponseTransformer" />
<eip:exchange-target service="foo:creditReportAggregator" />
</eip:targets>
</eip:static-routing-slip>
<eip:static-routing-slip service="foo:transunionRoutingSlip">
<eip:targets>
<eip:exchange-target service="foo:transunionRequestTransformer" />
<eip:exchange-target service="foo:transunion" />
<eip:exchange-target service="foo:transunionResponseTransformer" />
<eip:exchange-target service="foo:creditReportAggregator" />
</eip:targets>
</eip:static-routing-slip>
<eip:split-aggregator service="foo:creditReportAggregator">
<eip:target>
<eip:exchange-target service="foo:trace" />
</eip:target>
</eip:split-aggregator>
</eip:endpoints>
</eip:component>
</sm:component>
</sm:activationSpec>
<!-- Equifax -->
<sm:activationSpec componentName="Equifax"
service="foo:equifax">
<sm:component>
<bean class="org.apache.servicemix.components.saaj.SaajBinding">
<property name="soapEndpoint">
<bean class="javax.xml.messaging.URLEndpoint">
<constructor-arg
value="http://localhost:8080/equifax-ws/services/CreditReport"/>
</bean>
</property>
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="EquifaxRequestTransformer"
service="foo:equifaxRequestTransformer">
<sm:component>
<bean class="org.apache.servicemix.components.xslt.XsltComponent">
<property name="xsltResource"
value="classpath:xsl/equifax-request.xsl"/>
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="EquifaxResponseTransformer"
service="foo:equifaxResponseTransformer">
<sm:component>
<bean class="org.apache.servicemix.components.xslt.XsltComponent">
<property name="xsltResource"
value="classpath:xsl/equifax-response.xsl"/>
</bean>
</sm:component>
</sm:activationSpec>
<!-- Experian -->
<sm:activationSpec componentName="Experian"
service="foo:experian">
<sm:component>
<bean class="org.apache.servicemix.components.saaj.SaajBinding">
<property name="soapEndpoint">
<bean class="javax.xml.messaging.URLEndpoint">
<constructor-arg
value="http://localhost:8080/experian-ws/services/CreditReport"/>
</bean>
</property>
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="ExperianRequestTransformer"
service="foo:experianRequestTransformer">
<sm:component>
<bean class="org.apache.servicemix.components.xslt.XsltComponent">
<property name="xsltResource"
value="classpath:xsl/experian-request.xsl"/>
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="ExperianResponseTransformer"
service="foo:experianResponseTransformer">
<sm:component>
<bean class="org.apache.servicemix.components.xslt.XsltComponent">
<property name="xsltResource"
value="classpath:xsl/experian-response.xsl"/>
</bean>
</sm:component>
</sm:activationSpec>
<!-- Transunion -->
<sm:activationSpec componentName="Transunion"
service="foo:transunion">
<sm:component>
<bean class="org.apache.servicemix.components.saaj.SaajBinding">
<property name="soapEndpoint">
<bean class="javax.xml.messaging.URLEndpoint">
<constructor-arg
value="http://localhost:8080/transunion-ws/services/CreditReport"/>
</bean>
</property>
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="TransunionRequestTransformer"
service="foo:transunionRequestTransformer">
<sm:component>
<bean class="org.apache.servicemix.components.xslt.XsltComponent">
<property name="xsltResource"
value="classpath:xsl/transunion-request.xsl"/>
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="TransunionResponseTransformer"
service="foo:transunionResponseTransformer">
<sm:component>
<bean class="org.apache.servicemix.components.xslt.XsltComponent">
<property name="xsltResource"
value="classpath:xsl/transunion-response.xsl"/>
</bean>
</sm:component>
</sm:activationSpec>
<sm:activationSpec componentName="trace" service="foo:trace">
<sm:component>
<bean class="org.apache.servicemix.components.util.TraceComponent" />
</sm:component>
</sm:activationSpec>
</sm:activationSpecs>
</sm:serviceunit>
<!-- message broker -->
<bean id="jmsFactory"
class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
</property>
</bean>
</beans>
--
View this message in context: http://www.nabble.com/Not-able-to-plug-Aggregator-in-tf2532729.html#a7056949
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Not able to plug Aggregator in
Posted by Guillaume Nodet <gn...@gmail.com>.
As stated in the documentation (see [1]), the split aggregator is used
with the splitter eip pattern. It relies on some properties to aggregate
the incoming exchanges. These properties are index, count and a
correlationId. They default to the values set by the xpath-splitter, but
they can be customized if needed, or you can also write your own
aggregator (take a look at the SplitAggregator code, [2]).
However, I'm not quite sure of what flow you are trying to achieve,
but the JmsServiceComponent and static-recipient-list use InOut meps,
whereas the aggregator only handle InOnly meps. So the aggregator
will fail all incoming exchanges.
If you need to return responses to the JMS messages, you may want
to introduce wire-taps to capture the different response and aggregate
them. Else you may need to use JmsReceiverComponent and
pipelines.
[1] http://servicemix.goopen.org/site/servicemix-eip.html#servicemix-eip-SplitAggregator
[2] http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-eip/src/main/java/org/apache/servicemix/eip/patterns/SplitAggregator.java?view=markup
On 10/29/06, newmax <go...@gmail.com> wrote:
>
> I have 3 services configured i.e. EquifaxRoutingSlip, ExperianRoutingSlip and
> TransunionRoutingSlip. I have configured such that the results from each of
> the services should aggregate into a aggregator i.e. CreditReportAggregator.
> But, when I run my program aggregator is ignored with no message on the
> screen. Could anyone help me out please. Folllowing is my configuration
> file.
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns:sm="http://servicemix.apache.org/config/1.0"
> xmlns:lb="http://servicemix.org/demos/loan-broker"
> xmlns:foo="http://servicemix.org/demo/"
> xmlns:eip="http://servicemix.apache.org/eip/1.0">
> <classpath>
> <location>.</location>
> </classpath>
>
> <sm:serviceunit id="jbi">
> <sm:activationSpecs>
> <sm:activationSpec componentName="JmsSource1"
> destinationService="foo:equifaxRoutingSlip">
> <sm:component>
> <bean
> class="org.apache.servicemix.components.jms.JmsServiceComponent">
> <property name="template">
> <bean class="org.springframework.jms.core.JmsTemplate">
> <property name="connectionFactory" ref="jmsFactory" />
> <property name="defaultDestinationName"
> value="demo.org.apache.servicemix.source" />
> <property name="pubSubDomain" value="true" />
> </bean>
> </property>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec componentName="JmsSource2"
> destinationService="foo:experianRoutingSlip">
> <sm:component>
> <bean
> class="org.apache.servicemix.components.jms.JmsServiceComponent">
> <property name="template">
> <bean class="org.springframework.jms.core.JmsTemplate">
> <property name="connectionFactory" ref="jmsFactory" />
> <property name="defaultDestinationName"
> value="demo.org.apache.servicemix.source" />
> <property name="pubSubDomain" value="true" />
> </bean>
> </property>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec componentName="JmsSource"
> destinationService="foo:transunionRoutingSlip">
> <sm:component>
> <bean
> class="org.apache.servicemix.components.jms.JmsServiceComponent">
> <property name="template">
> <bean class="org.springframework.jms.core.JmsTemplate">
> <property name="connectionFactory" ref="jmsFactory" />
> <property name="defaultDestinationName"
> value="demo.org.apache.servicemix.source" />
> <property name="pubSubDomain" value="true" />
> </bean>
> </property>
> </bean>
> </sm:component>
> </sm:activationSpec>
> <!-- Routers -->
> <sm:activationSpec componentName="servicemix-eip1">
> <sm:component>
> <eip:component>
> <eip:endpoints>
> <eip:static-recipient-list service="foo:creditAgencyGateway">
> <eip:recipients>
> <eip:exchange-target service="foo:equifaxRoutingSlip" />
> <eip:exchange-target service="foo:experianRoutingSlip" />
> <eip:exchange-target service="foo:transunionRoutingSlip" />
> </eip:recipients>
> </eip:static-recipient-list>
> <eip:static-routing-slip service="foo:equifaxRoutingSlip">
> <eip:targets>
> <eip:exchange-target service="foo:equifaxRequestTransformer" />
> <eip:exchange-target service="foo:equifax" />
> <eip:exchange-target service="foo:equifaxResponseTransformer" />
> <eip:exchange-target service="foo:creditReportAggregator" />
> </eip:targets>
> </eip:static-routing-slip>
> <eip:static-routing-slip service="foo:experianRoutingSlip">
> <eip:targets>
> <eip:exchange-target service="foo:experianRequestTransformer" />
> <eip:exchange-target service="foo:experian" />
> <eip:exchange-target service="foo:experianResponseTransformer" />
> <eip:exchange-target service="foo:creditReportAggregator" />
> </eip:targets>
> </eip:static-routing-slip>
> <eip:static-routing-slip service="foo:transunionRoutingSlip">
> <eip:targets>
> <eip:exchange-target service="foo:transunionRequestTransformer" />
> <eip:exchange-target service="foo:transunion" />
> <eip:exchange-target service="foo:transunionResponseTransformer" />
> <eip:exchange-target service="foo:creditReportAggregator" />
> </eip:targets>
> </eip:static-routing-slip>
> <eip:split-aggregator service="foo:creditReportAggregator">
> <eip:target>
> <eip:exchange-target service="foo:trace" />
> </eip:target>
> </eip:split-aggregator>
> </eip:endpoints>
> </eip:component>
> </sm:component>
> </sm:activationSpec>
>
> <!-- Equifax -->
> <sm:activationSpec componentName="Equifax"
> service="foo:equifax">
> <sm:component>
> <bean class="org.apache.servicemix.components.saaj.SaajBinding">
> <property name="soapEndpoint">
> <bean class="javax.xml.messaging.URLEndpoint">
> <constructor-arg
> value="http://localhost:8080/equifax-ws/services/CreditReport"/>
> </bean>
> </property>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec componentName="EquifaxRequestTransformer"
> service="foo:equifaxRequestTransformer">
> <sm:component>
> <bean class="org.apache.servicemix.components.xslt.XsltComponent">
> <property name="xsltResource"
> value="classpath:xsl/equifax-request.xsl"/>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec componentName="EquifaxResponseTransformer"
> service="foo:equifaxResponseTransformer">
> <sm:component>
> <bean class="org.apache.servicemix.components.xslt.XsltComponent">
> <property name="xsltResource"
> value="classpath:xsl/equifax-response.xsl"/>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <!-- Experian -->
> <sm:activationSpec componentName="Experian"
> service="foo:experian">
> <sm:component>
> <bean class="org.apache.servicemix.components.saaj.SaajBinding">
> <property name="soapEndpoint">
> <bean class="javax.xml.messaging.URLEndpoint">
> <constructor-arg
> value="http://localhost:8080/experian-ws/services/CreditReport"/>
> </bean>
> </property>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec componentName="ExperianRequestTransformer"
> service="foo:experianRequestTransformer">
> <sm:component>
> <bean class="org.apache.servicemix.components.xslt.XsltComponent">
> <property name="xsltResource"
> value="classpath:xsl/experian-request.xsl"/>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec componentName="ExperianResponseTransformer"
> service="foo:experianResponseTransformer">
> <sm:component>
> <bean class="org.apache.servicemix.components.xslt.XsltComponent">
> <property name="xsltResource"
> value="classpath:xsl/experian-response.xsl"/>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <!-- Transunion -->
> <sm:activationSpec componentName="Transunion"
> service="foo:transunion">
> <sm:component>
> <bean class="org.apache.servicemix.components.saaj.SaajBinding">
> <property name="soapEndpoint">
> <bean class="javax.xml.messaging.URLEndpoint">
> <constructor-arg
> value="http://localhost:8080/transunion-ws/services/CreditReport"/>
> </bean>
> </property>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec componentName="TransunionRequestTransformer"
> service="foo:transunionRequestTransformer">
> <sm:component>
> <bean class="org.apache.servicemix.components.xslt.XsltComponent">
> <property name="xsltResource"
> value="classpath:xsl/transunion-request.xsl"/>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec componentName="TransunionResponseTransformer"
> service="foo:transunionResponseTransformer">
> <sm:component>
> <bean class="org.apache.servicemix.components.xslt.XsltComponent">
> <property name="xsltResource"
> value="classpath:xsl/transunion-response.xsl"/>
> </bean>
> </sm:component>
> </sm:activationSpec>
>
> <sm:activationSpec componentName="trace" service="foo:trace">
> <sm:component>
> <bean class="org.apache.servicemix.components.util.TraceComponent" />
> </sm:component>
> </sm:activationSpec>
>
> </sm:activationSpecs>
>
> </sm:serviceunit>
> <!-- message broker -->
> <bean id="jmsFactory"
> class="org.apache.activemq.pool.PooledConnectionFactory">
> <property name="connectionFactory">
> <bean class="org.apache.activemq.ActiveMQConnectionFactory">
> <property name="brokerURL" value="tcp://localhost:61616" />
> </bean>
> </property>
> </bean>
> </beans>
>
> --
> View this message in context: http://www.nabble.com/Not-able-to-plug-Aggregator-in-tf2532729.html#a7056949
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>
--
Cheers,
Guillaume Nodet