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
>