# Spring3 Hornetq 独立集成示例
> 原文: [https://howtodoinjava.com/hornetq/spring-3-hornetq-standalone-integration-example/](https://howtodoinjava.com/hornetq/spring-3-hornetq-standalone-integration-example/)
[**HornetQ**](http://hornetq.jboss.org "hornetq") 是一个开放源代码项目,旨在构建多协议,可嵌入,非常高性能的集群异步消息传递系统。 到目前为止,我们已经了解了[**配置 hornetq 独立服务器**](//howtodoinjava.com/hornetq/hornetq-stand-alone-server-example-using-maven/ "Hornetq stand alone server example using maven")和[**设置基本消息传递功能**](//howtodoinjava.com/hornetq/basic-jms-messaging-example-using-hornetq-stand-alone-server/ "Basic jms messaging example using hornetq stand alone server")的示例。 HornetQ 具有很大的灵活性,可以通过一些现有的应用框架进行配置。 在此序列中,我将展示 HornetQ 在 [**Spring3**](//howtodoinjava.com "Spring3 tutorials") 中的用法。
让我们逐步进行所有设置。
步骤 1)[创建一个 Maven 项目](//howtodoinjava.com/maven/create-a-simple-java-project-using-maven/ "Create a simple java project using maven")并将其转换为 Eclipse Java 项目。
步骤 2)使用 Spring3 和 hornetq 依赖项更新 maven 仓库。
```java
4.0.0
com.howtodoinjava.app
Spring3HornetQStandaloneIntegration
jar
1.0-SNAPSHOT
Spring3HornetQStandaloneIntegration
http://maven.apache.org
3.0.5.RELEASE
commons-logging
commons-logging
1.1.1
log4j
log4j
1.2.14
junit
junit
4.7
test
org.hornetq
hornetq-core
2.0.0.GA
compile
org.hornetq
hornetq-jms
2.0.0.GA
compile
org.hornetq
hornetq-logging
2.0.0.GA
compile
org.hornetq
hornetq-transports
2.0.0.GA
compile
org.jboss.netty
netty
3.1.0.GA
org.jboss.javaee
jboss-jms-api
1.1.0.GA
compile
org.jboss
jboss-common-core
2.2.10.GA
org.jboss.logging
jboss-logging-spi
2.0.5.GA
org.springframework
spring-core
${org.springframework.version}
org.springframework
spring-expression
${org.springframework.version}
org.springframework
spring-beans
${org.springframework.version}
org.springframework
spring-aop
${org.springframework.version}
org.springframework
spring-context
${org.springframework.version}
org.springframework
spring-context-support
${org.springframework.version}
org.springframework
spring-tx
${org.springframework.version}
org.springframework
spring-jdbc
${org.springframework.version}
org.springframework
spring-orm
${org.springframework.version}
org.springframework
spring-oxm
${org.springframework.version}
org.springframework
spring-web
${org.springframework.version}
org.springframework
spring-webmvc
${org.springframework.version}
org.springframework
spring-webmvc-portlet
${org.springframework.version}
org.springframework
spring-test
${org.springframework.version}
test
```
步骤 3)在`lib`文件夹中添加两个其他 jar。 如果时间允许,请找到它们的 Maven 依赖项并添加`pom.xml`。
* `jnpserver-5.0.3.GA.jar`
* `org.springframework.jms-3.0.5.RELEASE.jar`
步骤 4)从 jboss 发行版复制以下文件,并将其放在类路径中。 或者,只需复制下面给出的文件。
**`hornetq-configuration.xml`**
```java
org.hornetq.integration.transports.netty.NettyConnectorFactory
org.hornetq.integration.transports.netty.NettyAcceptorFactory
jms.queue.DLQ
jms.queue.ExpiryQueue
0
-1
10485760
10
${hornetq.data.dir}/paging
${hornetq.data.dir}/bindings
${hornetq.data.dir}/journal
${hornetq.data.dir}/large-messages
```
**`hornetq-jms.xml`**
```java
```
**`hornetq-users.xml`**
```java
```
步骤 5)在类路径中复制`jndi.properties`。
```java
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
```
步骤 6)配置记录器,以更好地捕获信息。
```java
# Create a STDOUT appender
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%05p | %m%n
# Default everything to WARN
log4j.rootCategory=WARN, STDOUT
# Enable this application log level to the lowest.
log4j.category.com.howtodoinjava=TRACE
log4j.category.org.jnp.server=INFO
log4j.category.org.hornetq=INFO
log4j.category.org.springframework=INFO
```
步骤 7)到目前为止,已经配置了 hornetq 服务器和 jndi。 现在,将它们插入`spring.xml`和`spring.properties`中的 spring 框架。
**`spring.xml`**
```java
```
**`spring.properties`**
```java
hornetq.data.dir=${hornetq.spring.examples.home}/hornetq-data
org.hornetq.logger-delegate-factory-class-name=org.hornetq.integration.logging.Log4jLogDelegateFactory
```
步骤 8)首先加载 Spring 容器。 它还将验证我们所有的配置文件。
**`SpringContainerLoader.java`**
```java
package com.howtodoinjava.hornetq.demo;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class SpringContainerLoader
{
public static FileSystemXmlApplicationContext loadEnvironment()
{
final FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("classpath:config/server/spring.xml");
context.registerShutdownHook();
context.start();
return context;
}
}
```
步骤 8)现在,我将编写消息生产者和消息使用者客户端。
**`MessageProducerClient.java`**
```java
package com.howtodoinjava.hornetq.demo;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.ProducerCallback;
public class MessageProducerClient implements Runnable {
private static Log log = LogFactory.getLog(MessageProducerClient.class);
private static int counter = 1;
private JmsTemplate jmsTemplate;
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
@Override
public void run() {
jmsTemplate.execute("ExampleQueue", new ProducerCallback