原文: https://howtodoinjava.com/hornetq/hornetq-stand-alone-server-example-using-maven/

    HornetQ 是一个开放源代码项目,旨在构建多协议,可嵌入,非常高性能的集群异步消息传递系统。 HornetQ 支持 JMS 1.1 API,并且还定义了自己的消息传递 API,以实现最佳性能和灵活性。 HornetQ 一流的高性能日志以非持久消息传递通常看到的速度提供持久消息传递性能。 HornetQ 提供服务器复制和自动客户端故障转移功能,以消除服务器故障时丢失或重复的消息。

    在这篇文章中,我们将学习将 hornetq 服务器作为独立服务器运行的最基本配置,即在诸如 jboss 之类的任何容器之外运行。

    步骤 1)使用以下命令创建一个 maven 项目并将其转换为 Eclipse Java 项目

    1. mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=HornetQHelloWorld
    2. -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    3. cd HornetQHelloWorld
    4. mvn eclipse:eclipse

    步骤 2)更新pom.xml文件并更新项目依赖项

    pom.xml

    1. xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    3. <modelversion>4.0.0</modelversion>
    4. <groupid>com.howtodoinjava</groupid>
    5. <artifactid>HornetQHelloWorld</artifactid>
    6. <packaging>jar</packaging>
    7. <version>1.0-SNAPSHOT</version>
    8. <name>HornetQHelloWorld</name>
    9. <url>http://maven.apache.org</url>
    10. <dependencies>
    11. <dependency>
    12. <groupid>junit</groupid>
    13. <artifactid>junit</artifactid>
    14. <version>3.8.1</version>
    15. <scope>test</scope>
    16. </dependency>
    17. <dependency>
    18. <groupid>org.hornetq</groupid>
    19. <artifactid>hornetq-core</artifactid>
    20. <version>2.0.0.GA</version>
    21. <scope>compile</scope>
    22. </dependency>
    23. <dependency>
    24. <groupid>org.hornetq</groupid>
    25. <artifactid>hornetq-jms</artifactid>
    26. <version>2.0.0.GA</version>
    27. <scope>compile</scope>
    28. </dependency>
    29. <dependency>
    30. <groupid>org.hornetq</groupid>
    31. <artifactid>hornetq-logging</artifactid>
    32. <version>2.0.0.GA</version>
    33. <scope>compile</scope>
    34. </dependency>
    35. <dependency>
    36. <groupid>org.hornetq</groupid>
    37. <artifactid>hornetq-transports</artifactid>
    38. <version>2.0.0.GA</version>
    39. <scope>compile</scope>
    40. </dependency>
    41. <dependency>
    42. <groupid>org.jboss.netty</groupid>
    43. <artifactid>netty</artifactid>
    44. <version>3.1.0.GA</version>
    45. </dependency>
    46. <dependency>
    47. <groupid>org.jboss.javaee</groupid>
    48. <artifactid>jboss-jms-api</artifactid>
    49. <version>1.1.0.GA</version>
    50. <scope>compile</scope>
    51. </dependency>
    52. </dependencies>

    步骤 3)将基本的 hornetq 配置文件放在类路径中。

    hornetq-configuration.xml

    1. < ?xml version="1.0"?>
    2. xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hornetq">
    4. <connectors>
    5. <connector name="netty-connector">
    6. <factory -class>org.hornetq.integration.transports.netty.NettyConnectorFactory
    7. </factory>
    8. </connector>
    9. </connectors>
    10. <acceptors>
    11. <acceptor name="netty-acceptor">
    12. <factory -class>org.hornetq.integration.transports.netty.NettyAcceptorFactory
    13. </factory>
    14. </acceptor>
    15. </acceptors>
    16. <security -enabled>false</security>

    步骤 4)配置连接器工厂,并将配置文件放置在 classpath 中。

    hornetq-jms.xml

    1. < ?xml version="1.0"?>
    2. xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hornetq">
    4. <!--the connection factory used by the example -->
    5. <connection -factory name="ConnectionFactory">
    6. <connectors>
    7. <connector -ref connector-name="netty-connector"></connector>
    8. </connectors>
    9. <entries>
    10. <entry name="ConnectionFactory"></entry>
    11. </entries>
    12. </connection>
    13. <queue name="exampleQueue">
    14. <entry name="exampleQueue"></entry>
    15. </queue>

    步骤 5)启动服务器

    EmbeddedServerDemo.java

    1. package com.howtodoinjava;
    2. import org.hornetq.core.config.impl.FileConfiguration;
    3. import org.hornetq.core.server.HornetQServer;
    4. import org.hornetq.core.server.HornetQServers;
    5. import org.hornetq.jms.server.JMSServerManager;
    6. import org.hornetq.jms.server.impl.JMSServerManagerImpl;
    7. public class EmbeddedServerDemo
    8. {
    9. public static void main(String[] args) throws Exception {
    10. try
    11. {
    12. //Load the file configuration first of all
    13. FileConfiguration configuration = new FileConfiguration();
    14. configuration.setConfigurationUrl("hornetq-configuration.xml");
    15. configuration.start();
    16. //Create a new instance of hornetq server
    17. HornetQServer server = HornetQServers.newHornetQServer(configuration);
    18. //Wrap inside a JMS server
    19. JMSServerManager jmsServerManager = new JMSServerManagerImpl(
    20. server, "hornetq-jms.xml");
    21. // if you want to use JNDI, simple inject a context here or don't
    22. // call this method and make sure the JNDI parameters are set.
    23. jmsServerManager.setContext(null);
    24. //Start the server
    25. jmsServerManager.start();
    26. //WOO HOO
    27. System.out.println("HornetQ server started successfully !!");
    28. }
    29. catch (Throwable e)
    30. {
    31. System.out.println("Well, you seems to doing something wrong. Please check if config files are in your classes folder.");
    32. e.printStackTrace();
    33. }
    34. }
    35. }
    36. Output in console:
    37. 22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate info
    38. INFO: live server is starting..
    39. 22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate warn
    40. WARNING: AIO wasn't located on this platform, it will fall back to using pure Java NIO. If your platform is Linux, install LibAIO to enable the AIO journal
    41. 22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate info
    42. INFO: Using NIO Journal
    43. 22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate warn
    44. WARNING: Security risk! It has been detected that the cluster admin user and password have not been changed from the installation default. Please see the HornetQ user guide, cluster chapter, for instructions on how to do this.
    45. 22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate info
    46. INFO: Started Netty Acceptor version 3.1.5.GA-r1772
    47. 22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate info
    48. INFO: HornetQ Server version 2.0.0.GA (Hornet Queen, 113) started
    49. HornetQ server started successfully !!

    下载源代码

    祝您学习愉快!