ActiveMQ的安装、运用

1、下载ActiveMQ:http://activemq.apache.org/

2、解压包,并找到activemq.bat,双击打开一个控制台,跟你打开tomcat一样的。如图:

3、在浏览器查看你的activemq是否正确启动:http://localhost:8161/admin,打开之后看到这样:

用户名:admin  密码:admin

确定即可登录。

4、你可以新建一个Queue,在  Queue Name后面的方框中填入“MyFirstQueue”,点击正后方“Create”按钮即可。

在下面Queues:列表中,就会显示你刚刚新建的Queue:

这是已经使用过的,其实一开始数值是这样的:

Name    :      MyFirstQueue

Number Of   ending Message  : 0

Number Of   Consumers :0

Message Enqueued:0

Message Dequeued:0



5、接下来我们通过IDEA来创建两个java类,一个是消息生产者,一个是消息消费者。

这是消息生产者:

package com.zfm.activemq;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Sender {
    private static final int SEND_NUMBER =5;
    public static void main(String[] args){
        //ConnectionFactory:连接工厂
        ConnectionFactory  connectionFactory;
        //Connection:JMS客户端到JMS Provider的连接
        Connection connection = null;
        //Session :一个会话,发送或接收消息的线程
        Session session;
        //Destination:消息的目的地
        Destination destination;
        //MessageProducer:消息产生者:发送
        MessageProducer messageProducer;
        //构造connectionFactory实例对象

        connectionFactory = new ActiveMQConnectionFactory(
                ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD,
                "tcp://localhost:61616"/*ActiveMQ默认使用的TCP连接端口是61616,*/
        );

        try{
            //构造从工厂得到的连接
            connection = connectionFactory.createConnection();
            //启动
            connection.start();
            //获取操作连接
            session = connection.createSession(Boolean.TRUE,
                    Session.AUTO_ACKNOWLEDGE);
            //获取session的参数

            destination = session.createQueue("FMDemo");
            //得到消息生成者
            messageProducer = session.createProducer(destination);

            //设置·不持久化
            messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

            //构造消息
            sendMeaasge(session,messageProducer);
            session.commit();

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(null!=connection){
                    connection.close();
                }
            }catch (Throwable t){

            }
        }
    }

    public static void sendMeaasge(Session session,MessageProducer producer) throws JMSException {
        for(int i=1;i<=SEND_NUMBER;i++){
            TextMessage  message = session.createTextMessage("ActiveMq 发送的消息" +i);
            //发送消息到目的地
            System.out.println("发送消息: ActiveMq发送消息:" + i);
            producer.send(message);
        }

    }
}

消息消费者:

package com.zfm.activemq;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Receiver {
    public static void main(String[] rags) throws JMSException {
        //Connection连接工厂
        ConnectionFactory connectionFactory;
        //Connection:JMS客户端到JMS provider
        Connection connection = null;
        //Session : 一个发送或接受消息的·会话
        Session session;
        //Destination:消息的目的地,消息发送给谁
        Destination destination;
        //消费者,消息接收者
        MessageConsumer messageConsumer;

        connectionFactory = new ActiveMQConnectionFactory(
                ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD,
                "tcp://localhost:61616"//ActiveMQ默认使用的TCP连接端口是61616,
        );
        try{
            //从构造工厂里获得连接
            connection = connectionFactory.createConnection();
            //一定要启动
            connection.start();

            //从连接获得会话
            session = connection.createSession(Boolean.FALSE
            ,Session.AUTO_ACKNOWLEDGE);

            destination = session.createQueue("FMDemo");
            messageConsumer = session.createConsumer(destination);
            while(true){
                //设置接收者接受新消息的时间
                TextMessage message = (TextMessage)messageConsumer.receive(100000);
                if(null!=message){
                    System.out.println("收到消息" + message.getText());
                }else{
                    break;
                }
            }

        }catch (Exception e){

        }finally {
            try{
                if(null != connection) {
                    connection.close();
                }
            }catch(Throwable t){

            }
        }

    }
}


当运行Sender.java之后,刷新http://localhost:8161/admin/queues.jsp时,

Queues表中的参数有变化咯:

Name    :     MyFirstQueue

Number Of   Pending Message  :5

Number Of   Consumers :0

Message  Enqueued :5

Message  Dequeued    :0

此时,由于消息已经发完,并且我们没有让Sender的main函数一直运行,所以,在控制台打印了:

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

Process finished with exit code 0

进程结束了。



这时我们再运行Receiver.java,而后控制台打印:

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

Process finished with exit code 0

此时,再刷新http://localhost:8161/admin/queues.jsp,此时表格数值变为:

Name    :     MyFirstQueue

Number Of   Pending Message  :0

Number Of   Consumers :0

Message  Enqueued :5

Message  Dequeued    :5

还有一点是:当Receiver.java并没有运行结束的时候,由于我只开启了一个Receiver进程,所以这时Number Of   Consumers:1。

可见,由Sender发出的消息已经被Receiver收到了。你可以先把Sender消息发出来,这个时候只要消息已经到消息队列上了,只要你不期望发送者还要接收什么回复,你就可以把Sender停掉了。Receiver还是一样的接收到信息。

下面介绍一下ActiveMQ的几种基本通信方式:发布-订阅模式和点对点模式。

基础流程:

1、获得ActiveMQConnectionFactory。

2、利用factory获得Connection。

