activemq使用系列: linux环境下ActiveMQ 的安装与使用(单节点)

来源:互联网 发布:网络协议都有哪些 编辑:程序博客网 时间:2024/06/08 05:27

1、 安装 JDK 并配置环境变量(略)

2   下载 Linux 版的 ActiveMQ

<span style="white-space:pre"></span>wget http://apache.fayea.com/activemq/5.11.1/apache-activemq-5.11.1-bin.tar.gz

3、 解压

4、 防火墙中打开activemq的使用端口

一个是连接broker的端口

我们可以在amq的安装目录包的conf目录下的activemq.xml中看到

61616就是我们的broker连接端口

一个是amq控制台的端口

我们可以在conf/jetty.xml中看到

打开linux防火墙文件,增加如下配置,允许这两个端口被访问

<span style="white-space:pre"></span>vi /etc/sysconfig/iptables


重新启动防火墙服务

<span style="white-space:pre"></span>service iptables restart

进入amq的安装目录下/bin/ 启动amq运行脚本

<span style="white-space:pre"></span>./activemq start

打开浏览器输入地址

<span style="white-space:pre"></span>http://192.168.1.10:8161/

这里的IP地址可以通过linux命令 ipconfig查看,我这里是192.168.1.10



接下们写个小程序使用一下

创建一个maven工程用


创建一个消息发送类

/** *  */package com.pcx.amqproducer;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.MapMessage;import javax.jms.MessageProducer;import javax.jms.Session;import org.apache.activemq.ActiveMQConnectionFactory;import org.apache.activemq.command.ActiveMQQueue;/** *  * @author scarletbullet * @version $Id: MyProducer.java */public class MyProducer {        public static void main(String[] args) {            //连接broker,就是我们刚刚防火墙里面打开的那个端口          ConnectionFactory cf=  new ActiveMQConnectionFactory("tcp://192.168.1.10:61616");            //创建了一个队列名称为 "user.queue"          Destination  destination=new ActiveMQQueue("user.queuer");          Connection conn=null;                   try {              //从连接工程里面获取一个新连接            conn=cf.createConnection();            //自动确认消息的发送            Session session=conn.createSession(false, Session.AUTO_ACKNOWLEDGE);            //创建一个消息生产者,并且配置发送消息的地址            MessageProducer producer=session.createProducer(destination);            //创建一个map类型的消息            MapMessage message=session.createMapMessage();            message.setString("userId", "123456");            message.setString("userName", "李四");            message.setInt("age", 18);            //发送            producer.send(message);            //关闭            session.close();        } catch (Exception e) {            throw new RuntimeException(e);        }finally{            if(conn!=null){                try {                    conn.close();                } catch (Exception e2) {                    // TODO: handle exception                }            }        }                }}
运行一下,我们刷新一下amq的控制台可以看见

我们可以看到消息发送成功

接下来写一下消息消费者

一样,我们创建一个maven工程

创建一个消息消费者的类

package com.pcx.amqconsumer;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.MapMessage;import javax.jms.MessageConsumer;import javax.jms.Session;import org.apache.activemq.ActiveMQConnectionFactory;import org.apache.activemq.command.ActiveMQQueue;/** *  * @author scarletbullet * @version $Id: MyConsumer.java,  */public class MyConsumer {    public static void main(String[] args) {        //连接broker,就是我们刚刚防火墙里面打开的那个端口        ConnectionFactory cf=  new ActiveMQConnectionFactory("tcp://192.168.1.10:61616");        //创建了一个队列名称为 "user.queue"        Destination  destination=new ActiveMQQueue("user.queuer");        Connection conn=null;                      try {            //从连接工程里面获取一个新连接          conn=cf.createConnection();        //自动确认消息的接受          Session session=conn.createSession(false, Session.AUTO_ACKNOWLEDGE);          //创建一个消费者          MessageConsumer consumer=session.createConsumer(destination);          conn.start();          //同步阻塞等待接受消息          MapMessage message=(MapMessage)consumer.receive();                           System.out.println(message.getInt("age") +" "+ message.getString("userId")+" "+message.getString("userName"));          session.close();      } catch (Exception e) {          throw new RuntimeException(e);      }finally{          if(conn!=null){              try {                  conn.close();              } catch (Exception e2) {                  // TODO: handle exception              }          }      }            }}
run一下这个java类

我们可以在控制台看到

0 0