I am having problems using content-based router of servicemix-eip coupled
with pipeline in servicemix 3. Basically, I have an http-bc that accepts
Notify or Subscribe message and based on the input message I route the
message to a "css:notificaPipeline" or "css:persistenceRouteSlip". For the
Subscribe message all works fine.
For Notify predicate rule ( <eip:xpath-predicate xpath="//wsnt:Notify"
namespaceContext="#wnsContext" />)
I get ERROR: " 500 Use an InOnly or RobustInOnly MEP"
stack trace:...
java.lang.UnsupportedOperationException: Use an InOnly or
RobustInOnly MEP
at
org.apache.servicemix.eip.patterns.Pipeline.processAsyncProvider(Pipeline.java:362)
at
org.apache.servicemix.eip.patterns.Pipeline.processAsync(Pipeline.java:325)
at
org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:185)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
.....
It appears that "eip:content-based-router" pattern accepts all MEP but
output only IN-OUT MEP! could this be the case. From the tutorial online it
seems that the target of xpath predicate could be a eip:pipeline which
accepts In-Only or RobustInOnly. The error would make sense if the default
output of content-based router is always In-Out
hence the error from the pipeline.
I tried using ServicemixClient to send an In-Only exchange to the pipeline
from the Notify predicate rule but I ran into time-out exceptions because
the router always expects an output.
Could you please suggest how I could confront this problem. Thank you very
much. Please see the snippet of xbean.xml for servicemix-eip binding
component.
Regards
tefo
......
<!-- Content-based routing toward the CSS-Broker: route Notify, Subscribe
requests -->
<eip:content-based-router service="css:cssRouter"
endpoint="cssRouterEndpoint">
<eip:rules>
<eip:routing-rule>
<eip:predicate>
<eip:xpath-predicate xpath="//wsnt:Notify"
namespaceContext="#wnsContext" />
</eip:predicate>
<eip:target>
<eip:exchange-target service="css:notificaPipeline"
endpoint="endpoint" />
</eip:target>
</eip:routing-rule>
<!-- Subscriptions have to be persisted and forwareded to the
Broker -->
<eip:routing-rule>
<eip:predicate>
<eip:xpath-predicate xpath="//wsnt:Subscribe"
namespaceContext="#wnsContext" />
</eip:predicate>
<eip:target>
<eip:exchange-target service="css:persistenceRouteSlip"
endpoint="endpoint" />
</eip:target>
</eip:routing-rule>
<!-- default routing rule -->
<eip:routing-rule>
<eip:target>
<eip:exchange-target service="wsn:NotificationBroker"
endpoint="Broker" />
</eip:target>
</eip:routing-rule>
</eip:rules>
</eip:content-based-router>
<!-- First Validate the Schema of NotificaXML document and if valid forward
the NotificaXML
to the Broker else throw and error -->
<eip:static-routing-slip service="css:notificaSubTrigger"
endpoint="endpoint">
<eip:targets>
<!-- NB: First we inspect the exchange, if its the first Notify message
into the JBI, we load subscriptions from DB -->
<eip:exchange-target service="css:subscriptionsReloader"
endpoint="endpoint" />
<!-- validate Notify message using servicemix-validation component
-->
<eip:exchange-target service="css:CSSValidationService"
endpoint="NotificaValidationEndpoint" />
</eip:targets>
</eip:static-routing-slip>
<eip:pipeline service="css:notificaPipeline" endpoint="endpoint">
<eip:transformer>
<eip:exchange-target service="css:notificaSubTrigger" endpoint="endpoint"
/>
</eip:transformer>
<eip:target>
<eip:exchange-target service="wsn:NotificationBroker" endpoint="Broker"
/>
</eip:target>
</eip:pipeline>
.......
--
View this message in context:
http://old.nabble.com/-servicemix-eip-%3A-content-based-router-and-pipeline-in-servicemix-3.x-tp28690640p28690640.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.