本文介绍怎么使用activemq编写一个简单的Java实例。
首先想使用activeMQ的话,毫无疑问得先安装它,我这里是在linux上面安装的:
linux下载地址:https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz
下载到linux下面后,进入压缩包目录 :tar -zxvf + 压缩包名称 解压即可。
解压后cd进入bin目录,输入:bash activamq start 启动 ,如果显示:ActiveMQ is running (pid '2459')即为启动成功,当然
必须得有java环境才可以。
我们可以在浏览器输入ip:8161/admin进入到activemq首页,默认的用户名跟密码都为admin,当然也可以通过编辑conf/jetty.xml文件修改。
下面讲解一下Java实例的编写。
我们可以创建一个简单的java项目,这时我们在linux上解压的activemq下面会有一个activemq-all-5.14.3.jar的包,我们把他复制到项目的lib目录下build path,这时就有了activemq的一些jar包了。
然后创建生产者class,编写实例时,首先我们得创建一个连接工厂,参数的话分别为:用户名,密码,跟url("tcp://IP:61616"),具体可见下面代码,有详细注释:
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin", "admin",
"tcp://192.168.197.128:61616");
// 创建连接对象
Connection connection = connectionFactory.createConnection();
// 3、开启连接
connection.start();
// 创建会话对象
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 使用会话对象创建queue点对点模式对象
Queue queue = session.createQueue("test-queue");
// 使用会话对象创建生产者对象
MessageProducer producer = session.createProducer(queue);
// 使用会话对象创建一个消息对象
TextMessage textMessage = session.createTextMessage("hello-activemq");
// 发送消息
producer.send(textMessage);
// 关闭资源
producer.close();
session.close();
connection.close();
下面的话创建消费者class。详见下面代码注释:
//1、创建工厂连接对象,需要制定ip和端口号
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin", "admin",
"tcp://192.168.197.128:61616");
//2、使用连接工厂创建一个连接对象
Connection connection = connectionFactory.createConnection();
//3、开启连接
connection.start();
//4、使用连接对象创建会话(session)对象
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5、使用会话对象创建目标对象,包含queue和topic(一对一和一对多)
Queue queue = session.createQueue("test-queue");
//6、使用会话对象创建生产者对象
MessageConsumer consumer = session.createConsumer(queue);
//7、向consumer对象中设置一个messageListener对象,用来接收消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
// TODO Auto-generated method stub
if(message instanceof TextMessage){
TextMessage textMessage = (TextMessage)message;
try {
System.out.println(textMessage.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
//8、程序等待接收用户消息
System.in.read();
//9、关闭资源
consumer.close();
session.close();
connection.close();
首先启动生成者发送消息,启动完成没报错的话,我们可以登录activemq的index查看到我们发送的消息,但是这是消息并没有别接收,我们可以启动消费者,这时可看到我们刚才发送的消息。
致此,一个简单activemq的java实例就出来。当然这是点对点的模式,还有队列模式也一样简单,只需要在使用会话对象创建模式对象时更改即可,很简单的哦。
还有点对点跟队列的区别的话,我的理解是点对点的模式就是生产者发送一个消息,只有一个消费者可以使用,使用后消息就不会被别的消费者收到。而队列模式的话就是生产者发送一条消息可以被多个消费者同时使用。
刚写博客,写的不好的地方大家多多宽待。