ActiveMQ 部署及发送接收消息.docx

上传人:b****3 文档编号:4000033 上传时间:2022-11-27 格式:DOCX 页数:11 大小:666.94KB
下载 相关 举报
ActiveMQ 部署及发送接收消息.docx_第1页
第1页 / 共11页
ActiveMQ 部署及发送接收消息.docx_第2页
第2页 / 共11页
ActiveMQ 部署及发送接收消息.docx_第3页
第3页 / 共11页
ActiveMQ 部署及发送接收消息.docx_第4页
第4页 / 共11页
ActiveMQ 部署及发送接收消息.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

ActiveMQ 部署及发送接收消息.docx

《ActiveMQ 部署及发送接收消息.docx》由会员分享,可在线阅读,更多相关《ActiveMQ 部署及发送接收消息.docx(11页珍藏版)》请在冰豆网上搜索。

ActiveMQ 部署及发送接收消息.docx

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();

}

}

运行结果如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1