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 ,如需转载请自行联系原作者
相关文章
|
29天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
50 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
25天前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
25天前
|
Java 程序员
深入理解Java异常处理机制
Java的异常处理是编程中的一块基石,它不仅保障了代码的健壮性,还提升了程序的可读性和可维护性。本文将深入浅出地探讨Java异常处理的核心概念、分类、处理策略以及最佳实践,旨在帮助读者建立正确的异常处理观念,提升编程效率和质量。
114 1
|
26天前
|
Java 开发者 UED
深入探索Java中的异常处理机制##
本文将带你深入了解Java语言中的异常处理机制,包括异常的分类、异常的捕获与处理、自定义异常的创建以及最佳实践。通过具体实例和代码演示,帮助你更好地理解和运用Java中的异常处理,提高程序的健壮性和可维护性。 ##
48 2
|
26天前
|
Java 开发者
Java中的异常处理机制深度剖析####
本文深入探讨了Java语言中异常处理的重要性、核心机制及其在实际编程中的应用策略,旨在帮助开发者更有效地编写健壮的代码。通过实例分析,揭示了try-catch-finally结构的最佳实践,以及如何利用自定义异常提升程序的可读性和维护性。此外,还简要介绍了Java 7引入的多异常捕获特性,为读者提供了一个全面而实用的异常处理指南。 ####
48 2
|
30天前
|
运维 Java 编译器
Java 异常处理:机制、策略与最佳实践
Java异常处理是确保程序稳定运行的关键。本文介绍Java异常处理的机制,包括异常类层次结构、try-catch-finally语句的使用,并探讨常见策略及最佳实践,帮助开发者有效管理错误和异常情况。
96 5
|
29天前
|
Java 程序员 UED
深入理解Java中的异常处理机制
本文旨在揭示Java异常处理的奥秘,从基础概念到高级应用,逐步引导读者掌握如何优雅地管理程序中的错误。我们将探讨异常类型、捕获流程,以及如何在代码中有效利用try-catch语句。通过实例分析,我们将展示异常处理在提升代码质量方面的关键作用。
39 3
|
29天前
|
Java 数据库连接 开发者
Java中的异常处理机制:深入解析与最佳实践####
本文旨在为Java开发者提供一份关于异常处理机制的全面指南,从基础概念到高级技巧,涵盖try-catch结构、自定义异常、异常链分析以及最佳实践策略。不同于传统的摘要概述,本文将以一个实际项目案例为线索,逐步揭示如何高效地管理运行时错误,提升代码的健壮性和可维护性。通过对比常见误区与优化方案,读者将获得编写更加健壮Java应用程序的实用知识。 --- ####
|
29天前
|
开发框架 安全 Java
Java 反射机制:动态编程的强大利器
Java反射机制允许程序在运行时检查类、接口、字段和方法的信息,并能操作对象。它提供了一种动态编程的方式,使得代码更加灵活,能够适应未知的或变化的需求,是开发框架和库的重要工具。
43 2
|
24天前
|
Java API 开发者
深入理解Java中的异常处理机制
本文探讨了Java编程语言中异常处理的核心概念,包括异常类型、异常捕获与抛出、以及最佳实践。通过分析常见的异常场景和处理策略,旨在帮助开发者更好地理解和运用异常处理机制,提高代码的健壮性和可维护性。文章不仅涵盖了基本的try-catch结构,还深入讨论了自定义异常的创建与使用,以及finally块的重要性和应用。此外,还将介绍一些高级技巧,如多异常捕获和嵌套异常处理,为读者提供全面的技术指导。
78 0