4 Replies Latest reply: Dec 8, 2009 1:59 AM by Matthew Li RSS

Bridge From Jboss ESB 4.4 to ActiveMQ 5.3

Matthew Li Newbie

Does anyone able to establish more than one bridge from JBM to ActiveMQ without specify extra ActiveMQJMSProvider?

I mange to create only one bridge service from JBM to ACtiveMQ, Srouce below:

jms-ds.xml

<mbean code="org.jboss.jms.jndi.JMSProviderLoader"
 name="jboss.messaging:service=JMSProviderLoader,name=ActiveMQJMSProvider">
 <attribute name="ProviderName">ActiveMQJMSProvider</attribute>
 <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
 <!-- The combined connection factory -->
 <attribute name="FactoryRef">ConnectionFactory</attribute>

 <!-- The queue connection factory -->
 <attribute name="QueueFactoryRef">ConnectionFactory</attribute>

 <!-- The topic factory -->
 <attribute name="TopicFactoryRef">ConnectionFactory</attribute>

 <attribute name="Properties">
 java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
 java.naming.provider.url=tcp://10.10.10.10:61616
 queue.inbound=queue/qError
 queue.outbound=VirtualQueue.ConfirmedOrders
 </attribute>
 </mbean>
 <tx-connection-factory>
 <jndi-name>ConnectionFactory</jndi-name>
 <xa-transaction/>
 <track-connection-by-tx/>
 <rar-name>activemq-rar-5.3.0.rar</rar-name>
 <connection-definition>javax.jms.ConnectionFactory</connection-definition>
 <ServerUrl>tcp://10.10.10.10:61616</ServerUrl>
 <min-pool-size>1</min-pool-size>
 <max-pool-size>200</max-pool-size>
 <blocking-timeout-millis>30000</blocking-timeout-millis>
 <idle-timeout-minutes>3</idle-timeout-minutes>
 </tx-connection-factory>


bridge-service.xml
<?xml version="1.0" encoding="UTF-8"?>
<server>
 <mbean code="org.jboss.jms.server.bridge.BridgeService"
 name="jboss.messaging:service=Bridge,name=ActiveMQOutboundBridge"
 xmbean-dd="xmdesc/Bridge-xmbean.xml">

 <depends optional-attribute-name="SourceProviderLoader">jboss.messaging:service=JMSProviderLoader,name=JMSProvider</depends>
 <depends optional-attribute-name="TargetProviderLoader">jboss.messaging:service=JMSProviderLoader,name=ActiveMQJMSProvider</depends>

 <attribute name="SourceDestinationLookup">queue/qTempBridge</attribute>

 <attribute name="TargetDestinationLookup">outbound</attribute>

 <attribute name="TargetUsername">user</attribute>
 <attribute name="TargetPassword">test</attribute>
 <attribute name="QualityOfServiceMode">0</attribute>
 <attribute name="MaxBatchSize">1</attribute>
 <attribute name="MaxBatchTime">1000</attribute>
 <attribute name="FailureRetryInterval">30000</attribute>
 <attribute name="MaxRetries">-1</attribute>
 <attribute name="AddMessageIDInHeader">false</attribute>
 </mbean>
</server>


I searched through so many forum, mostly are defined the queue.outbound=VirtualQueue.ConfirmedOrders in the ds.xml and recall the "outbound" in
<attribute name="TargetDestinationLookup">outbound</attribute>
, it works perfectly with the "outbound" property.

On the other hand, I have tried to define the physical queue name in the
<attribute name="TargetDestinationLookup">VirtualQueue.ConfirmedOrders</attribute>
and the JBoss doesn't deploy the bridge.

