java 消息机制 ActiveMQ入门实例

简介:
   1.下载ActiveMQ
去官方网站下载: http://activemq.apache.org/
我下载的时候是 ActiveMQ 5.8.0 Release版

2.运行ActiveMQ
解压缩apache-activemq-5.8.0-bin.zip,然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序。

启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue。

3.创建Eclipse项目并运行
创建java project:ActiveMQ-5.8,新建lib文件夹
打开apache-activemq-5.8.0\lib目录
拷贝
activemq-broker-5.8.0.jar
activemq-client-5.8.0.jar
geronimo-j2ee-management_1.1_spec-1.0.1.jar
geronimo-jms_1.1_spec-1.1.1.jar
slf4j-api-1.6.6.jar
这5个jar文件到lib文件夹中,并Build Path->Add to Build Path 

结构如图:




Sender.java
Java代码   收藏代码
  1. package com.lm.activemq;  

  2. /**

  3. * @Header: Sender.java

  4. * 类描述:

  5. * @author: lm

  6. * @date 2013-7-17 上午10:52:42

  7. * @Email

  8. * @company 欢

  9. * @addr 北京市朝阳区劲松

  10. */

  11. import javax.jms.Connection;  

  12. import javax.jms.ConnectionFactory;  

  13. import javax.jms.DeliveryMode;  

  14. import javax.jms.Destination;  

  15. import javax.jms.MessageProducer;  

  16. import javax.jms.Session;  

  17. import javax.jms.TextMessage;  

  18. import org.apache.activemq.ActiveMQConnection;  

  19. import org.apache.activemq.ActiveMQConnectionFactory;  

  20. publicclass Sender {  

  21. privatestaticfinalint SEND_NUMBER = 5;  

  22. publicstaticvoid main(String[] args) {  

  23. // ConnectionFactory :连接工厂,JMS 用它创建连接

  24.        ConnectionFactory connectionFactory; // Connection :JMS 客户端到JMS

  25. // Provider 的连接

  26.        Connection connection = null// Session: 一个发送或接收消息的线程

  27.        Session session; // Destination :消息的目的地;消息发送给谁.

  28.        Destination destination; // MessageProducer:消息发送者

  29.        MessageProducer producer; // TextMessage message;

  30. // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar

  31.        connectionFactory = new ActiveMQConnectionFactory(  

  32.                ActiveMQConnection.DEFAULT_USER,  

  33.                ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");  

  34. try { // 构造从工厂得到连接对象

  35.            connection = connectionFactory.createConnection();  

  36. // 启动

  37.            connection.start();  

  38. // 获取操作连接

  39.            session = connection.createSession(Boolean.TRUE,  

  40.                    Session.AUTO_ACKNOWLEDGE);  

  41. // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置

  42.            destination = session.createQueue("FirstQueue");  

  43. // 得到消息生成者【发送者】

  44.            producer = session.createProducer(destination);  

  45. // 设置不持久化,此处学习,实际根据项目决定

  46.            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);  

  47. // 构造消息,此处写死,项目就是参数,或者方法获取

  48.            sendMessage(session, producer);  

  49.            session.commit();  

  50.        } catch (Exception e) {  

  51.            e.printStackTrace();  

  52.        } finally {  

  53. try {  

  54. if (null != connection)  

  55.                    connection.close();  

  56.            } catch (Throwable ignore) {  

  57.            }  

  58.        }  

  59.    }  

  60. publicstaticvoid sendMessage(Session session, MessageProducer producer)  

  61. throws Exception {  

  62. for (int i = 1; i <= SEND_NUMBER; i++) {  

  63.            TextMessage message = session.createTextMessage("ActiveMq 发送的消息"

  64.                    + i);  

  65. // 发送消息到目的地方

  66.            System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);  

  67.            producer.send(message);  

  68.        }  

  69.    }  

  70. }  



Receiver.java

