ActiveMQ

1.ActiveMQ是什么
ActiveMQ是Apache推出的一款开源的完全支持JMS1.1和J2EE1.4规范的JMS Provider实现的消息中间件(Message Oriented Middleware,MOM)。
2.ActiveMQ能干什么
最主要的功能就是实现JMS Provider,用来帮助实现高可用,高性能,可伸缩,易用和安全的企业级面向消息服务的系统!
3.ActiveMQ特点
.完全支持JMS1.1和J2EE1.4规范(持久化,XA消息,事务)
.支持多种传输协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA.
.可插拔的体系结构,可以灵活定制,如消息存储方式,安全管理等。
.很容易和Application Server集成使用。
.多种语言和协议编写客户端,语言:Java,C,C++,C#,Ruby,Perl,Python,PHP.
.从设计上保证了高性能的集群,客户端-服务器,点对点
.可以很容易的和Spring结合使用
.支持通过JDBC和journal提供高速的消息持久化
.支持与Axis的整合

消息中间件    

1.MOM的基本功能
将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序
2.MOM的主要特点
1).消息异步接受,类似手机短信的行为,消息的发送者不需要等待消息接受者的响应,减少软件多系统集成的耦合度,
2).消息可靠接收,确保消息在中间件可靠保存,只有接收方收到信息后才删除消息,多个消息也可以组成原子事务
3.MOM的应用场景
在多个系统间进行整合和通信的时候,通常会要求
1).可靠传输,数据不能丢失,有的时候也会要求不能重复传输
2).异步传输,否则各个系统同步发送接收数据,互相等待,造成性能瓶颈

ActiveMQ安装和基本使用

1.下载并安装ActiveMQ服务器端
1).从http://activemq.apache.org/download-archives.html下载最新的ActiveMQ
2).直接解压,然后拷贝到你要安装的位置就可以了。

2.启动运行
1)普通启动:到ActiveMQ/bin下面,./activemq start


2)启动并指定日志文件./activemq start > /tmp/activemqlog
3.检查是否已经启动
ActiveMQ默认采用61616端口提供JMS服务,使用8161端口提供管理控制台服务,执行以下命令以便检验是否已经成功启动ActiveMQ服务:
1).比如查看61616端口是否打开:netstat -an | grep 61616


2).也可以直接查看控制台输出或者日志文件
3).还可以直接访问ActiveMQ的管理页面:http://192.168.125.128:8161/admin/
默认的用户名和密码是admin/admin


4.关闭ActiveMQ,可以用./activemq stop
暴力点的可以用ps-ef| grepactivemq来得到进程号,然后kill掉

基本使用

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.9.0</version>
</dependency>

生产者

package com.winner.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * Created by winner_0715 on 2017/1/1.
 */
public class QueueSend {
    public static void main(String[] args) throws Exception {

        //连接到ActiveMQ服务器
        ConnectionFactory connectionFactory = new
                ActiveMQConnectionFactory("tcp://192.168.125.128:61616");
        Connection connection = connectionFactory.createConnection();
        connection.start();

        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        //生产者生成的消息放在哪
        Destination destination = session.createQueue("my-queue");
        MessageProducer producer = session.createProducer(destination);
        for (int i = 0; i < 3; i++) {
            TextMessage message = session.createTextMessage("message--" + i);
            Thread.sleep(1000);
            //通过消息生产者发出消息
            producer.send(message);
        }
        session.commit();
        session.close();
        connection.close();
    }
}

运行效果

消费者

package com.winner.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * Created by winner_0715 on 2017/1/1.
 */
public class QueueReceiver {
    public static void main(String[] args) throws JMSException {
        //连接到ActiveMQ服务器
        ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory("tcp://192.168.125.128:61616");
        Connection connection = connectionFactory.createConnection();
        connection.start();
        final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        //生产者将消息发送到my-queue,所以消费者要到my-queue去取
        Destination destination = session.createQueue("my-queue");
        MessageConsumer consumer = session.createConsumer(destination);
        int i = 0;
        while (i < 3) {
            i++;
            TextMessage message = (TextMessage) consumer.receive();
            session.commit();
            System.out.println("收到消息:" + message.getText());
        }
        session.close();
        connection.close();
    }
}

运行效果、

收到消息:message--0
收到消息:message--1
收到消息:message--2

