ActiveMQ概念介绍
是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现,消息中间件。
消息中间件
A传递消息到B(功能或者系统),有比较强的耦合关系,但是耦合关系会带来一些问题,需要将AB断开
但是AB之间有依赖关系,需要找一个第三方M,进行通信。A发送消息到M,B从M获得消息,进行处理。
使用第三方进行消息传递,这种第三方叫做中间件。
作用
最主要的功能:实现JMS Provider,实现高可用高性能,可伸缩性,易于和安全企业级面向消息服务的系统。
异步操作(调用)
A发送消息到消息中间件,不必等待B消息结果的处理.
 
特点

1、 多种语言和协议编写客户端。语言: Java、C、C++、C#、Ruby、Perl、PythonPHP。应用协议:OpenWire、Stomp REST、WS Notification、XMPP、AMQP

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

3、对spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性

4、通过了常见J2EE服务器(如 Geronimo、JBoss 4、GlassFish、WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上

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

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

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

8、支持Ajax

9、支持与Axis的整合

10、可以很容易得调用内嵌JMS provider,进行测试

消息形式
1、点对点(queue)
2、一对多(topic)
##########
MOM基本功能:将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序
MOM主要特点:
1.消息异步接受,类似手机短信行为,消息发送者不需要等待消息接受者的响应,减少软件多系统集成的耦合度
2.消息可靠接受,确保消息在中间件可靠保存,只有接受方收到消息后才删除消息,多个消息也可以组成原子事物
应用场景:
多个系统间整合和通讯时候,通常要求:
1。可靠传输,数据不能丢失,有时候也要求不能重复传输
2.异步传输,否则各个系统同步发送接收数据,互相等待,造成系统瓶颈。
 简单的例子
创建两个工程A和工程B编写测试类
package activemqA;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory; //生产者
public class Sender { public static void main(String args[]){ Sender sender = new Sender();
sender.sendMessage("hello,activemqB"); } public void sendMessage(String msg){ ConnectionFactory connectionFactory = null;
Connection connection = null;
Session session = null; try {
//1.创建连接工厂
connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
//2.得到一个连接
connection = connectionFactory.createConnection();
//3.创建一个Session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//4.创建目的地
Destination destination = session.createQueue("myQueue");
//5.创建发送者
MessageProducer messageProducer = session.createProducer(destination);
//6.创建文本消息
TextMessage textMessage = session.createTextMessage(msg);
//7.发送消息
messageProducer.send(textMessage);
} catch (JMSException e) {
e.printStackTrace();
}finally{
//8.关闭connection和sessiosn
try {
if(connection !=null){
connection.close();
}
if (session !=null) {
session.close();
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}

消费者

package activemqB;

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;
import org.apache.activemq.ActiveMQConnectionFactory; //消费者
public class Receiver { public static void main(String args[]){ Receiver receiver = new Receiver();
receiver.receiverMessage();
} public void receiverMessage(){ ConnectionFactory connectionFactory = null;
Connection connection = null;
Session session =null; try {
//1.创建连接工厂
connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
//2.得到一个连接
connection = connectionFactory.createConnection();
//3.创建一个Session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//4.创建目的地
Destination destination = session.createQueue("myQueue");
//5.创建接受者
MessageConsumer messageConsumer = session.createConsumer(destination);
//6.打开连接
connection.start();
//7.接收消息
TextMessage textMessage = (TextMessage) messageConsumer.receive();
//8.输出验证
System.out.println("接收到的消息为:"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}finally {
try {
if (connection !=null) {
connection.close();
}
if (session !=null) {
session.close();
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}

activemq概念介绍的更多相关文章

  1. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  2. Linux LVM硬盘管理之一:概念介绍

    一.LVM概念介绍: LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现.LVM将一个或多个硬盘的分区在逻 ...

  3. Java SE/ME/EE的概念介绍

    转自 Java SE/ME/EE的概念介绍 多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不同的包,以面向特定的应用. ...

  4. rocketMq概念介绍

    rocketMq官网 http://rocketmq.apache.org/ rocketMq逻辑概念介绍 rocketMq逻辑图 备注:    改图片分享自李占卫的网上家园 说明: 在rocketM ...

  5. java 并发多线程 锁的分类概念介绍 多线程下篇(二)

    接下来对锁的概念再次进行深入的介绍 之前反复的提到锁,通常的理解就是,锁---互斥---同步---阻塞 其实这是常用的独占锁(排它锁)的概念,也是一种简单粗暴的解决方案 抗战电影中,经常出现为了阻止日 ...

  6. Airflow Python工作流引擎的重要概念介绍

    Airflow Python工作流引擎的重要概念介绍 - watermelonbig的专栏 - CSDN博客https://blog.csdn.net/watermelonbig/article/de ...

  7. spring batch (一) 常见的基本的概念介绍

    SpringBatch的基本概念介绍 内容来自<Spring Batch 批处理框架>,作者:刘相. 一.配置文件 在项目中使用spring batch 需要在配置文件中声明: 事务管理器 ...

  8. helm-chart-1-简单概念介绍-仓库搭建-在rancher上的使用

    简单的概念介绍: Chart是helm管理的应用的打包格式,一个chart对应一个或一套应用.内部是一系列的yaml描述文件,以为为yaml 服务的文件. 三个部分,helm .tiller.repo ...

  9. Netty重要概念介绍

    Netty重要概念介绍 Bootstrap Netty应用程序通过设置bootstrap(引导)类开始,该类提供了一个用于网络成配置的容器. 一种是用于客户端的Bootstrap 一种是用于服务端的S ...

随机推荐

  1. SEO人士一定要了解的搜索引擎惩罚原则

       SEO人士一定要了解的搜索引擎惩罚原则 SEO 的人一般都知道SEO分为白帽,黑帽,甚至还有灰帽.简单说,如果你熟读过谷歌网站质量指南,就可以了解,符合搜索引擎质量规范并且符合用户体验的SEO ...

  2. Java中ArrayList的对象引用问题

    前言事件起因是由于同事使用ArrayList的带参构造方法进行ArrayList对象复制,修改新的ArrayList对象中的元素(对象)的成员变量时也会修改原ArrayList中的元素(对象)的成员变 ...

  3. javaweb基础(30)_EL函数库

    一.EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用. 这些EL函数在JSTL开发包中进行描述,因此在JSP页 ...

  4. 分享12款最佳的Bootstrap设计工具

    设计师总会渴望有一些新奇有趣的设计工具来提高工作效率,而Bootstrap就是您的不二选择.2013年Bootstrap得到了广泛普及, 它是开发者较为常用的框架之一,本文我们将分享12款最佳的Boo ...

  5. fopen打开文件失败的问题

    fopen打开带中文路径或含中文名称的文件失败. 解决这个问题有两个方法:一是改用_wfopen,这个函数接受两个宽字符类型,函数原型如下: FILE* _wfopen(const wchar_t* ...

  6. windows下简单使用pip

    1. 在python官网上下载python时会自带pip,并且在安装Python时若未取消会默认一并安装 2. 找出pip.exe所在位置, 3. 右击此电脑,点击属性 4. 高级系统设置 5. 点击 ...

  7. 如何禁止用户连续点击一个按钮事件详细JS

    <input type="button" id="submit" value="提交"> <script> $(do ...

  8. Python之路--Python初识

    Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程 ...

  9. HDU 2087 HDU 1867 KMP标准模板题

    贴两道题,其中HDU2087是中文题,故不解释题目, 思路是,一发KMP,但是特别处理最后一位的失配边为0,这样就可以保证“判断完成但是不多判断”. 第二题,很毒瘤的题,要求求出,给定字符串A,B能够 ...

  10. install golang plugin in webstrom

    https://github.com/go-lang-plugin-org/go-lang-idea-plugin/wiki/Documentation