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

    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.