Java消息中间件学习入门:演示activemq的安装和使用方法
我们演示activemq的安装和使用方法。
第一步:
首先,去官网下载安装。
网址:http://activemq.apache.org/activemq-5153-release.html
直接下载Windows版本的。
第二步:
解压到自己的软件安装目录里面。
这里有32位和64位2种,可以自由选择。这里我使用的是64位的。
打开bin目录。
使用方法有2种:
第一种:
选择第一个文件activemq.bat然后右键,以管理员身份运行。
然后会弹出dos窗口,代表启动成功。
然后我们可以打开本地访问地址:http://127.0.0.1:8161/
然后登陆。登录名和密码都是admin
登陆进去以后,是这样的:
如果每次使用都这样登陆比较麻烦。所以,下面讲第二种方法。
第二种方法:
选择第二个文件InstallService.bat右键运行。
然后打开服务:计算机-管理-服务:
选择启动就可以了。访问方式跟第一种方法一样。
================
使用方法:
队列模式和主题模式。
首先队列模式:
生产者:
package com.imooc.jms.queue;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
//在本地创建一百个生产者队列消息
public class AppProducer {
//设置端口地址:这里设置的是本地的
private static final String url = "tcp://127.0.0.1:61616";
//设置队列名字
private static final String queueName = "queue-test";
public static void main(String[] args) throws JMSException {
//1.创建工厂ConnectionFactory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
//2.创建Connection
Connection connection = connectionFactory.createConnection();
//3.启动连接
connection.start();
//4.创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建一个目标
Destination destination = session.createQueue(queueName);
//6.创建一个生产者
MessageProducer producer = session.createProducer(destination);
for (int i = 0;i<100;i++){
//7.创建消息
TextMessage textMessage = session.createTextMessage("test" + i);
//8.发布消息
producer.send(textMessage);
//打印
System.out.println("发送消息" + textMessage.getText());
}
//9.关闭连接
connection.close();
}
}
消费者:
package com.imooc.jms.queue;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
//在本地创建一百个消费者队列消息
public class AppConsumer {
//设置端口地址:这里设置的是本地的
private static final String url = "tcp://127.0.0.1:61616";
//设置队列名字
private static final String queueName = "queue-test";
public static void main(String[] args) throws JMSException {
//1.创建工厂ConnectionFactory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
//2.创建Connection
Connection connection = connectionFactory.createConnection();
//3.启动连接
connection.start();
//4.创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建一个目标
Destination destination = session.createQueue(queueName);
//6.创建一个消费者
MessageConsumer consumer = session.createConsumer(destination);
//7.创建一个监听器
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("接收消息" + textMessage.getText());
}catch (JMSException e){
e.printStackTrace();
}
}
});
//如果设置了关闭连接的话。程序会出错。
// 不会接收到消息。因为这个消费者程序是一个异步的过程,要监听。
//所以说它还没接收到消息的时候就关闭了的话。就接收不到消息了
// connection.close();
}
}
主题模式:
生产者:
package com.imooc.jms.topic.queue;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
//主题模式的消息演示
//在本地创建一百个生产者队列消息
public class AppProducer {
//设置端口地址:这里设置的是本地的
private static final String url = "tcp://127.0.0.1:61616";
//设置队列名字
private static final String topicName = "topic-test";
public static void main(String[] args) throws JMSException {
//1.创建工厂ConnectionFactory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
//2.创建Connection
Connection connection = connectionFactory.createConnection();
//3.启动连接
connection.start();
//4.创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建一个目标,主题模式和队列模式的创建方式几乎一模一样。只是这一步,需要改成topic改成session.createTopic
Destination destination = session.createTopic(topicName);
//6.创建一个生产者
MessageProducer producer = session.createProducer(destination);
for (int i = 0;i<100;i++){
//7.创建消息
TextMessage textMessage = session.createTextMessage("test" + i);
//8.发布消息
producer.send(textMessage);
//打印
System.out.println("发送消息" + textMessage.getText());
}
//9.关闭连接
connection.close();
}
}
消费者:
package com.imooc.jms.topic.queue;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
//在本地创建一百个消费者队列消息
public class AppConsumer {
//设置端口地址:这里设置的是本地的
private static final String url = "tcp://127.0.0.1:61616";
//设置队列名字
private static final String topicName = "topic-test";
public static void main(String[] args) throws JMSException {
//1.创建工厂ConnectionFactory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
//2.创建Connection
Connection connection = connectionFactory.createConnection();
//3.启动连接
connection.start();
//4.创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建一个目标
Destination destination = session.createTopic(topicName);
//6.创建一个消费者
MessageConsumer consumer = session.createConsumer(destination);
//7.创建一个监听器
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("接收消息" + textMessage.getText());
}catch (JMSException e){
e.printStackTrace();
}
}
});
//如果设置了关闭连接的话。程序会出错。
// 不会接收到消息。因为这个消费者程序是一个异步的过程,要监听。
//所以说它还没接收到消息的时候就关闭了的话。就接收不到消息了
// connection.close();
}
}
未完待续...