3、启动connection。

4、通过connection创建Session。

5、指定Session的Destination。

6、发送消息者则创建MessageProducer/接收消息者创建MessageConsumer。

7、发送和接收JMS Message。

8、关闭所有JMS资源。

ActiveMQ详情见http://shmilyaw-hotmail-com.iteye.com/blog/1897635

讲到ActiveMQ,其实他是java消息服务(JMS)的其中一种规范,JMS详情见:http://blog.csdn.net/jiuqiyuliang/article/details/46701559   和   http://blog.csdn.net/jiuqiyuliang/article/details/47160259。

什么情况下使用ActiveMQ?

  1. 多个项目之间集成
    (1) 跨平台
    (2) 多语言
    (3) 多项目
  2. 降低系统间模块的耦合度,解耦
    (1) 软件扩展性
  3. 系统前后端隔离
    (1) 前后端隔离,屏蔽高安全区
时间: 2024-10-26 20:41:09

ActiveMQ的安装、运用的相关文章

activemq的安装与使用

一.activemq的安装 环境:CentOS 6.JDK8 1. 确保系统已安装了可用的jdk版本2. 从网上下载 Linux 版的 ActiveMQ( apache-activemq-5.11.1-bin.tar.gz),然后使用xftp上传到linux虚拟机已经建好的文件夹下 3. 解压安装# tar -zxvf apache-activemq-5.11.1-bin.tar.gz# mv apache-activemq-5.11.1 activemq如果启动脚本 activemq 没有可执

JMS实现-ActiveMQ,介绍,安装,使用,注意点,spring整合

[TOC] 缘由: 最近在用netty开发游戏服务器,目前有这样的一个场景,聊天服务器和逻辑服务器要进行消息交互,比如,某个玩家往某个公会提交了加入申请,这个申请动作是在逻辑服务器上完成的,但是要产生一条申请消息,由聊天服务器推送到对应的公会频道,目前这个申请消息就是通过jms发送到聊天服务器上,聊天服务器监听到后,推送到对应的公会频道. 下面主要介绍以下几点 - JMS简介 - 消息传递模型 - ActiveMQ介绍 - 安装使用 - spring整合JMS - 代码相关 JMS简介 J Ja

activemq的安装使用

近期有项目中用到消息队列,JMS规范中实现最好的开源框架就是activemq.所以选择它(当然这是我老大决定的,像我这样的刚入职场的小菜鸟考虑问题还不太全面)作为消息队列数据传输.公司有有成型的消息队列框架的实现,但是公司中的框架 实现的好繁琐,考虑的好全面,考虑到了同步消息传输和异步消息传输,持久化消息存储和非持久化消息存储,消息之间点对点传输还是pubilc/subscribe(订阅)等等.考虑的非常复杂.所以jar包依赖冲突比較严重.于是乎就选择了activemq,闲话少扯,省得蛋痛,以下

ActiveMQ服务安装

1.下载安装ActiveMQ服务提供者 http://activemq.apache.org/ 2.启用ActiveMQ服务 cd [activemq_install_dir] bin\activemq 3.验证服务 netstat -an|find "61616" 4.ActiveMQ的控制台查看 http://localhost:8161/admin 5.关闭ActiveMQ "CTRL-C" in the console or command shell in

ActiveMQ的安装与配置

ActiveMQ的安装与配置详情 (1)ActiveMQ的简介 MQ: (message queue) ,消息队列,也就是用来处理消息的,(处理JMS的).主要用于大型企业内部或与企业之间的传递数据信息. ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位. JMS 即Java消息服务(

active-mq的安装

当然,编译之前还需要安装下面几个库: 1.apr-1.4.2.tar.gz 2.apr-util-1.3.10.tar.gz 3.activemq-cpp-library-3.2.4-src.tar.gz 其中,以上第2个工具安装的时候,要用  ./configure  --with-apr=/usr/local/apr,指明第1个工具apr安装的路径,才能产生makefile文件. (make && make install) 如果编译时找不到头文件, 这样搞一下: [[email pr

Dubbo应用教程--ActiveMQ的安装与使用(单节点)

  IP:192.168.4.101    环境:CentOS 6.6.JDK7 1.  安装JDK并配置环境变量(略) JAVA_HOME=/usr/local/java/jdk1.7.0_72 2.  下载Linux版的ActiveMQ(当前最新版apache-activemq-5.11.1-bin.tar.gz) $ wgethttp://apache.fayea.com/activemq/5.11.1/apache-activemq-5.11.1-bin.tar.gz 3.  解压安装

ActiveMQ windows安装

下载ActiveMQ 官方网站:http://activemq.apache.org/ 下载,解压缩 以前台安装 ctiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动 netstat -an|find "61616" C:\Documents and Settings\Administrator>netstat -an|find "61616" TCP 0.0.0.0:61616 0.0.0.0:0 L

ActiveMQ 的安装与使用(单节点)

IP: 192.168.10.100 环境:CentOS 6.6.JDK8 1. 安装 JDK 并配置环境变量(略) JAVA_HOME=/opt/jdk1.8.0_111 2. 下载 Linux 版的 ActiveMQ(apache-activemq-5.13.4-bin.tar.gz) cd /usr/local/src  wget https://archive.apache.org/dist/activemq/5.13.4/apache-activemq-5.13.4-bin.tar.g

Linux CentOS 下apache activemq的安装与配置

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范 的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>