2011-10-12 74 views
2

我试图启动嵌入式群集配置,但我无法这样做。 我使用了在hornetq示例中找到的集群示例。它的工作原理是,我不会使用嵌入式hornetq运行示例。我无法得到任何例外,但系统死亡。HornetQ嵌入式群集配置

public class HornetQEmbedded { 

    private JMSServerManager jmsServerManager; 

    public HornetQEmbedded() { 
    } 


    public void start() { 
     try { 
      System.out.println("Starting Embedded HornetQ instance..."); 

      // Retrieve configuration from xml file 
      FileConfiguration configuration = new FileConfiguration(); 
      configuration.setConfigurationUrl("hornetq-configuration.xml"); 
      configuration.start(); 

      // Change acceptor configuration 
      Map<String, Object> acceptorParams = new HashMap<String, Object>(); 
      acceptorParams.put(TransportConstants.PORT_PROP_NAME, "5446"); 
      acceptorParams.put(TransportConstants.HOST_PROP_NAME, "0.0.0.0"); 
      configuration.getAcceptorConfigurations().clear(); 
      configuration.getAcceptorConfigurations().add(new TransportConfiguration(NettyAcceptorFactory.class.getName(), acceptorParams)); 


      // Change connector configuration 
      Map<String, Object> connectorParams = new HashMap<String, Object>(); 
      connectorParams.put(TransportConstants.PORT_PROP_NAME, "5446"); 
      connectorParams.put(TransportConstants.HOST_PROP_NAME, "0.0.0.0"); 
      configuration.getConnectorConfigurations().clear(); 
      configuration.getConnectorConfigurations().put("netty", new TransportConfiguration(NettyAcceptorFactory.class.getName(), connectorParams)); 

      // Create HornetQ server 
      HornetQServer server = HornetQServers.newHornetQServer(configuration); 
      server.getSecurityManager().addUser("guest", "guest"); 
      server.getSecurityManager().setDefaultUser("guest"); 
      server.getSecurityManager().addRole("guest", "guest"); 


      // Load queues 
      jmsServerManager = new JMSServerManagerImpl(server, "hornetq-jms.xml"); 
      jmsServerManager.setContext(null);    

      // Start server 
      jmsServerManager.start(); 

      System.out.println("Waiting 5 second for embedded hornetq server to start..."); 
      Thread.sleep(5000);   

     } catch (Exception e) { 
      System.out.println("Error starting Embedded HornetQ server: " + e.toString());   
      throw new RuntimeException(e); 
     } 
    }  
} 

这是HornetQ的配置文件:

上的嵌入式用例
<configuration xmlns="urn:hornetq" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd"> 

    <paging-directory>data/paging</paging-directory> 
    <bindings-directory>data/bindings</bindings-directory> 
    <journal-directory>data/journal</journal-directory> 
    <journal-min-files>10</journal-min-files> 
    <large-messages-directory>data/large-messages</large-messages-directory> 
    <connectors> 
     <connector name="netty"> 
     <factory- class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class> 
     <param key="host" value="${hornetq.remoting.netty.host:0.0.0.0}"/> 
     <param key="port" value="${hornetq.remoting.netty.port:5444}"/> 
     </connector> 
    </connectors> 

    <acceptors> 
     <acceptor name="netty"> 
     <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class> 
     <param key="host" value="${hornetq.remoting.netty.host:0.0.0.0}"/> 
     <param key="port" value="${hornetq.remoting.netty.port:5446}"/> 
     </acceptor> 
    </acceptors> 

    <!-- Clustering configuration --> 

    <broadcast-groups> 
     <broadcast-group name="my-broadcast-group"> 
     <group-address>127.0.0.1</group-address> <!-- 231.7.7.7 --> 
     <group-port>5442</group-port> <!-- 9876 --> 
     <broadcast-period>100</broadcast-period> 
     <connector-ref>netty-connector</connector-ref> 
     </broadcast-group> 
    </broadcast-groups> 

    <discovery-groups> 
     <discovery-group name="my-discovery-group"> 
     <group-address>127.0.0.1</group-address> <!-- 231.7.7.7 --> 
     <group-port>5442</group-port> <!-- 9876 --> 
     <refresh-timeout>10000</refresh-timeout> 
     </discovery-group> 
    </discovery-groups> 

    <cluster-connections> 
     <cluster-connection name="my-cluster"> 
     <address>jms</address> 
     <connector-ref>netty-connector</connector-ref> 
     <retry-interval>500</retry-interval> 
     <use-duplicate-detection>true</use-duplicate-detection> 
     <forward-when-no-consumers>true</forward-when-no-consumers> 
     <max-hops>1</max-hops> 
     <discovery-group-ref discovery-group-name="my-discovery-group"/> 
     </cluster-connection> 
    </cluster-connections> 

    <security-settings> 
     <security-setting match="#"> 
     <permission type="createNonDurableQueue" roles="guest"/> 
     <permission type="deleteNonDurableQueue" roles="guest"/> 
     <permission type="consume" roles="guest"/> 
     <permission type="send" roles="guest"/> 
     </security-setting> 
    </security-settings> 

    <address-settings> 
     <!--default for catch all--> 
     <address-setting match="#"> 
     <dead-letter-address>jms.queue.DLQ</dead-letter-address> 
     <expiry-address>jms.queue.ExpiryQueue</expiry-address> 
     <redelivery-delay>0</redelivery-delay> 
     <page-size-bytes>10485760</page-size-bytes> 
     <max-size-bytes>209715200</max-size-bytes>  
     <message-counter-history-day-limit>10</message-counter-history-day-limit> 
     <address-full-policy>PAGE</address-full-policy> 
     </address-setting> 
    </address-settings> 

</configuration> 
+0

我需要看到一些代码..你为什么不用一些代码编辑你的问题来验证你做错了什么。 –

+0

添加了代码和hornetq配置 – tzulberti

+0

我的答案是否解决了您的问题?你没有接受它或评论它。让我知道你是否仍然需要帮助 –

回答

2

的例子是书面的思想。该服务器将居住作为应用程序的一部分。什么意思只要你的虚拟机死了,服务器就会死掉。

在嵌入式服务器上,您应该启动一个线程并使其保持运行。

现在作为一个黑客,尝试在开始时添加一个睡眠,然后在适当的生命周期中进行适当的应用。