Does anyone know how to use the physical name in the bridge-service.xml?

  • 1. Re: Bridge From Jboss ESB 4.4 to ActiveMQ 5.3
    Yong Hao Gao Master

    Do you have any error logs when deploying such a bridge service?

  • 2. Re: Bridge From Jboss ESB 4.4 to ActiveMQ 5.3
    Matthew Li Newbie

    Here are the log when I was trying to deploy the bridge service



    2009-12-08 13:44:09,054 WARN [org.jboss.jms.server.bridge.Bridge] Failed to set up connections
    javax.naming.NameNotFoundException: VirtualQueue.ConfirmedOrders
     at org.apache.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:225)
     at javax.naming.InitialContext.lookup(InitialContext.java:392)
     at org.jboss.jms.server.bridge.JNDIFactorySupport.createObject(JNDIFactorySupport.java:66)
     at org.jboss.jms.server.bridge.JNDIDestinationFactory.createDestination(JNDIDestinationFactory.java:45)
     at org.jboss.jms.server.bridge.Bridge.setupJMSObjects(Bridge.java:910)
     at org.jboss.jms.server.bridge.Bridge.start(Bridge.java:306)
     at org.jboss.jms.server.bridge.BridgeService.startService(BridgeService.java:346)
     at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
     at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:196)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
     at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
     at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
     at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:995)
     at $Proxy0.start(Unknown Source)
     at org.jboss.system.ServiceController.start(ServiceController.java:417)
     at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
     at $Proxy4.start(Unknown Source)
     at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
     at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
     at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
     at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
     at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
     at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
     at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
     at $Proxy9.deploy(Unknown Source)
     at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
     at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:610)
     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
     at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)
    2009-12-08 13:44:09,164 WARN [org.jboss.jms.server.bridge.Bridge] Failed to start bridge
    2009-12-08 13:44:09,195 INFO [org.jboss.jms.server.bridge.BridgeService] Started bridge BridgeService. Source: queue/qTempBridge Target: VirtualQueue.ConfirmedOrders
    2009-12-08 13:44:09,195 DEBUG [org.jboss.jms.server.bridge.BridgeService] Started jboss.messaging:service=Bridge,name=ActiveMQOutboundBridge
    2009-12-08 13:44:09,195 WARN [org.jboss.jms.server.bridge.Bridge] Will retry after a pause of 30000 ms


  • 3. Re: Bridge From Jboss ESB 4.4 to ActiveMQ 5.3
    Yong Hao Gao Master

    the log shows that the bridge cannot look up a queue named 'VirtualQueue.ConfirmedOrders'. Either there is no such named queue or your jndi properties are not correctly provided in the configuration file.

  • 4. Re: Bridge From Jboss ESB 4.4 to ActiveMQ 5.3
    Matthew Li Newbie

    That exactly what I 'm talking about. The Jboss doesn't recognize the Physical queue Name which I defined in the Bridge-service.xml.

    <attribute name="TargetDestinationLookup">VirtualQueue.ConfirmedOrders</attribute>


    the JBoss only recognize the "outbound" property which defined in Bridge-service.xml.

    <attribute name="TargetDestinationLookup">outbound</attribute>


    reference to:

    <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
     name="jboss.messaging:service=JMSProviderLoader,name=ActiveMQJMSProvider">
     <attribute name="ProviderName">ActiveMQJMSProvider</attribute>
     <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
     <!-- The combined connection factory -->
     <attribute name="FactoryRef">ConnectionFactory</attribute>
    
     <!-- The queue connection factory -->
     <attribute name="QueueFactoryRef">ConnectionFactory</attribute>
    
     <!-- The topic factory -->
     <attribute name="TopicFactoryRef">ConnectionFactory</attribute>
    
     <attribute name="Properties">
     java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
     java.naming.provider.url=tcp://10.10.10.10:61616
     queue.inbound=queue/qError
     queue.outbound=VirtualQueue.ConfirmedOrders
     </attribute>
     </mbean>


    I couldn't mange to create another bridge-service by using a same ActiveMQJMSProvider. The only solution so far I have found which is create another extra ActiveMQJMSProvider specifically for the other queue.outbound=queue/testQueue2.

    I guess that's not the proper way to create bridge-service, right? but I couldn't think of any solution.