简单ActiveMQ入门程序

从一个简单的生产者消费者的实际需求出发,学习activemq。

第一步,下载

从官网下载所需的activemq(官网链接:http://activemq.apache.org/download-archives.html),我本地下载的是5.15.4的版本,目前是在win环境上玩耍,so下载的是zip包,解压之后

简单ActiveMQ入门程序_第1张图片
activemq解压之后的文件目录

【注意】
目前只需要关注这么几点
第一:bin文件中有mq的启动文件
简单ActiveMQ入门程序_第2张图片
win64启动bat

第二:mq的运行容器默认的是用jetty
简单ActiveMQ入门程序_第3张图片
cof配置文件

默认的启动端口是8161,默认的管理平台用户名密码是admin。activemq.xml是主要配置,后续会讲解。

第二步,编码

新建一个java工程,工程中新建lib文件夹并将外部的jar引入,具体的要引入的jar包就是activemq解压之后的文件目录中的那个jar包。

一、 创建生产者类Sender

package com.mq.test;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Sender {
   public static void main(String[] args) {
       ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
               ActiveMQConnectionFactory.DEFAULT_USER,
               ActiveMQConnectionFactory.DEFAULT_PASSWORD,
               "tcp://localhost:61616");
       // 第二步创建一个connection连接,并且调用connection的start方法开启连接。
       Connection connection = null;
       try {
           connection = connectionFactory.createConnection();
           connection.start();
           // 第三步:
           Session session = connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);
           // 第四步:
           Destination destination = session.createQueue("Q1");
           // 第五步
           MessageProducer messageProducer = session.createProducer(destination);
           // 第六步
           messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
           // 第七步
           for (int i = 0; i <= 5; i++) {
               TextMessage message = session.createTextMessage();
               message.setText("我是生产者生产的消息内容!...Id:" + i);
               messageProducer.send(message);
           }
       } catch (JMSException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } finally {
           if (connection != null) {
               // 会递归的关闭连接。。
               try {
                   connection.close();
               } catch (JMSException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
               }
           }
       }
   }
}

二、创建消费者类

package com.mq.test;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Receiver {

   public static void main(String[] args) {
       ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
               ActiveMQConnectionFactory.DEFAULT_USER, 
               ActiveMQConnectionFactory.DEFAULT_PASSWORD, 
               "tcp://localhost:61616");
       // 第二步创建一个connection连接,并且调用connection的start方法开启连接。
       Connection connection = null;
       try {
           connection = connectionFactory.createConnection();
           connection.start();
       // 第三步:
           Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
       // 第四步:
           Destination destination = session.createQueue("Q1");
       // 第五步
           MessageConsumer messageConsumer =  session.createConsumer(destination);
       // 第七步
           while(true){
               TextMessage message = (TextMessage) messageConsumer.receive();
               if(message == null) break;
               System.err.println("收到的内容是:"+message.getText());
           }
       } catch (JMSException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }finally{
           if(connection != null){
               // 会递归的关闭连接。。
               try {
                   connection.close();
               } catch (JMSException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
               }
           }
       }
   }
}

第三步,观察控制台

简单ActiveMQ入门程序_第4张图片
activeMq控制台

你可能感兴趣的:(简单ActiveMQ入门程序)