L.S.,

I'm not sure what the jmsBulkout and jmsNonBulkOut refers to in your
code snippet, but if you want to forward the incoming message from a
bean endpoint, you need to create a new MessageExchange and send that
to the second endpoint.  BTW, you should probably also take care to
only process MessageExchanges with status ACTIVE in your
onMessageExchange() method, if you are sending a new exchange to
another endpoint, you'll

Another option (probably easier to configure/maintain) would be to use
your bean endpoint to handle an InOut exchange, the In message
contains the original payload and the out message contains the
modified payload.  You can then create a pipeline in Camel or EIP that
does from queue -> bean endpoint -> content based router -> to queue.
You could also move the processing done by the bean to Camel, if you
prefer using less different JBI components.

Regarding the replyDestination, that could be used for an handling a
request-reponse model over JMS.  However, with your use case, you'd
have to be using a DestinationChooser because of the alternating reply
destination, so either one of the previous solution will probably be
easier to implement.


Regards,

Gert Vanthienen
------------------------
Open Source SOA: http://fusesource.com
Blog: http://gertvanthienen.blogspot.com/



2009/2/25 yeahman <[email protected]>:
>
> We need to use the jms:comsumer to consume the message and send it to the
> bean component, this bean will do some sets of business and send it to the
> provider to consume this message.  We need to add the replyDestinationName
> property to jms:provider? what is this for? which queue it is supposed to
> be.  We use this config, but it is not quiet working and we got the queue
> channel overload it to give connection error 2099.
>
> Jms config
>
> <jms:consumer service="edddstub:InMessage"
>                                                
> targetService="edddstub:engineStubService"
>              endpoint="jbi"
>              destinationName="DDD.REQ.Q"
>              connectionFactory="#connectionFactory"
>              transacted="jms"
>              concurrentConsumers="1"
>              cacheLevel="3"
>   />
>
>
>   <jms:provider service="edddstub:jmsBulkOutService"
>              endpoint="bulkout"
>              destinationName="DDD.BULK.RESP.Q"
>              connectionFactory="#connectionFactory"
>              replyDestinationName="DDD.BULK.RESP.Q"
>              marshaler="#providerMarshaler"
>   />
>
>    <jms:provider service="edddstub:jmsNonBulkOutService"
>              endpoint="nonbulkout"
>              destinationName="DDD.NON.BULK.RESP.Q"
>              connectionFactory="#connectionFactory"
>              replyDestinationName="DDD.NON.BULK.RESP.Q"
>              marshaler="#providerMarshaler"
>   />
>
>         <bean id="providerMarshaler"
> class="com.symcor.eddd.publisher.DefaultProviderMarshaler" />
>
>
> Bean Component config:
> <bean:endpoint service="edddstub:engineStubService" endpoint="endpoint"
>                bean="#engineStubJBI" />
>
>        <bean id="engineStubJBI"
>                class="com.symcor.eddd.publisher.enginestub.EngineStubJBI">
>                <property name="handler" ref="handler" />
>                <property name="exceptionHandler" ref="exceptionHandler" />
>        </bean>
>
> And the java code for the bean:
>
> @Override
>        public void processMessageExchange(MessageExchange exchange)
>                        throws ServiceException {
>                try {
>                        NormalizedMessage message = exchange.getMessage("in");
>                        Source source = message.getContent();
>                        if (source instanceof StringSource){
>                                StringSource xmlSource = (StringSource) source;
>                                UoW uow = 
> UoWMarshalUtil.unmarshallString(xmlSource.getText());
>                                UoW outUoW = handler.createOutUoW(uow);
>                                String outString = 
> UoWMarshalUtil.marshallUoW(outUoW);
>                                Source outSource = new StringSource(outString);
>                                // create the out message, send to service 
> locator
>                                NormalizedMessage outMessage = 
> exchange.createMessage();
>                                outMessage.setContent(outSource);
>                                if 
> (handler.isBulk(outUoW.getUoWContext().getServicesList())){
>                                        logger.debug("Send result to JMS BULK 
> RESPONSE Queue");
>                                        jmsBulkOut.send(outMessage);
>                                } else {
>                                        logger.debug("Send result to JMS Non 
> BULK RESPONSE Queue");
>                                        jmsNonBulkOut.send(outMessage);
>                                }
>
>                                exchange.setStatus(ExchangeStatus.DONE);
>                                channel.send(exchange);
>
>                        } else {
>                                throw new ServiceException("Invalid Message 
> type, message is not xml");
>                        }
>                } catch (Exception e){
>                        throw new ServiceException(e);
>                }
>        }
>
> We are using the servicemix 3.3, Any suggestions.
>
> --
> View this message in context: 
> http://www.nabble.com/Jms-Consumer-to-Bean-Components-to-Jms-Producer-tp22208877p22208877.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>

Reply via email to