步骤1)使用以下命令创建一个maven项目并将其转换为eclipse java项目
mvn archetype:generate -DgroupId=com.onitroad -DartifactId=HornetQHelloWorld -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false cd HornetQHelloWorld mvn eclipse:eclipse
步骤2)更新pom.xml文件并更新项目依赖
pom.xml
<project 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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.onitroad</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>
</project>
步骤 3) 将基本的 hornetq 配置文件放在 classpath 中。
hornetq-configuration.xml
<?xml version="1.0"?> <configuration 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-class> </connector> </connectors> <acceptors> <acceptor name="netty-acceptor"> <factory-class>org.hornetq.integration.transports.netty.NettyAcceptorFactory </factory-class> </acceptor> </acceptors> <security-enabled>false</security-enabled> </configuration>
步骤 4) 配置连接器工厂并将配置文件放在类路径中。
hornetq-jms.xml
<?xml version="1.0"?> <configuration 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" /> </connectors> <entries> <entry name="ConnectionFactory" /> </entries> </connection-factory> <queue name="exampleQueue"> <entry name="exampleQueue" /> </queue> </configuration>
步骤 5) 启动服务器并测试消息传递代码
HornetQMessageQueueDemo.java
package com.onitroad;
import java.util.HashMap;
import java.util.Map;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.hornetq.api.core.TransportConfiguration;
import org.hornetq.api.jms.HornetQJMSClient;
import org.hornetq.core.config.impl.FileConfiguration;
import org.hornetq.core.server.HornetQServer;
import org.hornetq.core.server.HornetQServers;
import org.hornetq.integration.transports.netty.NettyConnectorFactory;
import org.hornetq.integration.transports.netty.TransportConstants;
import org.hornetq.jms.server.JMSServerManager;
import org.hornetq.jms.server.impl.JMSServerManagerImpl;
public class HornetQMessageQueueDemo {
static void startServer()
{
try
{
FileConfiguration configuration = new FileConfiguration();
configuration.setConfigurationUrl("hornetq-configuration.xml");
configuration.start();
HornetQServer server = HornetQServers.newHornetQServer(configuration);
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);
jmsServerManager.start();
System.out.println("Server started !!");
}
catch (Throwable e)
{
System.out.println("Damn it !!");
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception
{
//Start the server
startServer();
Connection connection = null;
try
{
// Step 1. Directly instantiate the JMS Queue object.
Queue queue = HornetQJMSClient.createQueue("exampleQueue");
// Step 2. Instantiate the TransportConfiguration object which
// contains the knowledge of what transport to use,
// The server port etc.
Map<String, Object> connectionParams = new HashMap<String, Object>();
connectionParams.put(TransportConstants.PORT_PROP_NAME, 5445);
TransportConfiguration transportConfiguration = new TransportConfiguration(
NettyConnectorFactory.class.getName(), connectionParams);
// Step 3 Directly instantiate the JMS ConnectionFactory object
// using that TransportConfiguration
ConnectionFactory cf = HornetQJMSClient.createConnectionFactory(transportConfiguration);
// Step 4.Create a JMS Connection
connection = cf.createConnection();
// Step 5. Create a JMS Session
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
// Step 6. Create a JMS Message Producer
MessageProducer producer = session.createProducer(queue);
// Step 7. Create a Text Message
TextMessage message = session.createTextMessage("How to do in java dot com");
System.out.println("Sent message: " + message.getText());
// Step 8. Send the Message
producer.send(message);
// Step 9. Create a JMS Message Consumer
MessageConsumer messageConsumer = session.createConsumer(queue);
// Step 10. Start the Connection
connection.start();
// Step 11. Receive the message
TextMessage messageReceived = (TextMessage) messageConsumer.receive(5000);
System.out.println("Received message: " + messageReceived.getText());
}
finally
{
if (connection != null) {
connection.close();
}
}
}
}
输出:
22 Mar, 2013 2:23:36 PM org.hornetq.core.logging.impl.JULLogDelegate info INFO: live server is starting.. 22 Mar, 2013 2:23:36 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:23:36 PM org.hornetq.core.logging.impl.JULLogDelegate info INFO: Using NIO Journal 22 Mar, 2013 2:23:36 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:23:36 PM org.hornetq.core.logging.impl.JULLogDelegate info INFO: Started Netty Acceptor version 3.1.5.GA-r1772 Server started !! 22 Mar, 2013 2:23:36 PM org.hornetq.core.logging.impl.JULLogDelegate info INFO: HornetQ Server version 2.0.0.GA (Hornet Queen, 113) started Sent message: How to do in java dot com Received message: How to do in java dot com
日期:2020-09-17 00:16:31 来源:oir作者:oir
