ActiveMQ(二)来个hello world吧

简介:

ActiveMQ部署

  1. 从官方网站下载activeMQ。当前最新版本是5.5.0( Dependency on Java 1.6 (java 1.5 is no longer supported) )

  2. 这个版本现在不支持jdk1.5,如果使用会在启动activeMq的时候报错:

  3. bad version number in .class

  4. 正确启动activeMq在bin目录下的activeMq.bat文件。

  5. 正确启动服务之后可以测试端口是否别占用, activeMQ的默认端口是61616,在dos下运行netstat -an|find “61616“ 进行检查;

即可看到端口的占用情况,如果端口没有被占用,出现如下的界面:

C:\Users\liz>netstat -an|find  "61616“
TCP    0.0.0.0:61616          0.0.0.0:0              LISTENING
TCP    [::]:61616                [::]:0              LISTENING

这样表示安装成功!

ActiveMQ的控制台地址: http://127.0.0.1:8161/admin/

默认的登录帐号和密码是admin、admin

在Eclipse(或者你其它的开发工具)中新建一个项目,加入ActiveMQ的jar包(位置在安装目录的lib文件夹)

加入如上jar包到你的项目中。

发送消息

/**
 * Sender.java 
 * 发送者
 */
import javax.jms.Connection;  
import javax.jms.ConnectionFactory;  
import javax.jms.DeliveryMode;  
import javax.jms.Destination;  
import javax.jms.MessageProducer;  
import javax.jms.Session;  
import javax.jms.TextMessage;  
import org.apache.activemq.ActiveMQConnection;  
import org.apache.activemq.ActiveMQConnectionFactory;  
  
public class Sender {  
    private static final int SEND_NUMBER = 5;  
  
    public static void main(String[] args) {  
    	
        // ConnectionFactory :连接工厂,JMS 用它创建连接  
        ConnectionFactory connectionFactory; 
        
        // Connection :JMS 客户端到JMS  
        // Provider 的连接  
        Connection connection = null; 
        
        // Session: 一个发送或接收消息的线程  
        Session session; 
        
        // Destination :消息的目的地;消息发送给谁.  
        Destination destination; 
        
        // MessageProducer:消息发送者  
        MessageProducer producer; 
        
        // TextMessage message;  
        // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar  
        connectionFactory = new ActiveMQConnectionFactory(  
                ActiveMQConnection.DEFAULT_USER,  
                ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");  
        
        try { // 构造从工厂得到连接对象  
            connection = connectionFactory.createConnection();  
            
            // 启动  
            connection.start();  
            
            // 获取操作连接  
            session = connection.createSession(Boolean.TRUE,  
                    Session.AUTO_ACKNOWLEDGE);  
            
            // 获取session注意参数值FirstQueue是一个服务器的queue,须在在ActiveMq的console配置  
            destination = session.createQueue("FirstQueue");  
            
            // 得到消息生成者【发送者】  
            producer = session.createProducer(destination);  
            
            // 设置不持久化,此处学习,实际根据项目决定  
            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);  
            
            // 构造消息,此处写死,项目就是参数,或者方法获取  
            sendMessage(session, producer);  
            
            session.commit();  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (null != connection)  
                    connection.close();  
            } catch (Throwable ignore) {  
            }  
        }  
    }  
  
    public static void sendMessage(Session session, MessageProducer producer)  
            throws Exception {  
        for (int i = 1; i <= SEND_NUMBER; i++) {  
            TextMessage message = session.createTextMessage("ActiveMq 发送的消息" + i);  
            // 发送消息到目的地方  
  
            System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);  
            producer.send(message);  
        }  
    }  
}

接收消息

/**
 * Receiver.java
 * 接收者
 */
import javax.jms.Connection;  
import javax.jms.ConnectionFactory;  
import javax.jms.Destination;  
import javax.jms.MessageConsumer;  
import javax.jms.Session;  
import javax.jms.TextMessage;  
import org.apache.activemq.ActiveMQConnection;  
import org.apache.activemq.ActiveMQConnectionFactory;  
  
