您的位置:首页 > 运维架构 > Linux

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

2016-05-16 03:21 736 查看
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[/code] 
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类

我们可以在控制台看到

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: