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(); } }
未完待续...