博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下安装ActiveMQ-5.15.8
阅读量:7106 次
发布时间:2019-06-28

本文共 5115 字,大约阅读时间需要 17 分钟。

1.ActiveMQ官网链接:

image
①选择Download
image
②选择ActiveMQ 5.15.8 Release
image
需要注意的是:ActiveMQ 5.15.8所需Jdk版本最低为1.8,修改具体请看Change Log
image
③复制下载链接

cd /usr/localwget http://www.apache.org/dyn/closer.cgi?filename=/activemq/5.15.8/apache-activemq-5.15.8-bin.tar.gz&action=download

image

image
会发现,文件无法下载,我尝试着关闭防火墙,重启network,无效(因为响应是200)
image
因为URL中有一个"&"需要转义"&"

cd /usr/localwget http://www.apache.org/dyn/closer.cgi?filename=\/activemq\/5.15.8\/apache-activemq-5.15.8-bin.tar.gz\&action=download

image

image
wget的命名规则是取最后一个"/"后面的内容,文件重命名

mv ./closer.cgi\?filename\=%2Factivemq%2F5.15.8%2Fapache-activemq-5.15.8-bin.tar.gz\&action\=download ./apache-activemq-5.15.8-bin.tar.gz

image

2.解压apache-activemq-5.15.8-bin.tar.gz

tar -xzvf ./apache-activemq-5.15.8-bin.tar.gz

image

3.启动ActiveMQ
①ActiveMQ内置了jetty Web容器,jetty的相关配置在jetty.xml中

vim /usr/local/apache-activemq-5.15.8/conf/jetty.xml

image

②ActiveMQ的配置文件

vim /usr/local/apache-activemq-5.15.8/conf/activemq.xml

image

③ActiveMQ管控台的用户名密码配置

vim /usr/local/apache-activemq-5.15.8/conf/jetty-realm.properties

image

④进入bin目录,启动ActiveMQ

/usr/local/apache-activemq-5.15.8/bin/activemq start

image

查看端口61616是否开启

netstat -an|grep 61616netstat -an|grep 8161

image

image
⑤登录ActiveMQ管控台:
image
image
4.编写程序
①消息发送方(生产者):

package activemq;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;public class ActiveMQ_Sender {    public static void main(String[] args) throws JMSException {        //1.建立ConnectionFactory工厂对象,需要填入用户名、密码以及要连接的地址,均使用默认即可,        // 默认端口为"tcp://localhost:61616"        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(                ActiveMQConnectionFactory.DEFAULT_USER,                ActiveMQConnectionFactory.DEFAULT_PASSWORD,                "tcp://192.168.0.115:61616"        );        //2.通过ConnectionFactory工厂对象我们创建一个Connection连接,并且调用Connection的start方法开启连接,        // connection默认是关闭的        Connection connection = connectionFactory.createConnection();        connection.start();        //3.通过Connection工厂对象创建Session会话(上下文环境对象),用于接收消息,        // 参数1为是否启用事务,参数2为签收模式,一般我们设置自动签收        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);        //4.通过Session创建Destination对象,指的是一个客户端用来指定生产消息目标和消费信息来源的对象,        // 在P2P模式中,Destination被称作Queue即队列;在Pub/Sub模式,Destination被称作Topic即主题。        // 在程序中可以使用多个Queue和Topic        Destination destination = session.createQueue("Queue_01");        //5.我们需要通过Session对象创建消息的发送和接收对象(生产者和消费者),MessageProducer/MessageConsumer        MessageProducer messageProducer = session.createProducer(destination);        //6.我们可以使用MessageProducer的setDeliveryMode()方法为其设置持久化特性和非持久化特性(DeliveryMode)        messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);        //7.使用JMS规范的TextMessage形式创建数据(通过Session对象),并用MessageProducer的send方法发送数据。        // 同理客户端使用receive方法进行接收数据        for (int i = 1; i <= 10; i++) {            TextMessage textMessage = session.createTextMessage();            textMessage.setText("Sender: HelloWorld! Message_ID = "+i);            messageProducer.send(textMessage);        }        //8.关闭Connection连接        if (connection != null){            connection.close();        }    }}

运行成功后,刷新ActiveMQ管控台,会看到刚刚创建的消息数量和状态

image
点击消息名称查看
image
②消息接收方(消费者):

package activemq;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;public class ActiveMQ_Receiver {    public static void main(String[] args) throws JMSException {        //1.建立ConnectionFactory工厂对象,需要填入用户名、密码以及要连接的地址,均使用默认即可,        // 默认端口为"tcp://localhost:61616"        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(                ActiveMQConnectionFactory.DEFAULT_USER,                ActiveMQConnectionFactory.DEFAULT_PASSWORD,                "tcp://192.168.0.115:61616"        );        //2.通过ConnectionFactory工厂对象我们创建一个Connection连接,并且调用Connection的start方法开启连接,        // connection默认是关闭的        Connection connection = connectionFactory.createConnection();        connection.start();        //3.通过Connection工厂对象创建Session会话(上下文环境对象),用于接收消息,        // 参数1为是否启用事务,参数2为签收模式,一般我们设置自动签收        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);        //4.通过Session创建Destination对象,指的是一个客户端用来指定生产消息目标和消费信息来源的对象,        // 在P2P模式中,Destination被称作Queue即队列;在Pub/Sub模式,Destination被称作Topic即主题。        // 在程序中可以使用多个Queue和Topic        Destination destination = session.createQueue("Queue_01");        //5.我们需要通过Session对象创建消息的发送和接收对象(生产者和消费者),MessageProducer/MessageConsumer        MessageConsumer messageConsumer = session.createConsumer(destination);        //6.使用JMS规范的TextMessage形式创建数据(通过Session对象),并用MessageProducer的send方法发送数据。        // 同理客户端使用receive方法进行接收数据        while (true){            TextMessage textMessage = (TextMessage) messageConsumer.receive();            if (textMessage == null) break;            System.out.println("Receive_Message: "+textMessage.getText());        }        //8.关闭Connection连接        if (connection != null){            connection.close();        }    }}

image

image
image
5.ActiveMQ安全机制
只有符合认证的用户才能进行发送和接收消息

在/usr/local/apache-activemq-5.15.8/conf/activemq.xml的大约123行,之前,之后加上上面的插件配置,重启ActiveMQ

按之前的程序发送消息就会报错:
image
需要对程序进行修改(生产者和消费者都要改)
image
image
image
待续。。。

转载地址:http://akjhl.baihongyu.com/

你可能感兴趣的文章
cocos2d的position和anchorPoint
查看>>
【数通学习】【三层交换】IP地址
查看>>
ECSHOP农行支付接口开发(含手机端)
查看>>
ios专题 - 常用设计模式
查看>>
流式标签生成控件
查看>>
Struts2拦截器总结<转>
查看>>
黄聪:php中时间轴开发,即显示为“刚刚”、“5分钟前”、“昨天10:23”等(转)...
查看>>
黄聪:C#操作xml SelectNodes,SelectSingleNode通过 xPath 定位class包含Contains的DIV
查看>>
Linq的条件查询
查看>>
0515Python基础-带参数的装饰器-多个装饰器
查看>>
QQ机器人Java版
查看>>
C#里判断字符串是否为纯数字
查看>>
C语言求字符串长度
查看>>
Maven的setting.xml配置
查看>>
一个不应该犯的错octave
查看>>
linux经典书籍
查看>>
ubuntu 13.10 monodevelop3 安装
查看>>
【python】-- Redis简介、命令、示例
查看>>
遇到的有关iframe的滚动条问题
查看>>
vue的单向数据流
查看>>