ActiveMQ(01):简介

一、ActiveMQ简介

ActiveMQ是什么

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

ActiveMQ能干什么

最主要的功能就是:实现JMS Provider,用来帮助实现高可用、高性能、可伸缩、易用和安全的企业级面向服务的系统

ActiveMQ特点

1、完全支持JMS1.1和J2EE 1.4规范(持久化,XA消息,事务)

2、支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA

3、可插拔的体系结构,可以灵活定制,如:消息存储方式、安全管理等

4、很容易和Application Server集成使用

5、从设计上保证了高性能的集群,客户端-服务器,点对点

6、可以很容易的和Spring结合使用

7、支持多种语言的客户端

8、支持通过JDBC和journal提供高速的消息持久化

9、支持与Axis的整合

二、消息中间件

MOM基本功能

将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序。

MOM的主要特点

1、消息异步接受,类似手机短信的行为,消息发送者不需要等待消息接受者的响应,减少软件多系统集成的耦合度

2、消息可靠接收,确保消息在中间件可靠保存,只有接收方收到后才删除消息,多个消息也可以组成原子事务

消息中间件的主要应用场景

在多个系统间进行整合和通讯的时候,通常会要求:

1、可靠传输,数据不能丢失,有的时候,也会要求不能重复传输

2、异步传输,否则各个系统同步发送接受数据,相互等待,造成系统瓶颈

三、简单示例

配置maven,如下

<dependencies>
    <dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.9.0</version>
    </dependency>
    <dependency>
    <groupId>org.apache.xbean</groupId>
    <artifactId>xbean-spring</artifactId>
    <version>3.16</version>
    </dependency>
</dependencies>

基本的Queue消息发送:JmsSend.java

package com.liuy.queues;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 基本的Queue消息发送
 * @description 基本的Queue消息发送
 * @author liuy
 * @version 1.0
 * @date:2017年4月11日下午12:05:27
 */
public class JmsSend {
    public static void main(String[] args) throws Exception {
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("liuy","123456","tcp://192.168.91.8: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();
    }
}

运行发送代码后,效果如下:

基本的Queue消息接收:JmsReceiver.java

package com.liuy.queues;

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.ActiveMQConnectionFactory;

/**
 * 基本的Queue消息接收
 * @description 基本的Queue消息接收
 * @author liuy
 * @version 1.0
 * @date:2017年4月11日下午12:21:40
 */
public class JmsReceiver {
    public static void main(String[] args) throws Exception {
    	ConnectionFactory cf = new ActiveMQConnectionFactory("liuy","123456","tcp://192.168.91.8:61616");
    	Connection connection = cf.createConnection();
    	connection.start();
    	final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
    	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();
    }
}

运行接收代码后,效果如下:

时间: 2024-10-12 05:00:56

ActiveMQ(01):简介的相关文章

Node.js 教程 01 - 简介、安装及配置

目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 谁适合阅读本教程?

##activeMq的简介与安装

activeMq的简介与安装 ##一,什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信.对于消息中间件,常见的角色大致也就有Producer(生产者).Consumer(消费者) 常见的消息中间件产品: (1)ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规

ITEXT 使用详解-01 简介与安装

1pdf简介 2为什么使用itext 现在网页大多提供下载,自动生成pdf 表单的功能. itext 这个api 很好的解决对pdf处理的难题. 简化了对pdf的处理. itext 就是一个用于创建,修改,生成pdf的一个JAVA 组件.可以通过这个itext jar 用于显示报表,修改pdf 内容,通过java 代码自动填充报表等一系列功能. 3 安装 1,首先下载这个itext jar 文件.下载链接如下 http://sourceforge.net/projects/itext/files

ElasticSearch学习笔记-01 简介、安装、配置与核心概念

一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进行数据索引. Lucene只是一个框架,要利用它的功能,需要使用JAVA,并且在程序中集成Lucene.更糟的是,Lucene非常复杂,需要做很多的学习了解,才能明白它是如何运行的. Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,

Power BI基础系列-01简介篇

Power BI是一套商业分析软件,它可以连接数百个数量源.简化数据准备并提供即席查询,即席查询(Ad Hoc)是用户根据自己的需求,灵活地选择查询条件,系统可以根据用户选择的条件生成对应的报表. Power BI简介 Power BI 是Microsoft公司自主研发发布的最新可视化工具,它结合了Power Query.Power Privot.Power View和Power Map等一系列工具的经验成果.最重要的是它可以将我们在Excel里的数据通过报表的形象呈现给用户,并且在Excel

Java单体应用 - Markdown - 01.简介

原文地址:http://www.work100.net/training/monolithic-markdown.html 更多教程:光束云 - 免费课程 简介 序号 文内章节 视频 1 概述 2 特性 3 用途 请参照如上章节导航进行阅读 1.概述 Markdown 是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 2.特性 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档 语言在 2004 由约翰·格鲁伯(英语:John G

Sterling B2B Integrator与SAP交互 - 01 简介

公司近期实施上线了SAP系统,由于在和客户的数据交互中采用了较多的EDI数据交换,且多数客户所采用的EDI数据并不太相同(CSV,XML,X12,WebService),所以在EDI架构上选择了IBM产品Sterling B2B Integrator作为中间件把数据统一转换SAP IDOC格式与之交互. 简单来讲可以分成二部分: Inbound:Sterling拿到客户数据文件后转换成SAP的EDI IDOC格式,SAP接收IDOC入系统. Outbound:SAP系统处理完数据后发送IDOC给

01.简介

1.  什么是 AngularJS - 一款非常优秀的前端高级 JS 框架 - 最早由 Misko Hevery 等人创建 - 2009 年被 Google 公式收购,用于其多款产品 - 目前有一个全职的开发团队继续开发和维护这个库 - 有了这一类框架就可以轻松构建 SPA 应用程序 - 轻松构建 SPA(单一页面应用程序) - 单一页面应用程序: + 只有一个页面(整个应用的一个载体) + 内容全部是由AJAX方式呈现出啦的 - 其核心就是通过指令扩展了 HTML,通过表达式绑定数据到 HTM

SQL Server LocalDB 学习笔记 01 简介

SQL Server 2012 新增产品 SQL Sever Express轻量级版本 转为开发人员创建 无需管理 兼用T-SQL语言 编程接口与SQL Server Express一样 适用于小型应用环境.嵌入式环境 好处:无需再笔记本安装维护一个庞大的SQL Server实例了. 特性: 兼容其他SQL Server版本,使用sqlservr.exe作为服务进程,使用相同的客户端访问接口,兼容T-SQL编程语言. 无需安装多个LocalDB,不同程序可以并行执行多个LocalDB进程,所有的

vue.js初级教程--01.简介

Vue特点 渐进式框架 采用自底向上增量开发的设计 核心库只关注视图层 轻量级 22kb min+gzip 高性能 渲染性能:支持条件.循环.服务端渲染方式 更新性能:数据驱动.响应式 特性 数据驱动,支持双向数据绑定,异步批量DOM更新 组件化,支持组件独立.组件复用以及异步加载 模块化,模板.数据.外数据.方法.生命周期函数.样式 指令,支持内置指令和自定义指令 虚拟DOM 为什么需要虚拟DOM DOM是很慢的,其元素非常庞大,页面的性能问题鲜有由JS引起的,大部分都是由DOM操作引起的.如