我们将生产者看成A系统,消费者看成B系统,AMQ就是消息中间件。

A把消息发送至消息中间件,B从消息中间件取消息践行消费

ActiveMQ简介的更多相关文章

  1. jms和activemq简介

    一.JMS简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消 ...

  2. ActiveMQ 简介与安装

    一. 概述与介绍 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provide ...

  3. ActiveMQ简介与安装

    开源消息总线 支持JMS1.1和J2EE 1.4规范的 JMS Provider实现(持久化,XA消息,事务) 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去 支持 ...

  4. MQ学习(二)----ActiveMQ简介(转)

    1.  什么是ActiveMQ ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信.ActiveMQ使用A ...

  5. ActiveMQ系列之一:ActiveMQ简介

    ActiveMQ是什么  ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和J2EE 1.4规范的JMS   Provider实现的消息中间件 (Message Oriented ...

  6. ActiveMQ (一) 简介

    1.ActiveMQ简介 先分析这么一个场景:当我们在网站上购物时,必须经过,下订单.发票创建.付款处理.订单履行.航运等.但是,当用户下单后,立即跳转到“感谢那您的订单” 页面.不仅如此,若果没有延 ...

  7. ActiveMQ(一)——简介

    一.ActiveMQ简介 ActiveMQ是什么ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现的消中间件(MOM) Activ ...

  8. ActiveMQ入门

    ActiveMQ简介 概要 开源 JMS-compliant 消息中间件message-oriented middleware(MOM) 松耦合,相对于RPC的紧耦合 发送消息fire-and-for ...

  9. ActiveMQ 目录

    (1) ActiveMQ简介 (2) JMS基本概念和模型 (3) JMS的可靠性 (4) ActiveMQ结合Spring开发 (5)ActiveMQ支持的传输协议 (6)ActiveMQ消息存储持 ...

随机推荐

  1. MyEclipse Project Migration功能中文简单介绍

    前端时间,我对myEclispe的project Migration产生了疑问,也不知道是干啥用的.然后百度之,翻译结果是项目迁移,再次百度其他人对这个的经验,没想到百度到的没多少,甚至都没有说明这个 ...

  2. 【Mybatis架构】输入、输出映射

    前言综述:   其实在我们分析Mybatis的查询缓存或者是一些简介的时候,我们就不难看到有关于Mybatis输入输出映射的东西,比如说: 但是一直没有想起来系统的来总结一下这方面的相关知识,偶然看到 ...

  3. 分布式缓存技术memcached学习(三)——memcached内存管理机制

    几个重要概念 Slab memcached通过slab机制进行内存的分配和回收,slab是一个内存块,它是memcached一次申请内存的最小单位,.在启动memcached的时候一般会使用参数-m指 ...

  4. Ubuntu下使用vsftpd实现FTP

    ## 哈哈哈啊哈 被领导啪啪啪打脸,文件连在线打开都不行,你做事情的时候有没有考虑过别人使用时的感受!! 需求: 部门老大希望在内网搭建一个用于员工共享文件的系统. 很自然的就想到通过FTP去实现. ...

  5. Python for Infomatics 第12章 网络编程三(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.5 HTML分析和网页抓取 ...

  6. Educational Codeforces Round 12 E Beautiful Subarrays

    先转换成异或前缀和,变成询问两个数异或≥k的方案数. 分治然后Trie树即可. #include<cstdio> #include<algorithm> #define N 1 ...

  7. .net core 基本概念

    asp.net core 是基于 .net core的,所以能够跨平台. 目前存在.NET Framework (CLR), .NET Core (CoreCLR) or Mono,可根据项目的具体情 ...

  8. 检测计算机已经安装的NetFramework版本(摘录)

    /// /// 检测计算机已经安装的NetFramework版本 /// internal void GetVersionFromRegistry() { using (RegistryKey ndp ...

  9. 浅谈WebLogic和Tomcat

    J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器.可以看出服务器在这种架构是非常重要的. 这几天接触到两种Java的web服务器,做项目用的Tom ...

  10. MySQL Replication需要注意的问题

    MySQL Replication 大家都非常熟悉了,我也不会写怎么搭建以及复制的原理,网上相关文章非常多,大家可以自己去搜寻.我在这里就是想总结一下mysql主从复制需要注意的地方.有人说主从复制很 ...