欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ActiveMQ 部署及发送接收消息

发布时间:2025/3/20 编程问答 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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。



点击目录上的Queues进入创建Queue页面,输入Queue名称,点击Create后下面就创建了G2Queue的queue队列。




这里也可以不用这样手工创建,在发送端指定了一个Queue或Topic名字后,会自动创建一个队列,如上面的choice.queue和FirstQueue都是我测试程序时,程序里面指定的Queue名称,自动创建的。

同样的方式创建一个Topic,如下:



五、           发送消息

创建一个新的项目,我这里是创建的webproject名称为ActiveMQ,引入ActiveMQ的jar包,整个工程结构如下:


 

此段代码从网上直接copy,只是稍作修改:

[java] view plaincopy

  • import java.util.Random;  

  •    

  • import javax.jms.Connection;  

  • import javax.jms.ConnectionFactory;  

  • import javax.jms.DeliveryMode;  

  • import javax.jms.Destination;  

  • import javax.jms.JMSException;  

  • import javax.jms.MessageProducer;  

  • import javax.jms.Session;  

  • import javax.jms.TextMessage;  

  •    

  • import org.apache.activemq.ActiveMQConnectionFactory;  

  •    

  • public class SendMessage {  

  •     private static final String url = "tcp://localhost:61616";  

  •     private static final String QUEUE_NAME = "G2Queue";  

  •    

  •     public void sendMessage() throwsJMSException {  

  •        // JMS 客户端到JMSProvider 的连接  

  •        Connection connection = null;  

  •        try {  

  •            // 连接工厂,JMS 用它创建连接  

  •            // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar  

  •            ConnectionFactory connectionFactory = newActiveMQConnectionFactory(url);  

  •            connection = (Connection)connectionFactory.createConnection();  

  •            // 启动连接  

  •            connection.start();  

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

  •            // 获取session  

  •            Session session = (Session) connection.createSession(false,  

  •                   Session.AUTO_ACKNOWLEDGE);  

  •            // 消息的目的地,消息发送到那个队列  

  •            Destination destination = session.createQueue(QUEUE_NAME);  

  •            //MessageProducer:消息发送者(生产者)  

  •            // 创建消息发送者  

  •            MessageProducer producer =session.createProducer(destination);  

  •            // 设置是否持久化  

  •            //DeliveryMode.NON_PERSISTENT:不持久化  

  •            //DeliveryMode.PERSISTENT:持久化  

  •            producer.setDeliveryMode(DeliveryMode.PERSISTENT);  

  •             

  •            String msg = "";  

  •            int i = 0;  

  •         do {  

  •             msg = "第"+i + "次发送的消息:"+new Random();  

  •                 TextMessagemessage = session.createTextMessage(msg);  

  •                 Thread.sleep(1000);  

  •                 // 发送消息到目的地方  

  •                producer.send(message);  

  •                 System.out.println("发送消息:" +msg);  

  •                 i++;  

  •         } while (i<1000);  

  •        } catch (Exception e) {  

  •            e.printStackTrace();  

  •        }  

  •     }  

  •    

  •     public static void main(String[] args) {  

  •        SendMessage sndMsg = newSendMessage();  

  •        try {  

  •            sndMsg.sendMessage();  

  •        } catch (Exception ex) {  

  •            System.out.println(ex.toString());  

  •        }  

  •     }  

  • }  




  • 运行结果如下:

    六、           接收消息


    [java] view plaincopy

  • package cn.g2room.mq.test;  

  •    

  • import javax.jms.Connection;  

  • import javax.jms.ConnectionFactory;  

  • import javax.jms.Destination;  

  • import javax.jms.JMSException;  

  • import javax.jms.Message;  

  • import javax.jms.MessageConsumer;  

  • import javax.jms.Session;  

  • import javax.jms.TextMessage;  

  •    

  • import org.apache.activemq.ActiveMQConnectionFactory;  

  •    

  • /** 

  •  * 消息接收类 

  •  * 

  •  * @createTime:Apr 7, 2013 5:11:11 PM 

  •  * @author:<a href="mailto:252909344@qq.com">迷蝶</a> 

  •  * @version:0.1 

  •  *@lastVersion: 0.1 

  •  * @updateTime: 

  •  *@updateAuthor: <a href="mailto:252909344@qq.com">迷蝶</a> 

  •  * @changesSum: 

  •  * 

  •  */  

  • public class ReceiveMessage {  

  •          privatestatic final String url = "tcp://localhost:61616";  

  •          privatestatic final String QUEUE_NAME = "G2Queue";  

  •    

  •          publicvoid receiveMessage() {  

  •                    Connectionconnection = null;  

  •                    try{  

  •                             try{  

  •                                      ConnectionFactoryconnectionFactory = new ActiveMQConnectionFactory(  

  •                                                         url);  

  •                                      connection= connectionFactory.createConnection();  

  •                             }catch (Exception e) {  

  •                                      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 (Exception e) {  

  •                             System.out.println(e.toString());  

  •                    }  

  •          }  

  •          /** 

  •           * 接收和关闭消息,如遇到消息内容为close则,关闭连接 

  •           * 

  •           * @param connection   JMS 客户端到JMSProvider 的连接 

  •           * @param session                   发送或接收消息的线程 

  •           * @param consumer              消息接收对象 

  •           * @throws JMSException 

  •           * @auther <ahref="mailto:252909344@qq.com">迷蝶</a> 

  •           * Apr 8, 2013 10:31:55 AM 

  •           */  

  •          protectedvoid consumeMessagesAndClose(Connection connection,  

  •                             Sessionsession, MessageConsumer consumer) throws JMSException {  

  •                    do{  

  •                             Messagemessage = consumer.receive(1000);  

  •                             if("close".equals(message)){  

  •                                      consumer.close();  

  •                                      session.close();  

  •                                      connection.close();  

  •                             }  

  •                             if(message != null) {  

  •                                      onMessage(message);  

  •                             }  

  •                    }while (true);  

  •                     

  •          }  

  •    

  •          publicvoid onMessage(Message message) {  

  •                    try{  

  •                             if(message instanceof TextMessage) {  

  •                                      TextMessagetxtMsg = (TextMessage) message;  

  •                                      Stringmsg = txtMsg.getText();  

  •                                      System.out.println("Received:" + msg);  

  •                             }  

  •                    }catch (Exception e) {  

  •                             e.printStackTrace();  

  •                    }  

  •    

  •          }  

  •    

  •          publicstatic void main(String args[]) {  

  •                    ReceiveMessagerm = new ReceiveMessage();  

  •                    rm.receiveMessage();  

  •          }  

  • }  




  • 运行结果如下:


     


    转载于:https://blog.51cto.com/liyunhua/1696310

    总结

    以上是生活随笔为你收集整理的ActiveMQ 部署及发送接收消息的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。