消息中间件的意义和应用场景 (activeMq)

消息中间件一般两个功能,解耦和异步处理,分别举个例子吧

解耦合:
比如我们做一个微博产品中的好友系统,就很需要使用消息中间件
当我们添加一个关注的时候, 涉及以下几个子系统

推荐系统,需要根据你关注的人给你做数据分析
搜索系统,需要根据你的数据建立索引
feed系统,需要根据你关注的人,发送一条新鲜事
统计系统 用于数据统计,了解产品情况

而如果直接在加关注的流程里进行这些操作,可能带来风险,所以,会引入mq来解耦合,因此就像你说的,一般是 "单向传输" 的(当然这不是绝对的,取决于你系统复杂度),而且发往mq的数据一般都不大,比如 from_uid, to_uid 就行了,一般都不会很大,如果发送的数据不满足你的要求,这个时候,需要调用好友系统提供的接口了

异步处理:
有的时候,我们一个操作可能会耗时比较久,所以,并不会在主要业务流程里进行处理
比如,我们在删除一个用户的时候,可能会有很多关联数据的操作,为了尽快的响应以及解耦合,我们会将这个消息发送给其他系统,让它们根据需求自己处理

转自:http://blog.sina.com.cn/s/blog_7085382f0102uy79.html

场景

1.分布式系统中,不同系统之间传递消息。 
比如系统B要监听系统A的消息,当A发出消息的时候,系统B根据消息,做相应的变化。这个场景很容易理解,就是不同系统之间的异步交互。 
2.在系统A中,自己发消息,自己监听。这个场景是我在现在工作中遇见的,当时看到自己的系统监听消息,下意识就想,是哪个系统发送的消息呢?后来问了别人才知道,是自己系统发消息,自己监听。为什么要这样做,自己系统中,直接可以调用到自己内部的一些方法了呀?原来这样做的原因有如下,首先,发送消息可以实现异步做一些动作,比如我们对一些信息做了修改,这些信息要同步到另一个系统中,我们有一种方法是,在一个事务里,做完修改就立刻调用另一个系统的modify方法,但是这样有一个问题,如果这个事务中很多方法,很可能导致调用超时,或者我们这一个方法体中,有多个调用,会导致系统耦合性太强,如果我们通过发送消息的方式调用,就做到了在本方法体中减少了方法调用,调用移动到了消息监听者中。这样不仅方法体中调用减少,而且做到了松耦合。

转自:http://blog.csdn.net/u012814506/article/details/48303071

时间: 2024-10-27 00:19:55

消息中间件的意义和应用场景 (activeMq)的相关文章

阿里P8架构师谈:消息中间件介绍、典型使用场景、以及使用原则

阿里P8架构师谈:消息中间件介绍.典型使用场景.以及使用原则大型分布式架构里一定会涉及到消息中间件,今天先谈谈消息中间件. 本文作者 陈睿 优知学院创始人 曾任职阿里巴巴高级软件工程师.百度研发经理.携程定制旅游CTO 常用的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ. 一.kafka1.不完全符合jms规范,注重吞吐量,类似udp 和 tcp 2.一般做大数据吞吐的管道 我们现在的用途就是负责在各个idc之间通信 3.量大对数据不是百

详解HTML<head> 头标签元素的意义以及使用场景

HTML<head>头部分的标签.元素有很多,涉及到浏览器对网页的渲染,SEO 等等,而各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,这就造成了很多差异性.移动互联网时代,head 头部结构,移动端的 meta 元素,显得更为重要.了解每个标签的意义,写出满足自己需求的 head 头标签,是本文的目的.本篇以一丝的文章为基础,进行扩展总结介绍常用的 head 中各个标签.元素的意义以及使用场景. DOCTYPE DOCTYPE(Document Type),该声明位于文档中最前面的

消息中间件面试题31道RabbitMQ+ActiveMQ+Kafka

前言 文章开始前,我们先了解一下什么是消息中间件? 什么是中间件? 非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件. 什么是消息中间件? 是关注于数据的发送和接收,利用高效可靠的异步消息传递机制集成分布式系统 图示: 消息中间件RabbitMQ+ActiveMQ+Kafka的对比 接下来就是消息中间件面试题RabbitMQ+ActiveMQ+Kafka RabbitMQ消息中间件系列 1:RabbitMQ 中的 broker 是指什么?cl

消息中间件(一)JMS与ActiveMQ

JMS基础参见:http://blog.csdn.net/zhangxs_3/article/category/625599 实践中存在的问题(引自<大型网站系统与Java中间件实践>第六章): 一.如何解决消息发送一致性 1.消息发送一致性定义 消息发送一致性是指产生消息的业务动作与发送消息的一致,也就是说,如果业务操作成功了,那么由这个操作产生的消息一定要发送出去,否则就丢失消息了.另一方面,如果业务操作没有发生或者是失败了,就不应该把消息发出去. 2.消息一致性很难保证吗 解决方式一:

Html页面head标签元素的意义和应用场景

相信在html5之前,很少人会关注html页面上head里标签元素的定义和应用场景,可能记得住的只有"title"."keyword"和"description"这些meta在逐渐了解使用html新标准后,特别是移动页面的开发普及,可以看到html中这一块内容越来越重要为大家所认识,初次见到这些标签基本是摸不着头脑,今天就来梳理这些标签的定义(以html5标准展开): 先来一个页面概括,head标签不分排序先后: <!DOCTYPE htm

消息中间件的多个企业级场景案例--分析

1 用户注册后(会立即提示注册成功),过一会发送短信和邮件通知 发布/订阅模型 以上模式一般是用户注册成功后,写入一条数据到mysql,在发送一条消息到MQ! 如果不用消息中间件(或者简单的做成异步发送),做成了用户提交了注册之后,成功后,就同步立即执行发送邮件和短信服务脚本(这样耗时间),这样用户体验不好时间慢! 术语: SOA 2 把日志进行集中收集,用于日志分析和流量回放分析 术语:灰度发布,小流量 3 将数据源头复制到多个目的地,一般是要求顺序或者因果关系序的 用于跨机房数据传输,搜索

消息中间件ActiveMQ及Spring整合JMS的介绍

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

[转]分布式消息中间件 MetaQ 作者庄晓丹专访

MetaQ(全称Metamorphosis)是一个高性能.高可用.可扩展的分布式消息中间件,思路起源于LinkedIn的Kafka,但并不是Kafka的一个Copy.MetaQ具有消息存储顺序写.吞吐量大和支持本地和XA事务等特性,适用于大吞吐量.顺序消息.广播和日志数据传输等场景,目前在淘宝和支付宝有着广泛的应用.   Github地址:  链接地址 为了使大家对MetaQ有进一步的了解,本期我们采访了MetaQ的核心开发者庄晓丹.  欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,如

JMS ActiveMQ研究文档

1. 背景 当前,CORBA.DCOM.RMI等RPC中间件技术已广泛应用于各个领域.但是面对规模和复杂度都越来越高的分布式系统,这些技术也显示出其局限性:(1)同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果后才能继续执行:(2)客户和服务对象的生命周期紧密耦合:客户进程和服务对象进程 都必须正常运行:如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客户会接收到异常:(3)点对点通信:客户的一次调用只发送给某个单独的目标对象. 面向消息的中间件(Message Oriente