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

结构如图:

Receiver.java

package com.snow.activemq;

/**
* @Header: Receiver.java
* 类描述:
* @author: lm
* @date 2013-7-17 上午10:52:58
* @Email
* @company 欢
* @addr 北京市朝阳区劲松
*/
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注意参数值xingbo.xu-queue是一个服务器的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) {
          }
      }
  }
}

Sender.java

package com.snow.activemq;

/**
 * @Header: Sender.java
 * 类描述:
 * @author: lm
 * @date 2013-7-17 上午10:52:42
 * @Email
 * @company 欢
 * @addr 北京市朝阳区劲松
 */
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注意参数值xingbo.xu-queue是一个服务器的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);
        }
    }
}

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),如下代码所示:

TextMessage message = (TextMessage) consumer.receive(500000);  

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

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

时间: 2024-10-11 13:11:05

java 消息机制 ActiveMQ入门实例的相关文章

ActiveMQ入门实例

1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序. 启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue. 3.创建Eclipse项目并运行 创建project:Ac

ActiveMQ入门实例(转)

转载自:http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html 1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序. 启动ActiveMQ以后,登陆:http://localho

Java知识总结:Java反射机制(用实例理解)

概念理解: 反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机制来 实现对自己行为的描述( self-representation )和检测( examination) ,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. Java中的反射是一个强大的工具,他能够创建灵活的代码,这些 代码可以在运行时装配,无需在组件之间进行链接,发射允许在编写和执行时,使程序代码能够接入装载到 JVM 中的类的内部信息 .而不是源代码中选定的类协作的代码.这使发射

Java消息队列ActiveMQ (一)--JMS基本概念

摘要:The Java Message Service (JMS) API is a messaging standard that allows application components based on the Java Platform Enterprise Edition (Java EE) to create, send, receive, and read messages. It enables distributed communication that is loosely

Java消息队列--ActiveMq 实战

原文地址:http://www.cnblogs.com/jaycekon/p/6225058.html 1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Unix 等几个版本,楼主这里选择了Linux 版本下进行开发. 下载完安装包,解压之后的目录: 从它的目录来说,还是很简单的: bin存放的是脚本文件 conf存放的是基本配置文件 data存放的是

消息中间件-ActiveMQ入门实例

1.下载ActiveMQ: http://activemq.apache.org/download-archives.html 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1\bin\win64\activemq.bat运行ActiveMQ程序.注意:期间若遇到无法启动的情况,请尝试将计算机名改为全英文,不能有其他字符!启动以后可浏览器打开一下网址登录,以便后面查看后面程序运行以后的信息!包括消息队列

activemq学习总结 (转)Java消息队列--ActiveMq 实战

转:https://www.cnblogs.com/jaycekon/p/6225058.html 感谢作者 ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Unix 等几个版本,楼主这里选择了Linux 版本下进行开发. 下载完安装包,解压之后的目录: 从它的目录来说,还是很简单的: bin存放的是脚本文件 conf存放的是基本配置文件 data存放的是日志文件 docs存放的

Java消息队列--ActiveMq 初体验

1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Unix 等几个版本,楼主这里选择了Linux 版本下进行开发. 下载完安装包,解压之后的目录: 从它的目录来说,还是很简单的: bin存放的是脚本文件 conf存放的是基本配置文件 data存放的是日志文件 docs存放的是说明文档 examples存放的是简单的实例 lib存放的是activemq所

.Net平台下ActiveMQ入门实例

1.ActiveMQ简介 先分析这么一个场景:当我们在网站上购物时,必须经过,下订单.发票创建.付款处理.订单履行.航运等.但是,当用户下单后,立即跳转到“感谢那您的订单” 页面.不仅如此,若果没有延迟,用户还会受到一封电子邮件.如果我们使用传统方式去实现,一般是对数据库操作一通,然后调用各种接口.各种服务等待各种响应,这样一来下个订单需要很久时间才能看到结果,如果某个环节出了问题,那这个订单结果一时半会是看不到了,对于现代电子商务来说,这是不能容忍的. 那么ActiveMQ久可以很好的解决这个