activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joe Fernandez" <joe.fernan...@ttmsolutions.com>
Subject RE: Help with embedded brokers
Date Thu, 01 May 2008 18:56:38 GMT

Yes. If each time the broker starts, you give it a new, randmomly generated
name, then it will end up creating/using a new message store. 


BTW, these two bridge configurations are allowed

  <-----               
A        B         A <-----> B
  ----->


But this one is not, which is what you were previously trying to set up. 


  <---->               
A        B 
  <---->


If you're setting up a network of embedded brokers and your network
configuration allows for it, consider using the multicast-based 'peer'
connector/transport. 

http://activemq.apache.org/peer-transport-reference.html


Joe

-----Original Message-----
From: matt hoffman [mailto:matt@mhoffman.org] 
Sent: Thursday, May 01, 2008 2:26 PM
To: users@activemq.apache.org
Subject: Re: Help with embedded brokers

Thanks, Joe.  Looks like taking out the "duplex=true", while keeping in the
random brokerName, solved the issue.

Now, am I right in assuming that random broker names will wreak havoc on
durable subscriptions and message recovery?  Do most people hand-edit the
configuration of each deployed server to give them unique names?


On Thu, May 1, 2008 at 2:00 PM, Joe Fernandez <
joe.fernandez@ttmsolutions.com> wrote:

> You can't have both brokers connect to each other with duplex connections.
>
> Joe
>
>
>
> -----Original Message-----
> From: matt hoffman [mailto:matt@mhoffman.org]
> Sent: Thursday, May 01, 2008 1:50 PM
> To: users@activemq.apache.org
> Subject: Re: Help with embedded brokers
>
> Ok, I gave that a shot.  I set the broker name to a randomly-generated
> UUID
> (which has implications for durable subscriptions and data recovery should
> a
> broker go down, I imagine, but it's for the sake of testing).   I still
> got
> errors, so I set the network connector name to the same value.  It made
> the
> error a lot messier to look at, but it's actually the same error:
>
> In this case, I started broker "be052f4d-5d66-4b61-bfb0-a298f72f8a27"
> first,
> then broker "81ca000d-ad12-4afe-9f94-733930ff7d54".   Here's the error
> that
> was displayed on the second broker's side:
>
> javax.jms.InvalidClientIDException: Broker:
> 81ca000d-ad12-4afe-9f94-733930ff7d54 - Client:
> NC_be052f4d-5d66-4b61-bfb0-a298f72f8a27_outbound already connected from
> vm://81ca000d-ad12-4afe-9f94-733930ff7d54#0
>
> The error on the first broker's side is similar, but with the broker names
> reversed:
>
> javax.jms.InvalidClientIDException: Broker:
> be052f4d-5d66-4b61-bfb0-a298f72f8a27 - Client:
> NC_81ca000d-ad12-4afe-9f94-733930ff7d54_outbound already connected from
> vm://be052f4d-5d66-4b61-bfb0-a298f72f8a27#2
>
> Surely, I must be doing something wrong here?
>
>
> On Thu, May 1, 2008 at 1:09 PM, Dejan Bosanac <dejan@nighttale.net> wrote:
>
> > Hi,
> >
> > you can try specifying different name for every broker. It should help.
> >
> > Regards
> > --
> > Dejan Bosanac
> > www.scriptinginjava.net
> > On Thu, May 1, 2008 at 5:29 PM, matt hoffman <matt@mhoffman.org> wrote:
> >
> > > I'm having a lot of trouble getting embedded brokers to work as they
> > > should.  I'm using them in my case mainly to ease configuration -- I
> > want
> > > to
> > > be able to run several instances of the same code and have them
> discover
> > > each other and communicate, without needing a single server already
> > > running.
> > >
> > >
> > > The current problem is, the first server starts up great, and works as
> > > expected.  Subsequent servers, though, throw this error:
> > >
> > > javax.jms.InvalidClientIDException: Broker: localhost - Client:
> > > NC_localhost_inboundlocalhost already connected from vm://localhost#0
> > >
> > > Which seems strange, seeing as how I'm not explicitly setting clientID
> > > anywhere.  I thought these were auto-generated?
> > >
> > > Below is the configuration I'm currently using.  I'm not referencing
> the
> > > broker in code at all; I'm interacting with it only through the Spring
> > > JmsTemplate, which in turn gets a connection from the
> > > ActiveMQConnectionFactory connecting to vm://localhost.  Based on the
> > > documentation, that seems to be the way to do it... what have I
> > > misunderstood?
> > >
> > >
> > > In my Spring config:
> > >
> > >    <bean id="broker"
> > class="org.apache.activemq.xbean.BrokerFactoryBean">
> > >        <property name="config" value="classpath:activemq.xml" />
> > >        <property name="start" value="true" />
> > >    </bean>
> > >
> > >    <bean id="workQueueDestination"
> > > class="org.apache.activemq.command.ActiveMQQueue">
> > >        <constructor-arg index="0" value="Test.WorkQueue"/>
> > >    </bean>
> > >
> > >    <bean id="eventTopicDestination"
> > > class="org.apache.activemq.command.ActiveMQTopic">
> > >        <constructor-arg index="0" value="Test.EventTopic"/>
> > >    </bean>
> > >
> > >    <bean id="jmsFactory"
> > > class="org.apache.activemq.ActiveMQConnectionFactory"
> > depends-on="broker">
> > >        <property name="brokerURL" value="vm://localhost"/>
> > >    </bean>
> > >
> > >    <bean id="workQueueJmsTemplate"
> > > class="org.springframework.jms.core.JmsTemplate">
> > >        <property name="connectionFactory">
> > >            <!-- wrapping in a pool to avoid creating a connection per
> > send
> > > -->
> > >            <bean
> > > class="org.springframework.jms.connection.CachingConnectionFactory">
> > >                <property name="targetConnectionFactory">
> > >                    <ref local="jmsFactory"/>
> > >                </property>
> > >            </bean>
> > >        </property>
> > >
> > >        <property name="defaultDestination"
> ref="workQueueDestination"/>
> > >    </bean>
> > >
> > > I previously tried including the broker config directly in the Spring
> > > file,
> > > but broke it out as a problem-solving exercise and haven't moved it
> back
> > > yet.
> > > Here's the referenced activemq.xml:
> > >
> > >
> > > <beans xmlns="http://www.springframework.org/schema/beans"
> > >       xmlns:jms="http://activemq.org/config/1.0"
> > >       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > >       xsi:schemaLocation="http://www.springframework.org/schema/beans
> > > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
> > >  http://activemq.org/config/1.0
> > > http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd"
> > >       default-lazy-init="false">
> > >
> > >    <jms:broker id="broker" persistent="false" useJmx="true">
> > >        <jms:networkConnectors>
> > >            <jms:networkConnector uri="multicast://default"
> > duplex="true"/>
> > >            <!-- by default just auto discover the other brokers -->
> > >        </jms:networkConnectors>
> > >
> > >        <jms:persistenceAdapter>
> > >            <jms:memoryPersistenceAdapter/>
> > >        </jms:persistenceAdapter>
> > >
> > >        <jms:transportConnectors>
> > >            <jms:transportConnector name="openwire"
> > uri="tcp://localhost:0"
> > > discoveryUri="multicast://default"/>
> > >        </jms:transportConnectors>
> > >
> > >    </jms:broker>
> > >
> > > </beans>
> > >
> >
>
>


Mime
View raw message