5 Replies Latest reply on Jul 2, 2013 5:09 PM by mautner.adam

    HornetQJMSConnectionFactory: Lookup Queue Instances from JGroups (in Spring)

    mautner.adam

      Hi All,

       

      I am evaluating HornetQ for building production systems.

       

      I am trying to connect to HornetQ from Spring (to push messages to Flex using SpringFlex/BlazeDS). I am experimenting with HA and fail-over features of HornetQ.

       

      I managed to setup HA HornetQ using the following config:

       

          <bean name="connectionFactory" class="org.hornetq.jms.client.HornetQJMSConnectionFactory">

              <constructor-arg value="true" />

              <constructor-arg>

                     <list>

                      <bean class="org.hornetq.api.core.TransportConfiguration">

                          <constructor-arg

                              value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory" />

                          <constructor-arg>

                              <map key-type="java.lang.String" value-type="java.lang.Object">

                                  <entry key="port" value="5445"></entry>

                              </map>

                          </constructor-arg>

                      </bean>

                      <bean class="org.hornetq.api.core.TransportConfiguration">

                          <constructor-arg

                              value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory" />

                          <constructor-arg>

                              <map key-type="java.lang.String" value-type="java.lang.Object">

                                  <entry key="port" value="5446"></entry>

                              </map>

                          </constructor-arg>

                      </bean>

                  </list>

              </constructor-arg>

              <property name="reconnectAttempts" value="-1"/>

          </bean>

       

      It is working well, but I need to hard code the host and port of the live and backup servers.

       

      Is there a way to look-up servers using JGroups? That would be much more flexible.

       

      Regards,

       

      Adam

        • 1. Re: HornetQJMSConnectionFactory: Lookup Queue Instances from JGroups (in Spring)
          jbertram

          You want use the constructor of org.hornetq.jms.client.HornetQJMSConnectionFactory that takes a org.hornetq.api.core.DiscoveryGroupConfiguration.  Read about it here.

          • 2. Re: HornetQJMSConnectionFactory: Lookup Queue Instances from JGroups (in Spring)
            mautner.adam

            Bertram,

             

            Thank you for the quick reply, I will look up the documentation.

             

            Regards,

             

            Adam

            • 3. Re: HornetQJMSConnectionFactory: Lookup Queue Instances from JGroups (in Spring)
              mautner.adam

              Bertram,

               

              I have looked up the doc. It looks good (I found the JGroupsBroadcastGroupConfiguration). There is one thing I don't understand:

               

              Doc says:

               

              ServerLocator factory = HornetQClient.createServerLocatorWithHA(new DiscoveryGroupConfiguration(groupAddress, groupPort,

                                         new UDPBroadcastGroupConfiguration(groupAddress, groupPort, null, -1))));

               

              But DiscoveryGroupConfiguration cosntructor does not take as an UDPBroadcastGroupConfiguration parameter:

               

                 public DiscoveryGroupConfiguration(final String name,

                                                    final String localBindAddress,

                                                    final String groupAddress,

                                                    final int groupPort,

                                                    final long refreshTimeout,

                                                    final long discoveryInitialWaitTimeout)

               

               

                 public DiscoveryGroupConfiguration(final String groupAddress,

                                                    final int groupPort)

               

              What am I missing?

               

              Regards,

               

              Adam

              • 4. Re: HornetQJMSConnectionFactory: Lookup Queue Instances from JGroups (in Spring)
                jbertram

                My guess is that you're using a version of HornetQ prior to 2.3.0.Final.

                 

                Also, please note that you don't have to use JGroups here.  There are two implementations of org.hornetq.api.core.BroadcastEndpointFactoryConfiguration:

                 

                • org.hornetq.api.core.JGroupsBroadcastGroupConfiguration
                • org.hornetq.api.core.UDPBroadcastGroupConfiguration
                • 5. Re: HornetQJMSConnectionFactory: Lookup Queue Instances from JGroups (in Spring)
                  mautner.adam

                  I am using HornetQ 2.3.0 standalone, but it seems, I have picked an earlier version for client from Maven. (I will double check this)

                   

                  I plan to use Amazon Web Services, where UDP multicast is not allowed, I will have to use JGroups with S3 Ping.

                   

                  Thank you,

                   

                  Ada,