Hello ActiveMQ

Hello ActiveMQ!
 
 
下面是ActiveMQ5.2的一个最简单例子!
环境还是apache-activemq-5.2.0-bin.zip,需要注意的是,开发时候,要将apache-activemq-5.2.0-bin.zip解压缩后里面的activemq-all-5.2.0.jar包加入到classpath下面,这个包包含了所有jms接口api的实现。
 
 
import org.apache.activemq.ActiveMQConnection;

importorg.apache.activemq.ActiveMQConnectionFactory;

importjavax.jms.*;

/**

*消息的生产者(发送者)

*

*@authorleizhimin2009-8-1211:41:20

*/

publicclassJmsSender{

publicstaticvoidmain(String[]args)throwsJMSException{

//ConnectionFactory:连接工厂,JMS用它创建连接

ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory(

ActiveMQConnection.DEFAULT_USER,

ActiveMQConnection.DEFAULT_PASSWORD,

"tcp://192.168.14.117:61616");

//JMS客户端到JMSProvider的连接

Connectionconnection=connectionFactory.createConnection();

connection.start();

//Session:一个发送或接收消息的线程

Sessionsession=connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);

//Destination:消息的目的地;消息发送给谁.

//获取session注意参数值my-queue是Query的名字

Destinationdestination=session.createQueue("my-queue");

//MessageProducer:消息生产者

MessageProducerproducer=session.createProducer(destination);

//设置不持久化

producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

//发送一条消息

sendMsg(session,producer);

session.commit();

connection.close();

}

/**

*在指定的会话上,通过指定的消息生产者发出一条消息

*

*@paramsession消息会话

*@paramproducer消息生产者

*/

publicstaticvoidsendMsg(Sessionsession,MessageProducerproducer)throwsJMSException{

//创建一条文本消息

TextMessagemessage=session.createTextMessage("HelloActiveMQ!");

//通过消息生产者发出消息

producer.send(message);

System.out.println("");

}

}
 
import org.apache.activemq.ActiveMQConnection;

importorg.apache.activemq.ActiveMQConnectionFactory;

importjavax.jms.*;

/**

*消息的消费者(接受者)

*

*@authorleizhimin2009-8-1211:41:33

*/

publicclassJmsReceiver{

publicstaticvoidmain(String[]args)throwsJMSException{

//ConnectionFactory:连接工厂,JMS用它创建连接

ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory(

ActiveMQConnection.DEFAULT_USER,

ActiveMQConnection.DEFAULT_PASSWORD,

"tcp://192.168.14.117:61616");

//JMS客户端到JMSProvider的连接

Connectionconnection=connectionFactory.createConnection();

connection.start();

//Session:一个发送或接收消息的线程

Sessionsession=connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);

//Destination:消息的目的地;消息发送给谁.

//获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置

Destinationdestination=session.createQueue("my-queue");

//消费者,消息接收者

MessageConsumerconsumer=session.createConsumer(destination);

while(true){

TextMessagemessage=(TextMessage)consumer.receive(1000);

if(null!=message)

System.out.println("收到消息:"+message.getText());

else

break;

}

session.close();

connection.close();

}

}
 
 
启动ActiveMQ,然后开始执行:
先运行发送者,连续运行了三次,最后一次控制台输出:

Processfinishedwithexitcode0

 
后运行接受者,输出结果:
收到消息Hello ActiveMQ!

收到消息HelloActiveMQ!

收到消息HelloActiveMQ!

Processfinishedwithexitcode0

 
注意:
其中的端口61616是ActiveMQ默认的配置,在activemq.xml中,
                <!-- The transport connectors ActiveMQ will listen to -->

<transportConnectors>

<transportConnectorname="openwire"uri="tcp://localhost:61616"discoveryUri="multicast://default"/>

<transportConnectorname="ssl"uri="ssl://localhost:61617"/>

<transportConnectorname="stomp"uri="stomp://localhost:61613"/>

<transportConnectorname="xmpp"uri="xmpp://localhost:61222"/>

</transportConnectors>

,建议不要改动,都用这个端口多好,就像ftp都用21端口,也没错。
 
 
这是官方的HelloWorld例子,不过看着不顺眼:
 
----------------------
推荐一些文章:
http://jinguo.iteye.com/

相关推荐