ActiveMQ 部署及发送接收消息Word格式.docx
《ActiveMQ 部署及发送接收消息Word格式.docx》由会员分享,可在线阅读,更多相关《ActiveMQ 部署及发送接收消息Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
//localhost:
8161/admin/,会出现需要输入用户名和密码的页面如下:
默认用户名和密码都是admin,进入后则为主界面:
在这个界面上,我们可以管理队列及其他的一些功能,为了下面的继续,我们在这里创建一个Queue和一个Topic(Queue和Topic的区别见附件一)。
点击目录上的Queues进入创建Queue页面,输入Queue名称,点击Create后下面就创建了G2Queue的queue队列。
这里也可以不用这样手工创建,在发送端指定了一个Queue或Topic名字后,会自动创建一个队列,如上面的choice.queue和FirstQueue都是我测试程序时,程序里面指定的Queue名称,自动创建的。
同样的方式创建一个Topic,如下:
五、发送消息
创建一个新的项目,我这里是创建的webproject名称为ActiveMQ,引入ActiveMQ的jar包,整个工程结构如下:
此段代码从网上直接copy,只是稍作修改:
importjava.util.Random;
importjavax.jms.Connection;
importjavax.jms.ConnectionFactory;
importjavax.jms.DeliveryMode;
importjavax.jms.Destination;
importjavax.jms.JMSException;
importjavax.jms.MessageProducer;
importjavax.jms.Session;
importjavax.jms.TextMessage;
importorg.apache.activemq.ActiveMQConnectionFactory;
publicclassSendMessage{
privatestaticfinalStringurl="
tcp:
61616"
;
privatestaticfinalStringQUEUE_NAME="
G2Queue"
publicvoidsendMessage()throwsJMSException{
//JMS客户端到JMSProvider的连接
Connectionconnection=null;
try{
//连接工厂,JMS用它创建连接
//构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory(url);
connection=(Connection)connectionFactory.createConnection();
//启动连接
connection.start();
//Session:
发送或接收消息的线程
//获取session
Sessionsession=(Session)connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
//消息的目的地,消息发送到那个队列
Destinationdestination=session.createQueue(QUEUE_NAME);
//MessageProducer:
消息发送者(生产者)
//创建消息发送者
MessageProducerproducer=session.createProducer(destination);
//设置是否持久化
//DeliveryMode.NON_PERSISTENT:
不持久化
//DeliveryMode.PERSISTENT:
持久化
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Stringmsg="
"
inti=0;
do{
msg="
第"
+i+"
次发送的消息:
+newRandom();
TextMessagemessage=session.createTextMessage(msg);
Thread.sleep(1000);
//发送消息到目的地方
producer.send(message);
System.out.println("
发送消息:
+msg);
i++;
}while(i<
1000);
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
SendMessagesndMsg=newSendMessage();
sndMsg.sendMessage();
}catch(Exceptionex){
System.out.println(ex.toString());
}
运行结果如下:
六、接收消息
packagecn.g2room.mq.test;
importjavax.jms.Message;
importjavax.jms.MessageConsumer;
/**
*消息接收类
*
*@createTime:
Apr7,20135:
11:
11PM
*@author:
<
ahref="
mailto:
252909344@"
>
迷蝶<
/a>
*@version:
0.1
*@lastVersion:
*@updateTime:
*@updateAuthor:
*@changesSum:
*/
publicclassReceiveMessage{
privatestaticfinalStringurl="
privatestaticfinalStringQUEUE_NAME="
publicvoidreceiveMessage(){
try{
ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory(
url);
connection=connectionFactory.createConnection();
}catch(Exceptione){
System.out.println(e.toString());
}
Sessionsession=connection.createSession(false,
//消息接收者,也就是消费者
MessageConsumerconsumer=session.createConsumer(destination);
consumeMessagesAndClose(connection,session,consumer);
System.out.println(e.toString());
/**
*接收和关闭消息,如遇到消息内容为close则,关闭连接
*
*@paramconnectionJMS客户端到JMSProvider的连接
*@paramsession发送或接收消息的线程
*@paramconsumer消息接收对象
*@throwsJMSException
*@auther<
*Apr8,201310:
31:
55AM
protectedvoidconsumeMessagesAndClose(Connectionconnection,
Sessionsession,MessageConsumerconsumer)throwsJMSException{
Messagemessage=consumer.receive(1000);
if("
close"
.equals(message)){
consumer.close();
session.close();
connection.close();
if(message!
=null){
onMessage(message);
}while(true);
publicvoidonMessage(Messagemessage){
if(messageinstanceofTextMessage){
TextMessagetxtMsg=(TextMessage)message;
Stringmsg=txtMsg.getText();
System.out.println("
Received:
"
publicstaticvoidmain(Stringargs[]){
ReceiveMessagerm=newReceiveMessage();
rm.receiveMessage();