You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by "Fausey,Jonathan" <fa...@oclc.org> on 2007/01/30 23:59:58 UTC

help with configuration of filtering outbound routers for BridgeComponent

I am trying to use a BridgeComponent UMO with filtering outbound routers
to route messages based on one of the message properties.  The
configuration file for the BridgeComponent is as follows:

<!DOCTYPE mule-configuration PUBLIC "-//MuleSource //DTD
mule-configuration XML V1.0//EN"
 
"http://mule.mulesource.org/dtds/mule-configuration.dtd">
<mule-configuration id="Router1" version="1.0">
    <description>
        A component to route messages to the next destination in the
message header.
	Wired to JMS queues.
    </description>

    <connector name="jmsConnector"
className="org.mule.providers.jms.JmsConnector">
        <properties>
            <property name="specification" value="1.1"/>
            <property name="connectionFactoryJndiName"
value="ConnectionFactory"/>
            <property name="jndiInitialFactory"
value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
            <map name="connectionFactoryProperties">
                <property name="brokerURL" value="tcp://foo:61616"/>
            </map>
        </properties>
    </connector>

    <transformers>
        <transformer name="SetMessageRoutingProperties"
 
className="org.oclc.mule.transformers.SetMessageRoutingProperties"
 
returnClass="org.apache.activemq.command.ActiveMQMessage"/>
    </transformers>

    <model name="Router1">
	<mule-descriptor name="Router"
 
implementation="org.mule.components.simple.BridgeComponent">

            <inbound-router>
                <endpoint address="jms://Q.MODS_IN"
transformers="SetMessageRoutingProperties"/>
            </inbound-router>

	    <outbound-router>
	        <catch-all-strategy
className="org.mule.routing.ForwardingCatchAllStrategy">
                    <endpoint address="jms://error.queue"/>
		</catch-all-strategy>

                <router
className="org.mule.routing.outbound.FilteringOutboundRouter">
                    <endpoint address="jms://Q.MOD_TITLE"/>
                    <filter
className="org.mule.routing.filters.MessagePropertyFilter"
	                    expression="destination=MOD_TITLE"/>
                </router>

                <router
className="org.mule.routing.outbound.FilteringOutboundRouter">
                    <endpoint address="jms://Q.MOD_DATE"/>
                    <filter
className="org.mule.routing.filters.MessagePropertyFilter"
	                    expression="destination=MOD_DATE"/>
                </router>

                <router
className="org.mule.routing.outbound.FilteringOutboundRouter">
                    <endpoint address="jms://Q.MODS_OUT"/>
                    <filter
className="org.mule.routing.filters.MessagePropertyFilter"
	                    expression="destination=MODS_OUT"/>
                </router>

		<router
className="org.mule.routing.outbound.FilteringOutboundRouter">
                    <endpoint address="smtp://fausey@oclc.org"/>
                    <filter expectedType="java.lang.Exception"
 
className="org.mule.routing.filters.PayloadTypeFilter"/>
                </router>
            </outbound-router>
	</mule-descriptor>
    </model>
</mule-configuration>

The SetMessageRoutingProperties transformer runs (produces console
entries) and returns an instance of
org.apache.activemq.command.ActiveMQMessage, which implements
javax.jms.Message, but then something goes wrong with the outbound
routing, producing the following messages:

