一、概述
作用:异步消费数据,异步发邮件,异步查询操作
当前远程调用等许多框架rpc技术广泛应用,但面对大规模和复杂度都越来越高的分布式系统,这些技术有以下局限性:
1、同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果才能断续执行。
2、客户和服务对象的生命周期紧密耦合:客户端和服务端都必须正常运行,如遇服务对象崩溃或网络故障导致客户端的请求不可达,客户端会接收到异常。
3、点对点通信:客户的一次调用只发送给某单个目标对象。
面向消息的中间件(Message Oriented Middleware,MOM)较好的解决了以上问题,发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息发给接收者。
JAVA消息服务(JMS)定义了JAVA中访问消息中间件的接口。JMS只是接口,并没有给予实现。实现JMS接口的消息中间件称为JMS Provider,已有的MOM系统包括Apache的ActiveMqQ,阿里巴巴RocketMQ,IBM的MQServices,Microsoft的MSMQ,BEA的MessageQ,RabbitMQ等。都遵循JMS规范。
二、JMS实现接口的消息中间件
Provider(MessageProvider):生产者
Consumer(MessageConsumer):消费者
P2P:Point to point,点对点消息模型
Pub/Sub:Publish/Subscribe,发布/订单消息模型
Queue:队列目标
Topic:主题目标
ConnectionFactory:连接工厂,JMS用它创建连接
Connection:JMS客户端到JMS Provider的连接
Destination:消息的目的地
Session:会话,一个发送或接收消息的线程
三、JMS定义了五种不同的消息正文格式
StreamMessage Java原始值的数据流
MapMessage Map类型键值对
TextMessage 字符串对对象
ObjectMessage 序列化的Java对象
BytesMessage 未解释字节的数据流
四、各消息中件间对比
1、rocketMQ:经过阿里双十一检测,具有高吞吐量和大数据处理能力。(不开源)
2、rabbitMQ:性能不错,数据高可靠,支持集群。
Kafka:性能高,吞吐量大。主要利用pageCache,将数据存储到内存中。并不是采用持久化方式(数据落地方式、刷盘方式)来保证数据的可靠性,而是使用replicate(在内存中保存多份数据)来保证高可用。可能会产生少量数据丢失。
3、activeMQ:IO支持随机和顺序读写,满足80%以上的场景KahaDB,LevelDB,MYSql等。
分享到:
相关推荐
**ActiveMQ 概述** ActiveMQ 是一个开源的消息中间件,它是Apache软件基金会下的一个项目。消息中间件在分布式系统中扮演着至关重要的角色,它允许应用程序之间通过发送和接收消息进行通信,而不是直接调用彼此,...
七、其他消息中间件对比 除了ActiveMQ,还有RabbitMQ、Kafka、RocketMQ等知名消息中间件,它们各有特点,如RabbitMQ基于AMQP协议,适合微服务架构;Kafka则在大数据实时处理领域表现出色。 总结,Java消息中间件,...
本文旨在通过一系列测试数据对比分析ActiveMQ与HornetQ在不同消息大小及数量下的性能表现。测试环境为相同的硬件配置,确保了测试结果的公正性。通过对比两者的发送时间、吞吐量等指标,可以更直观地了解两者之间的...
### ActiveMQ部署方案分析对比 #### 一、引言 在现代企业的IT架构中,消息中间件扮演着至关重要的角色,特别是在需要实现分布式系统间高效可靠通信的场景下。Apache ActiveMQ作为一款成熟稳定的企业级消息中间件,...
该章节还涵盖了JMS的主要特性、API以及与其他消息传递系统的对比。 - **第3章:ActiveMQ in Action示例** 本章通过具体的代码示例介绍了如何使用ActiveMQ进行消息发送和接收。这些示例涵盖了多种消息模式,如点对...
- 技术环境:AWS的SQS、SNS或开源消息中间件如ActiveMQ。 - 功能需求:实现点对点通信和发布-订阅模式,以及GUI界面。 2.2 架构设计 - 点对点模式:消息生产者发送消息,消费者接收消息,通过消息传递连接件实现。...
本文将对几个常见的开源消息队列及中转软件进行概述,包括ZeroMQ、ActiveMQ、Redis、MongoDB和Memcached。 **ZeroMQ**,又称为ZMQ,是一款轻量级的消息队列库,它提供了一种套接字编程模型,允许应用程序通过队列...
【RabbitMQ 学习资料】这篇文档是针对初学者准备的,主要涵盖了RabbitMQ的基本概念、消息队列的工作原理、AMQP和JMS的区别、常见消息中间件的对比,以及RabbitMQ的安装与配置,还有其提供的Web管理界面和基本功能。...
学生需使用AWS SQS、SNS或开源JMS消息中间件(如ActiveMQ、RabbitMQ、Kafka)来实现这些功能,并通过Java或C#编程语言进行编程。 【实验目标】 1. **掌握进程间通信基础**:通过编写发送和接收程序,学习如何利用...
除了 Socket 通信之外,还提到了 ActiveMQ,这是一个基于 Java 的消息中间件,但它也支持其他语言包括 C#。ActiveMQ 支持多种消息传递模式,例如点对点 (Point-to-Point) 和发布订阅 (Publish-Subscribe),可以用于...
RocketMQ与其他MQ的对比 - **ActiveMQ**:基于Java开发,具有较低的消息丢失概率,但社区活跃度相对较低,可能有丢消息的风险。 - **RabbitMQ**:使用Erlang语言,提供丰富的MQ功能和管理界面,但吞吐量较低,且...
本文对消息队列的基本概念进行了概述,重点介绍了AMQP协议及其核心组件,并对RabbitMQ进行了深入探讨,包括其与其它队列系统的对比及安装测试方法。通过学习这些知识,开发者可以更好地理解消息队列的工作原理,并...
#### 消息中间件对比 - **ActiveMQ**: 成熟的产品,支持多种协议,但单机吞吐量较低。 - **RabbitMQ**: 性能良好,社区活跃度高,适用于数据量较小的场景。 - **RocketMQ**: 适用于金融等高可靠性要求的领域,经历过...
- **与其他分布式消息系统对比**: - **语言支持**:Kafka使用Scala开发,而RabbitMQ基于Erlang,后者因支持高并发而在某些场景下表现出色。 - **事务支持**:Kafka为了追求高性能放弃了对事务的支持,这与支持...
#### 一、消息队列(MQ)概述 **1.1 应用解耦** - **背景**: 在复杂的业务系统中,各个子系统之间的耦合度直接影响着系统的整体健壮性和扩展性。以电商系统为例,一个订单流程可能涉及多个子系统(如库存、物流、...
虽然文中提到没有直接针对nanomsg的性能评测数据,但从zeromq和其他消息队列软件(如MSMQ、ActiveMQ、RabbitMQ)的对比来看,zeromq在性能方面表现出色。考虑到nanomsg是在zeromq基础上进一步优化而来的,我们有理由...