ActiveMQ 部署及发送接收消息.docx
- 文档编号:4000033
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:11
- 大小:666.94KB
ActiveMQ 部署及发送接收消息.docx
《ActiveMQ 部署及发送接收消息.docx》由会员分享,可在线阅读,更多相关《ActiveMQ 部署及发送接收消息.docx(11页珍藏版)》请在冰豆网上搜索。
ActiveMQ部署及发送接收消息
ActiveMQ部署及发送接收消息
迷蝶
一、下载
下载地址:
http:
//activemq.apache.org/我这里使用的版本为当前最新5.8.0。
下载版本有Windows和Linux两个版本,且都分为32位和64位。
根据自己需要选择下载。
二、安装
我这里下载的为windows的32位版本(apache-activemq-5.8.0-bin.zip),下载后直接解压到需要安装的目录或在直接解压到当前目录也可,解压完安装也完成。
解压后目录如上图,里面包含了示例和文档,及所有的jar包。
三、运行
进入到bin目录(apache-activemq-5.8.0\bin),双击activemq.bat,就会运行,运行截图如下:
此时表示ActiveMQ已经在运行了,当然正常生产环境下可以设置作为服务在后台运行,并且随系统启动而启动。
四、测试
ActiveMQ自带了一套管理系统,访问http:
//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:
//localhost:
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();
try{
sndMsg.sendMessage();
}catch(Exceptionex){
System.out.println(ex.toString());
}
}
}
运行结果如下:
六、接收消息
packagecn.g2room.mq.test;
importjavax.jms.Connection;
importjavax.jms.ConnectionFactory;
importjavax.jms.Destination;
importjavax.jms.JMSException;
importjavax.jms.Message;
importjavax.jms.MessageConsumer;
importjavax.jms.Session;
importjavax.jms.TextMessage;
importorg.apache.activemq.ActiveMQConnectionFactory;
/**
*消息接收类
*
*@createTime:
Apr7,20135:
11:
11PM
*@author:
252909344@">迷蝶 *@version: 0.1 *@lastVersion: 0.1 *@updateTime: *@updateAuthor: 252909344@">迷蝶 *@changesSum: * */ publicclassReceiveMessage{ privatestaticfinalStringurl="tcp: //localhost: 61616"; privatestaticfinalStringQUEUE_NAME="G2Queue"; publicvoidreceiveMessage(){ Connectionconnection=null; try{ try{ ConnectionFactoryconnectionFactory=newActiveMQConnectionFactory( url); connection=connectionFactory.createConnection(); }catch(Exceptione){ System.out.println(e.toString()); } connection.start(); Sessionsession=connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destinationdestination=session.createQueue(QUEUE_NAME); //消息接收者,也就是消费者 MessageConsumerconsumer=session.createConsumer(destination); consumeMessagesAndClose(connection,session,consumer); }catch(Exceptione){ System.out.println(e.toString()); } } /** *接收和关闭消息,如遇到消息内容为close则,关闭连接 * *@paramconnectionJMS客户端到JMSProvider的连接 *@paramsession发送或接收消息的线程 *@paramconsumer消息接收对象 *@throwsJMSException *@auther 252909344@">迷蝶 *Apr8,201310: 31: 55AM */ protectedvoidconsumeMessagesAndClose(Connectionconnection, Sessionsession,MessageConsumerconsumer)throwsJMSException{ do{ Messagemessage=consumer.receive(1000); if("close".equals(message)){ consumer.close(); session.close(); connection.close(); } if(message! =null){ onMessage(message); } }while(true); } publicvoidonMessage(Messagemessage){ try{ if(messageinstanceofTextMessage){ TextMessagetxtMsg=(TextMessage)message; Stringmsg=txtMsg.getText(); System.out.println("Received: "+msg); } }catch(Exceptione){ e.printStackTrace(); } } publicstaticvoidmain(Stringargs[]){ ReceiveMessagerm=newReceiveMessage(); rm.receiveMessage(); } } 运行结果如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ActiveMQ 部署及发送接收消息 部署 发送 接收 消息