8.md 6.7 KB
Newer Older
W
wizardforcel 已提交
1 2 3 4
# 使用 Maven 的 HornetQ 独立服务器示例

> 原文: [https://howtodoinjava.com/hornetq/hornetq-stand-alone-server-example-using-maven/](https://howtodoinjava.com/hornetq/hornetq-stand-alone-server-example-using-maven/)

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

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

W
wizardforcel 已提交
9
步骤 1)使用以下命令创建一个 maven 项目并将其转换为 Eclipse Java 项目
W
wizardforcel 已提交
10 11 12 13 14 15 16 17 18 19

```java
mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=HornetQHelloWorld
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

 cd HornetQHelloWorld

 mvn eclipse:eclipse
```

W
wizardforcel 已提交
20
步骤 2)更新`pom.xml`文件并更新项目依赖项
W
wizardforcel 已提交
21

W
wizardforcel 已提交
22
**`pom.xml`**
W
wizardforcel 已提交
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

```java
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelversion>4.0.0</modelversion>
  <groupid>com.howtodoinjava</groupid>
  <artifactid>HornetQHelloWorld</artifactid>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>HornetQHelloWorld</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupid>junit</groupid>
      <artifactid>junit</artifactid>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  <dependency>
     <groupid>org.hornetq</groupid>
     <artifactid>hornetq-core</artifactid>
     <version>2.0.0.GA</version>
     <scope>compile</scope>
  </dependency>
  <dependency>
     <groupid>org.hornetq</groupid>
     <artifactid>hornetq-jms</artifactid>
     <version>2.0.0.GA</version>
     <scope>compile</scope>
  </dependency>
  <dependency>
     <groupid>org.hornetq</groupid>
     <artifactid>hornetq-logging</artifactid>
     <version>2.0.0.GA</version>
     <scope>compile</scope>
  </dependency>
  <dependency>
     <groupid>org.hornetq</groupid>
     <artifactid>hornetq-transports</artifactid>
     <version>2.0.0.GA</version>
     <scope>compile</scope>
  </dependency>
  <dependency>
     <groupid>org.jboss.netty</groupid>
     <artifactid>netty</artifactid>
     <version>3.1.0.GA</version>
  </dependency>
  <dependency>
     <groupid>org.jboss.javaee</groupid>
     <artifactid>jboss-jms-api</artifactid>
     <version>1.1.0.GA</version>
     <scope>compile</scope>
  </dependency>
  </dependencies>

```

W
wizardforcel 已提交
80
步骤 3)将基本的 hornetq 配置文件放在类路径中。
W
wizardforcel 已提交
81

W
wizardforcel 已提交
82
**`hornetq-configuration.xml`**
W
wizardforcel 已提交
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196

```java
< ?xml version="1.0"?>
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hornetq">
	<connectors>
		<connector name="netty-connector">
			<factory -class>org.hornetq.integration.transports.netty.NettyConnectorFactory
			</factory>
		</connector>
	</connectors>
	<acceptors>
		<acceptor name="netty-acceptor">
			<factory -class>org.hornetq.integration.transports.netty.NettyAcceptorFactory
			</factory>
		</acceptor>
	</acceptors>
	<security -enabled>false</security>

```

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

**hornetq-jms.xml**

```java
< ?xml version="1.0"?>
xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hornetq">
	<!--the connection factory used by the example -->
	<connection -factory name="ConnectionFactory">
		<connectors>
			<connector -ref connector-name="netty-connector"></connector>
		</connectors>
		<entries>
			<entry name="ConnectionFactory"></entry>
		</entries>
	</connection>
	<queue name="exampleQueue">
		<entry name="exampleQueue"></entry>
	</queue>

```

**步骤 5)**启动服务器

**EmbeddedServerDemo.java**

```java
package com.howtodoinjava;

import org.hornetq.core.config.impl.FileConfiguration;
import org.hornetq.core.server.HornetQServer;
import org.hornetq.core.server.HornetQServers;
import org.hornetq.jms.server.JMSServerManager;
import org.hornetq.jms.server.impl.JMSServerManagerImpl;

public class EmbeddedServerDemo
{
	public static void main(String[] args) throws Exception {
		try
		{
			//Load the file configuration first of all
			FileConfiguration configuration = new FileConfiguration();
			configuration.setConfigurationUrl("hornetq-configuration.xml");
			configuration.start();

			//Create a new instance of hornetq server
			HornetQServer server = HornetQServers.newHornetQServer(configuration);

			//Wrap inside a JMS server
			JMSServerManager jmsServerManager = new JMSServerManagerImpl(
					server, "hornetq-jms.xml");

			// if you want to use JNDI, simple inject a context here or don't
			// call this method and make sure the JNDI parameters are set.
			jmsServerManager.setContext(null);

			//Start the server
			jmsServerManager.start();

			//WOO HOO
			System.out.println("HornetQ server started successfully !!");
		}
		catch (Throwable e)
		{
			System.out.println("Well, you seems to doing something wrong. Please check if config files are in your classes folder.");
			e.printStackTrace();
		}
	}
}

Output in console:

22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate info
INFO: live server is starting..
22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate warn
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
22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate info
INFO: Using NIO Journal
22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate warn
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.
22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate info
INFO: Started Netty Acceptor version 3.1.5.GA-r1772
22 Mar, 2013 2:09:33 PM org.hornetq.core.logging.impl.JULLogDelegate info
INFO: HornetQ Server version 2.0.0.GA (Hornet Queen, 113) started

HornetQ server started successfully !!

```

[**下载源代码**](https://docs.google.com/file/d/0B7yo2HclmjI4VWhJdWo2UjRhdk0/edit?usp=sharing "hornetq stand alone server tutorial")

**祝您学习愉快!**