一、ActiveMQ简介
■ActiveMQ是什么
ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和J2EE1.4规范的JMS Privider实现的消息中间件(Message Oriented Middleware, MOM)
■ActiveMQ能干什么
最主要的功能就是:实现JMS Provider, 用来帮助实现高可用、高性能、可伸缩、易用和安全的企业级面向消息服务的系统。
■ActiveMQ特点
完全支持JMS1.1和J2EE1.4规范(持久化,XA消息,事务)
支持多种传输协议:in-VM, TCP、SSL、NIO、UDP、JGroups, JXTA
可插拔的体系结构,可用灵活定制,如消息存储方式、安全管理等
很容易和Application Server集成使用
多种语言和协议编写客户端。语言:Java, C, C++, C#, Ruby, Perl等等
从设计上保证了高性能的集群,客户端-服务器,点对点
可以很容易和Spring结合使用
支持通过JDBC和journal提供高速的持久化
支持与Axis的整合
二、消息中间件
■MOM基本功能:将信息以消息的形式,从一个应用传送到另一个或多个应用程序。
■MOM主要特点:
1、消息异步接收, 类似手机短信的行为,消息发送者不需要等待消息接受者的相应,减少软件多系统集成的耦合度;
2、消息可靠接收,确保消息在中间件可靠保存,只有接受方收到后才删除消息,多个消息也可以组成原子事务。
■消息中间件的主要应用场景:
在多个系统间进行整合和通讯的时候,通常会要求:
1、可靠传输,数据不能丢失,有的时候,也会要求不能重复传输;
2、异步传输,否则各个系统同步发送接收数据,互相等待,造成系统瓶颈
三、基本的Queue消息发送-1
配置Maven所需的依赖,示例如下:
<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>
Queue消息发送的示例代码如下:
public class QueueSender {
public static void main(String[] args) throws Exception {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.8.88:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("myactive-queue");
MessageProducer producer = session.createProducer(destination);
for (int i = 0; i < 4; i++) {
TextMessage message = session.createTextMessage("message==" + i);
Thread.sleep(1000);
// 通过消息生产者发送消息
producer.send(message);
}
session.commit();
session.close();
connection.close();
}
}
public class QueueReceiver {
public static void main(String[] args) throws Exception {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.8.88:61616");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("myactive-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();
}
}
四、JMS基本概念-1
■JMS是什么
JMS Java Message Service,Java消息服务,是Java EE中的一个技术。
■JMS规范
JMS定义了Java中访问消息中间件的接口,并没有给予实现,实现■JMS接口的消息中间件称为JMS Provider, 例如ActiveMQ
■JMS Provider:实现JMS接口和规范的消息中间件
■JMS Message:JMS的消息,JMS消息由以下三部分组成:
1、消息头:每个消息头字段都有相应的getter和setter方法
2、消息属性:如果需要除消息头字段以外的值,那么可以使用消息属性。
3、消息体:封装具体的消息数据
■JMS Producer:消息生产者,创建和发送JMS消息的客户端应用
■JMS Consumer:消息消费者,接收和处理JMS消息的客户端应用
消息的消费可以采用以下两种方法之一:
1、同步消费:通过调用消费者的receive方法从目的地中显示提取消息,receive方法可以一直阻塞直到消息到达。
2、异步消费:客户可以为消费者注册一个消息监听器,以定义在消息到达时所采取的动作。
五、JMS基本概念-2
■JMS domains:消息传递域,JMS规范中定义了两种消息传递域:点对点(point-to-point,简写成PTP)消息传递域和发布/订阅消息传递域(publish/subscribe,简写成pub/sub)
■1:点对点消息传递的特点如下:
1)每个消息只能有一个消费者
2)消费的生产和消费者之间没有时间上的相关性。无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。
■2、发布/订阅消息传递域的特点如下:
1)每个消息可以有多个消费者
2)生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能消费自它订阅之后发布的消息。JMS规范允许客户创建持久订阅,这在一定程序上放松了时间上的相关性要求。持久订阅允许消费者消费它在未处于激活状态时发送的消息。
■3、在点对点消息传递域中,目的地被称为队列(queue);在发布/订阅消息传递域中,目的地被称为主题(topic)
分享到:
相关推荐
通过阅读《ActiveMQ中文手册》和《ActiveMQ开发手册》,开发者将能够全面了解和掌握ActiveMQ的各个方面,包括基本概念、配置、使用技巧以及性能调优,从而在实际项目中充分利用其功能,构建稳定、高效的分布式系统。
### Activemq-cpp开发手册知识点详述 #### 一、引言 - **编写目的:** - 本手册旨在为使用ActiveMQ C++ API的开发者提供详细的指南,帮助他们快速掌握如何利用该API进行消息传递应用的开发。 - **功能介绍:** - ...
【ActiveMQ开发手册】是专为C++开发者设计的一份指南,旨在加速ActiveMQ-CPP的开发进程,提高开发效率。ActiveMQ-CPP是Apache ActiveMQ的C++接口,允许开发者使用C++语言与ActiveMQ消息队列服务器进行通信。此外,...
**ActiveMQ 中文参考手册** ActiveMQ 是一款开源的消息中间件,它基于 Java Message Service (JMS) 规范,提供了高效、可靠的异步消息传递功能。ActiveMQ 的设计目标是连接应用程序,允许它们在不直接通信的情况下...
ActiveMQ是一款由Apache软件基金会开发的开源消息中间件,广泛应用于Java后台开发中,用以实现系统之间的异步通信。ActiveMQ支持消息队列(Message Queue)的两种基本使用模式:点对点(Point-to-Point, P2P)模式和...
ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它实现了多种消息协议,如OpenWire、STOMP、AMQP、MQTT和XMPP。以下是ActiveMQ的一些核心概念和功能: 1. **消息队列(Message Queuing)**:ActiveMQ允许...
activemq-cpp开发手册中文版,Activemq-cpp 是一个与 ActiveMQ 交互通讯的 C++ API 开发库,为 C++开发者提供了一个访 问 ActiveMQ 的接口。 Winkeemq-cpp 是一个在 Activemq-cpp 基础上封装的 API 库,对一些重复...
ActiveMQ 是一款开源的消息中间件,由 Apache 组织开发并维护。消息中间件的主要作用是解耦系统间的通信,通过消息传递数据,使得发送方和接收方无需同时在线即可完成数据交换。ActiveMQ 支持多种协议,包括 ...
【ActiveMQ-CPP开发手册】 ActiveMQ-CPP是Apache ActiveMQ项目的一部分,它是一个C++编写的客户端库,用于与ActiveMQ消息中间件进行交互。这个库为C++开发者提供了访问ActiveMQ服务器的接口,使其能够创建、发送、...
ActiveMQ Artemis用户手册不仅适用于开发人员和系统管理员,也适合需要深入理解消息服务的任何专业人员。通过阅读这份手册,读者可以全面掌握ActiveMQ Artemis的功能和最佳实践,从而在构建高效、可靠的消息系统时...
在开发环境中,ActiveMQ通常在Windows上通过命令行或集成于Spring框架内以嵌入式方式运行。然而,对于生产环境,部署在Linux服务器上是更稳定的选择。以下是一个在Linux系统上安装ActiveMQ的详细步骤。 首先,安装...
### ActiveMQ-CPP 开发手册知识点详述 #### 一、引言 - **编写目的**:本手册旨在帮助开发者快速掌握 CMS (C++ Messaging Service) 的使用方法,提高 C++ 开发者在消息传递系统方面的开发效率,并作为 CMS 开发的...
5. **docs**:包含了用户手册和API文档,帮助开发者理解和使用ActiveMQ的各种功能。 6. **examples**:提供了一些示例,演示了如何创建和使用ActiveMQ的基本功能,如生产者、消费者、持久化和事务处理等。 在实际...
ActiveMQ实战手册以介绍JMS和ActiveMQ的操作及配置为主,...总结来说,ActiveMQ实战手册涵盖了JMS的核心概念和ActiveMQ的基本操作,为开发人员提供了丰富的知识点,帮助他们理解和运用消息中间件进行高效、可靠的通信。
Delphi ActiveMQ 使用帮助文档主要介绍了如何在 Delphi 开发环境中使用 HabariActiveMQClient 库与 Apache ActiveMQ 消息中间件进行交互的方法。这份文档提供了从安装配置到具体使用的详细步骤,并且包含了丰富的...
4. **docs**目录:包含用户手册和技术文档,有助于理解和使用ActiveMQ。 5. **data**目录(可能需要用户创建):默认的持久化数据存储位置,包括消息日志和持久化的订阅信息。 6. **examples**目录:包含示例代码和...
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的...
在描述中提到的"含资源文档"表明,这个压缩包不仅包含了ActiveMQ的核心库文件,还可能包括相关的用户手册、API文档、示例代码和配置文件等,这些都是理解和使用ActiveMQ的关键资源。 在标签中提到了"activemq jar...