Java代码   收藏代码
  1. package com.lm.activemq;  

  2. /**

  3. * @Header: Receiver.java

  4. * 类描述:

  5. * @author: lm

  6. * @date 2013-7-17 上午10:52:58

  7. * @Email

  8. * @company 欢

  9. * @addr 北京市朝阳区劲松

  10. */

  11. import javax.jms.Connection;  

  12. import javax.jms.ConnectionFactory;  

  13. import javax.jms.Destination;  

  14. import javax.jms.MessageConsumer;  

  15. import javax.jms.Session;  

  16. import javax.jms.TextMessage;  

  17. import org.apache.activemq.ActiveMQConnection;  

  18. import org.apache.activemq.ActiveMQConnectionFactory;  

  19. publicclass Receiver {  

  20. publicstaticvoid main(String[] args) {  

  21. // ConnectionFactory :连接工厂,JMS 用它创建连接

  22.        ConnectionFactory connectionFactory;  

  23. // Connection :JMS 客户端到JMS Provider 的连接

  24.        Connection connection = null;  

  25. // Session: 一个发送或接收消息的线程

  26.        Session session;  

  27. // Destination :消息的目的地;消息发送给谁.

  28.        Destination destination;  

  29. // 消费者,消息接收者

  30.        MessageConsumer consumer;  

  31.        connectionFactory = new ActiveMQConnectionFactory(  

  32.                ActiveMQConnection.DEFAULT_USER,  

  33.                ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");  

  34. try {  

  35. // 构造从工厂得到连接对象

  36.            connection = connectionFactory.createConnection();  

  37. // 启动

  38.            connection.start();  

  39. // 获取操作连接

  40.            session = connection.createSession(Boolean.FALSE,  

  41.                    Session.AUTO_ACKNOWLEDGE);  

  42. // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置

  43.            destination = session.createQueue("FirstQueue");  

  44.            consumer = session.createConsumer(destination);  

  45. while (true) {  

  46. // 设置接收者接收消息的时间,为了便于测试,这里谁定为100s

  47.                TextMessage message = (TextMessage) consumer.receive(100000);  

  48. if (null != message) {  

  49.                    System.out.println("收到消息" + message.getText());  

  50.                } else {  

  51. break;  

  52.                }  

  53.            }  

  54.        } catch (Exception e) {  

  55.            e.printStackTrace();  

  56.        } finally {  

  57. try {  

  58. if (null != connection)  

  59.                    connection.close();  

  60.            } catch (Throwable ignore) {  

  61.            }  

  62.        }  

  63.    }  

  64. }  



5.测试过程
先运行:Receiver.java
再运行:Sender.java

可以看到结果
Sender运行后:
发送消息:ActiveMq 发送的消息1
发送消息:ActiveMq 发送的消息2
发送消息:ActiveMq 发送的消息3
发送消息:ActiveMq 发送的消息4
发送消息:ActiveMq 发送的消息5

Receiver运行后:
收到消息ActiveMq 发送的消息1
收到消息ActiveMq 发送的消息2
收到消息ActiveMq 发送的消息3
收到消息ActiveMq 发送的消息4
收到消息ActiveMq 发送的消息5

要想看到不同的输出内容,通过点击如下图的按钮切换console




在Receiver.java中,可以设置一个时间,比如receive(500000),如下代码所示:
Java代码   收藏代码
  1. TextMessage message = (TextMessage) consumer.receive(500000);  


这个时候运行Receiver.java的话,会使得这个Receiver.java一直运行500秒,在eclipse中可以发现:




点击那个红色方块可以手动停止运行程序

黑色头发:http://heisetoufa.iteye.com/  
  • 大小: 26.1 KB

  • 大小: 50.2 KB

  • 大小: 12.8 KB













本文转自yunlielai51CTO博客,原文链接:http://blog.51cto.com/4925054/1283369 ,如需转载请自行联系原作者
相关文章
|
6月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
555 0
|
7月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
585 0
|
7月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
298 0
|
7月前
|
Java API 数据库
2025 年最新 Java 实操学习路线,从入门到高级应用详细指南
2025年Java最新实操学习路线,涵盖从环境搭建到微服务、容器化部署的全流程实战内容,助你掌握Java 21核心特性、Spring Boot 3.2开发、云原生与微服务架构,提升企业级项目开发能力,适合从入门到高级应用的学习需求。
2381 0
|
7月前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
1089 3
|
7月前
|
监控 Java API
2025 年全新出炉的 Java 学习路线:从入门起步到实操精通的详细指南
2025年Java学习路线与实操指南,涵盖Java 21核心特性、虚拟线程、Spring Boot 3、微服务、Spring Security、容器化部署等前沿技术,助你从入门到企业级开发进阶。
1538 0
|
8月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
918 1
|
8月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
8月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
8月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
1062 3