public class Receiver {  
    public static void main(String[] args) {  
        // ConnectionFactory :连接工厂,JMS 用它创建连接  
        ConnectionFactory connectionFactory;  
        // Connection :JMS 客户端到JMS Provider 的连接  
        Connection connection = null;  
        // Session: 一个发送或接收消息的线程  
        Session session;  
        // Destination :消息的目的地;消息发送给谁.  
        Destination destination;  
        // 消费者,消息接收者  
        MessageConsumer consumer;  
        connectionFactory = new ActiveMQConnectionFactory(  
                ActiveMQConnection.DEFAULT_USER,  
                ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");  
        try {  
            // 构造从工厂得到连接对象  
            connection = connectionFactory.createConnection();  
            // 启动  
            connection.start();  
            // 获取操作连接  
            session = connection.createSession(Boolean.FALSE,  
                    Session.AUTO_ACKNOWLEDGE);  
            // 获取session注意参数值FirstQueue是一个服务器的queue,须在在ActiveMq的console配置  
            destination = session.createQueue("FirstQueue");  
            consumer = session.createConsumer(destination);  
            while (true) {  
                // 设置接收者接收消息的时间,为了便于测试,这里谁定为100s  
                TextMessage message = (TextMessage) consumer.receive(100000);  
                if (null != message) {  
                    System.out.println("收到消息" + message.getText());  
                } else {  
                    break;  
                }  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (null != connection)  
                    connection.close();  
            } catch (Throwable ignore) {  
            }  
        }  
    }  
}


这是写好的2个类,先运行接收消息的Receiver类,再运行Sender类。(当然这个时候你的ActionMQ是启动的)

在Sender控制台可以看到

发送消息:ActiveMq 发送的消息1
发送消息:ActiveMq 发送的消息2
发送消息:ActiveMq 发送的消息3
发送消息:ActiveMq 发送的消息4
发送消息:ActiveMq 发送的消息5

在Receiver控制台看到

收到消息ActiveMq 发送的消息1
收到消息ActiveMq 发送的消息2
收到消息ActiveMq 发送的消息3
收到消息ActiveMq 发送的消息4
收到消息ActiveMq 发送的消息5

一个完整的消息发送与接收就完成了,下面一篇文章分析ActionMQ消息

目录
相关文章
|
Java 开发者 fastjson
|
8月前
|
消息中间件 存储 监控
扒开kafka内部组件,咱瞅一瞅都有啥?
以上是 V 哥整理的关于 Kafka 核心组件的介绍,掌握 Kafka 中间件,应用在大型分布式项目中,这对于人个的项目经验积累是浓墨重彩的笔,换句话说,只要是有用到Kafka 的项目,必然是小不了,否则架构师脑袋长泡了。
|
8月前
|
前端开发
bootstrap例子笔记
bootstrap例子笔记
|
8月前
|
存储 C++
【C++】function包装器全解(代码演示,例题演示)
【C++】function包装器全解(代码演示,例题演示)
|
存储 canal Java
两个例子带你入门 Disruptor
Disruptor 是英国外汇交易公司 LMAX 开发的一个高性能队列。很多知名开源项目里,比如 canal 、log4j2、 storm 都是用了 Disruptor 以提升系统性能 。 这篇文章,我们通过两个例子一步一个脚印帮助同学们入门 Disruptor 。
两个例子带你入门 Disruptor
|
Java Spring 容器
SpringBoot启动原理——Run方法源码解析《课时十二》
SpringBoot启动原理——Run方法源码解析《课时十二》
111 0
|
消息中间件 监控 数据可视化
|
消息中间件 RocketMQ 微服务
用了这么久的RabbitMQ异步编程竟然都是错的!(中)
用了这么久的RabbitMQ异步编程竟然都是错的!
536 0
用了这么久的RabbitMQ异步编程竟然都是错的!(中)
|
消息中间件 存储 Dubbo
ActiveMQ --- 入门篇
ActiveMQ --- 入门篇
ActiveMQ --- 入门篇
|
消息中间件 中间件 Java
用了这么久的RabbitMQ异步编程竟然都是错的!(上)
用了这么久的RabbitMQ异步编程竟然都是错的!
164 0
用了这么久的RabbitMQ异步编程竟然都是错的!(上)