activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adrian Co <...@exist.com>
Subject Re: Problems with VM transport
Date Tue, 27 Mar 2007 22:02:49 GMT
Yeah. tcp would refer to an external broker. Can you post the complete 
stack trace?

BTW, can you try using broker.useJmx=false instead of just useJmx=false?

Is the exception occu

uma_rk@comcast.net wrote:
> Suchitha,
>
> Thanks for your help. I thought a URL of the form "tcp://<host>..." refers to
> an external broker, not an embedded one? Am I mistaken? 
>
> I need to run the broker within the servlet container VM, not as a 
> separate process.
>
> Thanks,
>
> /U
>
>  -------------- Original message ----------------------
> From: "Suchitha Koneru (sukoneru)" <sukoneru@cisco.com>
>   
>> Hi , 
>>       I also have two web apps running in Tomcat 5.5.20.Active mq
>> version being used is 4.0.2.
>> Our application uses an embedded broker, This broker is started by a
>> servlet context Listener, which is specified in web.xml  of one of the
>> web apps.  Both the web apps connect to this broker and exchange
>> messages. I am using tcp mode of transport tcp://localhost:"+portNum+ ,
>> for the broker.
>> Both the web apps connect to the broker using the url 
>> failover:tcp://localhost:"+this.portNum 
>>
>> Make sure that the broker is started by a servlet context listener ,
>> which is part of the web app , which is  started  first in order. For
>> example , in my case I have two webapps servlets and users,
>> Servlets is started before users, so there by the broker is a part of
>> servlets web app.
>>
>>
>>
>>
>> Hope this helps.
>> Thanks,
>> Suchitha.
>>
>>
>>
>>
>> -----Original Message-----
>> From: uma_rk@comcast.net [mailto:uma_rk@comcast.net] 
>> Sent: Monday, March 26, 2007 8:31 PM
>> To: users@activemq.apache.org
>> Subject: Re: Problems with VM transport
>>
>>
>> To follow up on my last mail: I can perhaps avoid the problem by using
>> distinct brokernames for each webapp; but that would create distinct
>> embedded brokers perhaps? I need both the webapps to share the same
>> broker so they receive messages published by each other.
>>
>> Regards,
>>
>> /U
>>
>>  -------------- Original message ----------------------
>> From: uma_rk@comcast.net
>>     
>>> Hi -
>>>
>>>    I am using the embedded broker in a servlet container. Each webapp 
>>> in the servlet container instantiates a connection factory that refers
>>>       
>>> to broker URL of
>>>
>>>             vm://localhost?broker.persistent=false
>>>
>>> as follows:
>>>
>>>         (Servlet Container
>>>                  (WebApp1
>>>                        ConnectionFactory -> 
>>> vm://localhost?broker.persistent=false
>>>                  )
>>>         )
>>>
>>> and this works fine. But as soon as I instantiate another webapp 
>>> (WebApp2) that also uses embedded broker as follows:
>>>
>>>         (Servlet Container
>>>                  (WebApp1
>>>                        ConnectionFactory -> 
>>> vm://localhost?broker.persistent=false
>>>                  )
>>>                  (WebApp2
>>>                        ConnectionFactory -> 
>>> vm://localhost?broker.persistent=false
>>>                  )
>>>         )
>>>
>>> the second webapp fails with the JMSException given below:
>>>
>>>    javax.jms.JMSException: Could not create Transport. Reason: 
>>> javax.management.InstanceAlreadyExistsException: 
>>> org.apache.activemq:BrokerName=localhost,Type=Broker
>>>         at
>>>
>>>       
>> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.
>> java:33)
>>     
>>>         at
>>> org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQ
>>> Connection
>>> Factory.java:229)
>>>         at
>>> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection
>>> (ActiveMQC
>>> onnectionFactory.java:242)
>>>         at
>>> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection
>>> (ActiveMQC
>>> onnectionFactory.java:211)
>>>         at
>>> org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveM
>>> QConnectio
>>> nFactory.java:158)
>>>         at
>>> org.springframework.jms.listener.AbstractMessageListenerContainer.crea
>>> teConnecti
>>> on(AbstractMessageListenerContainer.java:989)
>>>         at
>>> org.springframework.jms.listener.AbstractMessageListenerContainer.refr
>>> eshSharedC
>>> onnection(AbstractMessageListenerContainer.java:455)
>>>         //...
>>>
>>>
>>> I thought I could (tentatively) work around this problem by disabling 
>>> Jmx, so I switched the broker URL (for both webapps) to
>>>
>>>           vm://localhost?broker.persistent=false&useJmx=false
>>>
>>> This did not help.  Is there fundamentally a problem with multiple 
>>> instances of ActiveMQConnectionFactory referring to the same broker 
>>> URL (which is likely to to be the case when using embedded broker)?
>>>
>>> Thanks,
>>>
>>> /U
>>>
>>>
>>>  -------------- Original message ----------------------
>>> From: Adrian Co <aco@exist.com>
>>>       
>>>> uma_rk@comcast.net wrote:
>>>>         
>>>>> Adrian,
>>>>>
>>>>> Thanks for the note. 
>>>>>
>>>>>       > >    Startup:   vm://localhost
>>>>>       > >    During runtime (after an event): 
>>>>>       > >            failover(vm://localhost,tcp://remote:61616)
>>>>>       > >
>>>>>       > >   Would modifying the broker URL of the connection
>>>>>           
>> factory cause 
>>     
>>>> problems?
>>>>         
>>>>>        > >   
>>>>>         > Personally, I'm not sure if you can I haven't tried it,

>>>>> but I
>>>>>           
>>> don't
>>>       
>>>>>         > think it makes sense to make a vm transport failover. 
>>>>> The
>>>>>           
>>> assumption
>>>       
>>>> is
>>>>         
>>>>>         > that you have a broker running in the same vm as your
>>>>>           
>> jms client. 
>>     
>>> If
>>>       
>>>> the
>>>>         
>>>>>         > broker crashes, it means your client *should* have 
>>>>> crashed also
>>>>>           
>>> and
>>>       
>>>> it
>>>>         
>>>>>         > can't failover over to a remote broker anymore.
>>>>>
>>>>> Makes sense - now I see why someone else referred to me as
>>>>>           
>> 'retard' :-).
>>     
>>>>>  I need to have the client listen to two different brokers (the 
>>>>> embedded and the external) at the same time (so that the client 
>>>>> receives messages
>>>>>           
>>>> published
>>>>         
>>>>> by both the brokers and the messages published by the client are 
>>>>> sent to
>>>>>           
>>> both
>>>       
>>>> the
>>>>         
>>>>> brokers).  Is this the correct URI to network the embedded broker 
>>>>> with an
>>>>>           
>>>> external broker?
>>>>         
>>>>>             static:(vm://localhost,tcp://remotehost:61616)
>>>>>   
>>>>>           
>>>> Hum. AFAIK,  static just tells the client to choose one url to 
>>>> connect to. I don't think you can listen to two or more brokers 
>>>> using a single connection. You might want to network the brokers 
>>>> together if thats possible. If someone can let me know if its 
>>>> possible to listen to more than two brokers using a single jms 
>>>> connection, I'd appreciate it also. :-)
>>>>         
>>>>> Could you also clarify an additional question? If I instantiate 
>>>>> multiple connection factories in the same VM pointing to the 
>>>>> embedded broker would all the cconnection factories in the VM 
>>>>> share the same broker (as opposed to attempting to "instantiating 
>>>>> a new embedded broker" if such a thing were possible)?
>>>>>   
>>>>>           
>>>> If they are in the same jvm, and there's already an embedded broker,
>>>>         
>>>> it will be reused.
>>>>         
>>>>> Thanks again,
>>>>>
>>>>> /U
>>>>>
>>>>>  
>>>>>           
>
>
> !DSPAM:507,460989f7266458859425881!
>
>   


Mime
View raw message