INFO  2007-01-30 17:43:31,105
[jmsConnector.jmsConnector.dispatchers.dispatcher.1]
org.mule.providers.jms.JmsMessageDispatcher: Successfully connected to:
jms://error.queue
ERROR 2007-01-30 17:43:31,121
[jmsConnector.jmsConnector.dispatchers.dispatcher.1]
org.mule.impl.DefaultExceptionStrategy: 
************************************************************************
********
Message               : Message is not a JMS message, it is of type
"java.lang.String". Check the transformer for this Connector
"jmsConnector". Failed to route event via endpoint:
MuleEndpoint{connector=org.mule.providers.jms.JmsConnector@1f02b85,
endpointUri=jms://error.queue,
transformer=Transformer{name='JMSMessageToObject', returnClass=false,
returnClass=false, sourceTypes=[interface javax.jms.Message, interface
javax.jms.Message]}, name='jms.error.queue', type='senderAndReceiver',
properties={}, transactionConfig=Transaction{factory=null, action=NONE,
timeout=30000}, filter=null, deleteUnacceptedMessages=false,
initialised=true, securityFilter=null, synchronous=null,
initialState=started, createConnector=0, remoteSync=false,
remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
type: org.apache.activemq.command.ActiveMQTextMessage
Type                  : org.mule.umo.provider.DispatchException
Code                  : MULE_ERROR-42999
JavaDoc               :
http://mule.codehaus.org/docs/apidocs/org/mule/umo/provider/DispatchExce
ption.html
Payload               : ActiveMQTextMessage {commandId = 6,
responseRequired = true, messageId =
ID:devapp1.dev.oclc.org-46621-1170197003418-1:0:1:1:1,
originalDestination = null, originalTransactionId = null, producerId =
ID:devapp1.dev.oclc.org-46621-1170197003418-1:0:1:1, destination =
queue://Q.MODS_IN, transactionId = null, expiration = 0, timestamp =
1170197003853, arrival = 0, correlationId = null, replyTo = null,
persistent = true, type = null, priority = 4, groupID = null,
groupSequence = 0, targetConsumerId = null, compressed = false, userID =
null, content = null, marshalledProperties =
org.apache.activemq.util.ByteSequence@6db724, dataStructure = null,
redeliveryCounter = 0, size = 0, properties =
{destinations=MOD_DATE,MODS_OUT, destination=MOD_TITLE,
MULE_SESSION=SUQ9NGFjNWMwZjktYjBiMy0xMWRiLWJmNjgtZjM3ZTY1NzI1OGE2,
job_id=devapp1.dev.oclc.org/cdf-mod-client_valpha/20070130-17:43:23.759-
0500, originator=cdf-mod-client_valpha, MULE_ENDPOINT=jms://Q.MODS_IN,
origin=devapp1.dev.oclc.org, start_time=20070130-17:43:23.759-0500},
readOnlyProperties = true, readOnlyBody = true, droppable = false, text
= [snipped]}
************************************************************************
********
Exception stack is:
1. Message is not a JMS message, it is of type "java.lang.String". Check
the transformer for this Connector "jmsConnector". Failed to route event
via endpoint:
MuleEndpoint{connector=org.mule.providers.jms.JmsConnector@1f02b85,
endpointUri=jms://error.queue,
transformer=Transformer{name='JMSMessageToObject', returnClass=false,
returnClass=false, sourceTypes=[interface javax.jms.Message, interface
javax.jms.Message]}, name='jms.error.queue', type='senderAndReceiver',
properties={}, transactionConfig=Transaction{factory=null, action=NONE,
timeout=30000}, filter=null, deleteUnacceptedMessages=false,
initialised=true, securityFilter=null, synchronous=null,
initialState=started, createConnector=0, remoteSync=false,
remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
type: org.apache.activemq.command.ActiveMQTextMessage
(org.mule.umo.provider.DispatchException)
  org.mule.providers.jms.JmsMessageDispatcher:168
(http://mule.codehaus.org/docs/apidocs/org/mule/umo/provider/DispatchExc
eption.html)
************************************************************************
********
Root Exception stack trace:
org.mule.umo.provider.DispatchException: Message is not a JMS message,
it is of type "java.lang.String". Check the transformer for this
Connector "jmsConnector". Failed to route event via endpoint:
MuleEndpoint{connector=org.mule.providers.jms.JmsConnector@1f02b85,
endpointUri=jms://error.queue,
transformer=Transformer{name='JMSMessageToObject', returnClass=false,
returnClass=false, sourceTypes=[interface javax.jms.Message, interface
javax.jms.Message]}, name='jms.error.queue', type='senderAndReceiver',
properties={}, transactionConfig=Transaction{factory=null, action=NONE,
timeout=30000}, filter=null, deleteUnacceptedMessages=false,
initialised=true, securityFilter=null, synchronous=null,
initialState=started, createConnector=0, remoteSync=false,
remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
type: org.apache.activemq.command.ActiveMQTextMessage
        at
org.mule.providers.jms.JmsMessageDispatcher.dispatchMessage(JmsMessageDi
spatcher.java:168)
        at
org.mule.providers.jms.JmsMessageDispatcher.doDispatch(JmsMessageDispatc
her.java:69)
        at
org.mule.providers.AbstractMessageDispatcher$Worker.run(AbstractMessageD
ispatcher.java:592)
        at org.mule.impl.work.WorkerContext.run(WorkerContext.java:317)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
.runTask(ThreadPoolExecutor.java:650)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker
.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)

************************************************************************
******** 

I'm not connecting the dots.  What have I done wrong?

-Jon


Re: help with configuration of filtering outbound routers for BridgeComponent

Posted by Rob Davies <ra...@gmail.com>.
Hi John,

this looks its a question of the Mule user group

cheers,

Rob
On 30 Jan 2007, at 22:59, Fausey,Jonathan wrote:

> I am trying to use a BridgeComponent UMO with filtering outbound  
> routers
> to route messages based on one of the message properties.  The
> configuration file for the BridgeComponent is as follows:
>
> <!DOCTYPE mule-configuration PUBLIC "-//MuleSource //DTD
> mule-configuration XML V1.0//EN"
>
> "http://mule.mulesource.org/dtds/mule-configuration.dtd">
> <mule-configuration id="Router1" version="1.0">
>     <description>
>         A component to route messages to the next destination in the
> message header.
> 	Wired to JMS queues.
>     </description>
>
>     <connector name="jmsConnector"
> className="org.mule.providers.jms.JmsConnector">
>         <properties>
>             <property name="specification" value="1.1"/>
>             <property name="connectionFactoryJndiName"
> value="ConnectionFactory"/>
>             <property name="jndiInitialFactory"
> value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
>             <map name="connectionFactoryProperties">
>                 <property name="brokerURL" value="tcp://foo:61616"/>
>             </map>
>         </properties>
>     </connector>
>
>     <transformers>
>         <transformer name="SetMessageRoutingProperties"
>
> className="org.oclc.mule.transformers.SetMessageRoutingProperties"
>
> returnClass="org.apache.activemq.command.ActiveMQMessage"/>
>     </transformers>
>
>     <model name="Router1">
> 	<mule-descriptor name="Router"
>
> implementation="org.mule.components.simple.BridgeComponent">
>
>             <inbound-router>
>                 <endpoint address="jms://Q.MODS_IN"
> transformers="SetMessageRoutingProperties"/>
>             </inbound-router>
>
> 	    <outbound-router>
> 	        <catch-all-strategy
> className="org.mule.routing.ForwardingCatchAllStrategy">
>                     <endpoint address="jms://error.queue"/>
> 		</catch-all-strategy>
>
>                 <router
> className="org.mule.routing.outbound.FilteringOutboundRouter">
>                     <endpoint address="jms://Q.MOD_TITLE"/>
>                     <filter
> className="org.mule.routing.filters.MessagePropertyFilter"
> 	                    expression="destination=MOD_TITLE"/>
>                 </router>
>
>                 <router
> className="org.mule.routing.outbound.FilteringOutboundRouter">
>                     <endpoint address="jms://Q.MOD_DATE"/>
>                     <filter
> className="org.mule.routing.filters.MessagePropertyFilter"
> 	                    expression="destination=MOD_DATE"/>
>                 </router>
>
>                 <router
> className="org.mule.routing.outbound.FilteringOutboundRouter">
>                     <endpoint address="jms://Q.MODS_OUT"/>
>                     <filter
> className="org.mule.routing.filters.MessagePropertyFilter"
> 	                    expression="destination=MODS_OUT"/>
>                 </router>
>
> 		<router
> className="org.mule.routing.outbound.FilteringOutboundRouter">
>                     <endpoint address="smtp://fausey@oclc.org"/>
>                     <filter expectedType="java.lang.Exception"
>
> className="org.mule.routing.filters.PayloadTypeFilter"/>
>                 </router>
>             </outbound-router>
> 	</mule-descriptor>
>     </model>
> </mule-configuration>
>
> The SetMessageRoutingProperties transformer runs (produces console
> entries) and returns an instance of
> org.apache.activemq.command.ActiveMQMessage, which implements
> javax.jms.Message, but then something goes wrong with the outbound
> routing, producing the following messages:
>
> INFO  2007-01-30 17:43:31,105
> [jmsConnector.jmsConnector.dispatchers.dispatcher.1]
> org.mule.providers.jms.JmsMessageDispatcher: Successfully connected  
> to:
> jms://error.queue
> ERROR 2007-01-30 17:43:31,121
> [jmsConnector.jmsConnector.dispatchers.dispatcher.1]
> org.mule.impl.DefaultExceptionStrategy:
> ********************************************************************** 
> **
> ********
> Message               : Message is not a JMS message, it is of type
> "java.lang.String". Check the transformer for this Connector
> "jmsConnector". Failed to route event via endpoint:
> MuleEndpoint{connector=org.mule.providers.jms.JmsConnector@1f02b85,
> endpointUri=jms://error.queue,
> transformer=Transformer{name='JMSMessageToObject', returnClass=false,
> returnClass=false, sourceTypes=[interface javax.jms.Message, interface
> javax.jms.Message]}, name='jms.error.queue', type='senderAndReceiver',
> properties={}, transactionConfig=Transaction{factory=null,  
> action=NONE,
> timeout=30000}, filter=null, deleteUnacceptedMessages=false,
> initialised=true, securityFilter=null, synchronous=null,
> initialState=started, createConnector=0, remoteSync=false,
> remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
> type: org.apache.activemq.command.ActiveMQTextMessage
> Type                  : org.mule.umo.provider.DispatchException
> Code                  : MULE_ERROR-42999
> JavaDoc               :
> http://mule.codehaus.org/docs/apidocs/org/mule/umo/provider/ 
> DispatchExce
> ption.html
> Payload               : ActiveMQTextMessage {commandId = 6,
> responseRequired = true, messageId =
> ID:devapp1.dev.oclc.org-46621-1170197003418-1:0:1:1:1,
> originalDestination = null, originalTransactionId = null, producerId =
> ID:devapp1.dev.oclc.org-46621-1170197003418-1:0:1:1, destination =
> queue://Q.MODS_IN, transactionId = null, expiration = 0, timestamp =
> 1170197003853, arrival = 0, correlationId = null, replyTo = null,
> persistent = true, type = null, priority = 4, groupID = null,
> groupSequence = 0, targetConsumerId = null, compressed = false,  
> userID =
> null, content = null, marshalledProperties =
> org.apache.activemq.util.ByteSequence@6db724, dataStructure = null,
> redeliveryCounter = 0, size = 0, properties =
> {destinations=MOD_DATE,MODS_OUT, destination=MOD_TITLE,
> MULE_SESSION=SUQ9NGFjNWMwZjktYjBiMy0xMWRiLWJmNjgtZjM3ZTY1NzI1OGE2,
> job_id=devapp1.dev.oclc.org/cdf-mod-client_valpha/ 
> 20070130-17:43:23.759-
> 0500, originator=cdf-mod-client_valpha, MULE_ENDPOINT=jms://Q.MODS_IN,
> origin=devapp1.dev.oclc.org, start_time=20070130-17:43:23.759-0500},
> readOnlyProperties = true, readOnlyBody = true, droppable = false,  
> text
> = [snipped]}
> ********************************************************************** 
> **
> ********
> Exception stack is:
> 1. Message is not a JMS message, it is of type "java.lang.String".  
> Check
> the transformer for this Connector "jmsConnector". Failed to route  
> event
> via endpoint:
> MuleEndpoint{connector=org.mule.providers.jms.JmsConnector@1f02b85,
> endpointUri=jms://error.queue,
> transformer=Transformer{name='JMSMessageToObject', returnClass=false,
> returnClass=false, sourceTypes=[interface javax.jms.Message, interface
> javax.jms.Message]}, name='jms.error.queue', type='senderAndReceiver',
> properties={}, transactionConfig=Transaction{factory=null,  
> action=NONE,
> timeout=30000}, filter=null, deleteUnacceptedMessages=false,
> initialised=true, securityFilter=null, synchronous=null,
> initialState=started, createConnector=0, remoteSync=false,
> remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
> type: org.apache.activemq.command.ActiveMQTextMessage
> (org.mule.umo.provider.DispatchException)
>   org.mule.providers.jms.JmsMessageDispatcher:168
> (http://mule.codehaus.org/docs/apidocs/org/mule/umo/provider/ 
> DispatchExc
> eption.html)
> ********************************************************************** 
> **
> ********
> Root Exception stack trace:
> org.mule.umo.provider.DispatchException: Message is not a JMS message,
> it is of type "java.lang.String". Check the transformer for this
> Connector "jmsConnector". Failed to route event via endpoint:
> MuleEndpoint{connector=org.mule.providers.jms.JmsConnector@1f02b85,
> endpointUri=jms://error.queue,
> transformer=Transformer{name='JMSMessageToObject', returnClass=false,
> returnClass=false, sourceTypes=[interface javax.jms.Message, interface
> javax.jms.Message]}, name='jms.error.queue', type='senderAndReceiver',
> properties={}, transactionConfig=Transaction{factory=null,  
> action=NONE,
> timeout=30000}, filter=null, deleteUnacceptedMessages=false,
> initialised=true, securityFilter=null, synchronous=null,
> initialState=started, createConnector=0, remoteSync=false,
> remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
> type: org.apache.activemq.command.ActiveMQTextMessage
>         at
> org.mule.providers.jms.JmsMessageDispatcher.dispatchMessage 
> (JmsMessageDi
> spatcher.java:168)
>         at
> org.mule.providers.jms.JmsMessageDispatcher.doDispatch 
> (JmsMessageDispatc
> her.java:69)
>         at
> org.mule.providers.AbstractMessageDispatcher$Worker.run 
> (AbstractMessageD
> ispatcher.java:592)
>         at org.mule.impl.work.WorkerContext.run(WorkerContext.java: 
> 317)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor 
> $Worker
> .runTask(ThreadPoolExecutor.java:650)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor 
> $Worker
> .run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
>
> ********************************************************************** 
> **
> ********
>
> I'm not connecting the dots.  What have I done wrong?
>
> -Jon
>