精华内容
下载资源
问答
  • MQ 系统管理指南 API 中文版 我找到的最好的中文版说明书。
  • WebSphere MQ 系统管理指南 6.0 中文版
  • MQ系统管理

    2013-08-28 22:14:26
    本书描述了MQSeries版本5产品的系统管理方面,以及提供的支持商业消息传递的服务,它包括管理应用程序用于接收消息的队列,以及确保应用程序有权访问所需的队列。
  • JMS_MQ系统之Spring中嵌入ActiveMQ,JMS_MQ系统之Spring中嵌入ActiveMQ
  • mq 系统指南

    2012-04-15 13:35:45
    mq 系统指南官方电子书,mq 系统指南官方电子书
  • 环境:Windows XP SP3、JDK 1.6 使用说明: 1.javac DemoMQ.java 2.java DemoMQ 说明:本人在给Java游戏开发特训班讲解多线程时,需要说明多线程同步的问题,其中讲解了使用“生产者-消费者”模型来解决同步问题。...
  • MQ系统管理指南

    2007-09-07 15:14:11
    本书描述 WebSphere MQ 版本 5.3 产品的系统管理方面的内容以及所提供的支持商业消息传递的服务。包括管理应用程序用于接收其消息的队列以及确保应用程序具有对它们所要求的队列的访问权。
  • 基于mq和redis实现的秒杀系统基于mq和redis实现的秒杀系统
  • MQ2烟雾环境温湿度(DHT11)监测系统资料下载。 ●高温检测。传感器选用DHT11,当环境温度设定温度时,高温报警,LCD1602实时显示温度。 ●湿度检测。传感器选用DHT11,当环境湿度设定湿度时,潮湿报警,LCD1602...
  • Mq选型总结

    千次阅读 2020-04-04 17:05:45
    而通过MQ后只要增加一个订阅者、去掉一个订阅者既可 2、提高响应速度:数据发往mq后立即返回,后续程序再处理数据 3、削峰、容峰:缓冲突然来的几万个请求 MQ的副作用 系统可用性会降低 系统复杂性会更高 插入两条...

    activemq

    Java开发的,在内嵌到项目中比较方便

    单机吞吐量万级

    可以做主从、高可用

     

    可能丢消息

    官方维护已经很少

     

    Rabbitmq(非分布式)(支持消息的事务)

    在rabbitmq中创建几万的topic是很容易的,所以可以做到每个硬件订阅不同的topic

    而kafka的topic在分布式情况下需要同步到其他broker,还需要经过zookeeper

     

    rabbitmq可以通过java程序中调用declareExchange、declareQueue、declareQueue来实现mq的创建

     

    吞吐量到万级,单机几万

    Erlang开发,延时很低

    有管理界面,适合中小企业管理

    社区活跃

    国内公司用的多

    但,erlang定制开发难度大

     

    在普通集群模式(不是高可用的),元数据是多份的,但是queue数据只有一份,

    优点:可以提高吞吐量

    缺点:

    1、内部大量数据传输

    2、只有一份数据,可靠性是没有保证的

     

    镜像集群模式(是高可用的),每个节点都有完整的一份数据

    不是分布式的,一个节点上有一份完整的数据,容量达到该机器的容量无法容纳,就挂掉了

     

    Rabbitmq保证数据不丢的方案

    生产者confirm模式:开启发送方确认模式:channel.confirmSelect();

    //普通confirm模式:channel.waitForConfirms()

    异步confirm模式:

    生产者发送消息后,rabbitmq收到消息后会回调生产者,需要提供一个正常回调一个失败回调:addConfirmListener(handleAck和handleNack)

    异步confirm模式中,通过deliveryTag区分是哪条消息

     

    消费者关闭autoAck模式:

    消费者ack删掉消息,消费者nack把消息放回队列

     

    可以开启持久化,未持久化的数据可能丢失

     

    RocketMQ

    单机吞吐量上十万

    Topic可以有很多

    分布式架构

    可靠性高

     

    国内的公司开发,万一rocketmq被阿里抛弃,那项目就废了

     

    如果在大型公司,可以投入一组java高级开发研究rocketmq,进行定制开发


    Kafka

    如果有集群要求,那kafka当仁不让

    如果个别Topic消息量非常大,kafka当仁不让(因为rabbitmq和activemq不好解决)

     

    10万级别

    Topic从几十个到几百个的时候吞吐量会急剧下降

    极低的延时

    消息可能被重复消费

     

    最好不要太多的topic

    一个partition一个消费者

    适合于大数据方面、实时计算、日志处理

     

    分布式:一个topic的每条数据存放在不同的partition上,partition在不同的机器上

     

    0.8版本以后提供副本机制,会选举leader和follower,需要设置副本的数量,类似HadoopFS

     

    Zookeeper中记录partition中的offset,消费者消费完不直接提交,而是定时定期提交

     

     

    高可用:

    生产者配置acks=all(spring.kafka.producer.acks=all),确保所有broker中数据都已写成功后返回,retries=MAX无限次重试

    消费者关闭自动提交offset(enable.auto.commit 改成 false )spring.kafka.consumer.enable-auto-commit=false

    consumer.commitSync();

    @KafkaListener方法中通过Acknowledgment ack注入ack的操作类

    通过ack.acknowledge()手动提交偏移量

     

    中小型推荐用RabbitMq

    中大型推荐用RocketMq

    大数据kafka

     

    MQ的作用

    1、解耦:A调用BCD,原来:增加EF调用、减少CD调用都要修改A,而通过MQ后只要增加一个订阅者、去掉一个订阅者既可

    2、提高响应速度:数据发往mq后立即返回,后续程序再处理数据

    3、削峰、容峰:缓冲突然来的几万个请求

     

    MQ的副作用

    系统可用性会降低

    系统复杂性会更高

    插入两条数据问题(可以在mq之前通过雪花算法的唯一键解决重复消费问题)

    每次重启消费者,可能导致多次消费

     

    建议在生产者端使用雪花算法产生唯一键,消费者端用insert or update方法保存数据

    展开全文
  • 在linux系统安装IBM WebSphere MQ

    千次阅读 2017-12-28 15:38:54
    linux安装MQ

    安装MQ

    1.上传MQ安装包
    命令:cd /tmp/
    这里写图片描述
    上传本地MQ安装包到该目录下

    2.解压安装包
    命令:mkdir MQ
    命令:cd MQ
    命令:tar -zxvf WS_MQ_LINUX_ON_X86_64_V7.5_IFR2_I.tar.gz

    3.执行接受许可脚本
    命令:./mqlicense.sh -accept
    这里写图片描述

    4.安装WebSphere MQ for linux服务器
    命令:rpm -ivh MQSeriesRuntime-7.5.0-5.x86_64.rpm
    命令:rpm -ivh MQSeriesSDK-7.5.0-5.x86_64.rpm
    命令:rpm -ivh MQSeriesServer-7.5.0-5.x86_64.rpm
    这里写图片描述
    注:安装完成后,相关文件会被自动安装在/opt/mqm下,在安装。
    说明:MQSeriesRuntime-6.0.0-0.i386.rpm时候,安装程序为系统自动创建了一个mqm用户和mqm组,安装完毕后,需要使用该用户来进行MQ的配置。

    5.安装 WebSphere MQ for Linux 客户端:
    命令:rpm -ivh MQSeriesClient-7.5.0-5.x86_64.rpm
    这里写图片描述

    6.安装 WebSphere MQ 样本程序(其中包括amqsput、amqsget、amqsgbr和amqsbcg等):
    命令:rpm -ivh MQSeriesSamples-7.5.0-5.x86_64.rpm
    说明:样本程序安装在/opt/mqm/samp/bin 中。
    这里写图片描述

    7.安装MQ其他软件包
    命令:rpm -ivh MQSeriesMan-7.5.0-5.x86_64.rpm
    这里写图片描述

    命令:rpm -ivh MQSeriesJava-7.5.0-5.x86_64.rpm
    这里写图片描述

    命令:rpm -ivh IBMJava2-SDK-1.4.2-0.0.i386.rpm(无需执行)

    说明:上面最后一步安装的是JDK运行环境,如果已经有相同或更高版本的JDK,不需要再安装。

    8.修改mqm用户密码
    安装过程创建了一个名为mqm 的用户和一个同样名为mqm 的组,此时,新用户是被锁定的,必须设置一个密码来解锁,这样才能正常使用该用户。
    用passwd 命令:
    [root@localhost mq]# passwd mqm
    说明:以上操作均在root用户下操作,至此MQ7.0安装结束。MQ的配置相关命令操作均在mqm用户下。

    9.修改环境变量
    命令:vi /etc/profile
    添加:
    MQ_HOME=/opt/mqm/bin
    PATH=$MQ_HOME: $PATH
    export PATH
    wq保存退出
    命令:source /etc/profile

    展开全文
  • Linux系统MQ安装步骤

    2018-03-28 12:39:53
    linux操作系统环境下,消息队列MQ的安装步骤,可供下载
  • MQ_WeTwitter 基于MQ的聊天系统
  • 基于MQ5检测的天然气报警系统C程序,1602液晶显示,ADc0803模数转换
  • IBM MQ简介

    千次阅读 2021-02-23 15:32:44
    IBM MQ share 1.什么是MQ MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。主要产品...

    IBM MQ share

    1.什么是MQ

    MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。主要产品:RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ、Kafka、IBM MQ

    2.IBM MQ简介

        队列(queue):我们可以简单地把队列看成一个容器,用于存放消息。

        队列管理器(Qmanager):队列管理器构建了独立的 MQ 的运行环境,它是消息队列的管理者,用来维护和管理消息队列。

        消息:MQ中的最小对象;默认情况下,消息缺省可以达到 4MB。消息可以分成持久消息和非持久消息。所 谓“持久”的 意思,就是在MQ 队列管理器重启动后,消息是否仍然能保持。持久的消息写入或读出队列的同时会在 Log 中记录,所以性能上比非持久消息差不少。

        通道(channel):通道则是两个队列管理器之间的一种单向的点对点的通信连接, 消息在通道中只能单向流动。队列管理器之间的通信是通过配置通道来实现 的,通道两侧的队列管理器对这个通道的相关参数应该能对应起来。在通道上可以配置不同的通信协议,这样就使得编程接口与通信协议无关。通道两端的 配置必须匹配, 且名字相同,否则无法连通。

        RUNMQSC:命令行交互界面管理工具;作为维护人员的我们,与MQ打交道有两种方式,一种是通过MQ提供的二进制命令工具(在mq安装目录的bin目录下),另一种方式则是通过命令行交互管理工具;这二者在功能上有很多是重合的,但并非完全可替代;RUNMQSC是一个通用的 MQ 对象管理工具,使用MQSC命令集可以对 MQ 对象进行;全方位的管理,也是各种管理方式最直接、最全面的一种。RUNMQSC 运行的命令集称MQSC (MQ Script Command)";在 RUNMQSC 中大小写无关,所有的命令会先转换成全大写再提交执行。所以如果要 表示大小相关的字串,比如对象名,则用引号将字串包住。输入以下命令启动MQSC命令:runmqsc[queueManagerName]

    3.MQ 常用命令

    查看队列的属性

    runmqsc QM

    dis queue(qname) all

    显示所有队列

    display queue(*)

    清理队列内容

    clear ql(qname)

    查看当前所有连接

    display conn(*) where(objname eq qname) all

    关闭connection

    stop conn(conn NO)

    查看MQ版本

    dspmqver

    查看队列深度

    display queue() curdepth

    清除队列消息

    clear ql(Q_SVC2ADP_4_HTTP)

    查看远程连接

    display qremote (*)

    4. 查看队列管理器运行状态

    # dspmq

    显示结果中QMNAME表示MQ队列管理器的名称,STATUS表示当前运行状态。

    运行状态有如下几种:

            Starting    正在启动

            Running    正在运行

            Ending    正在停止

            Ended normally  已经正常终止

            Ended immediately  已经立即终止

            Ended preemtively  已经强制终止

            Ended unexpectively 异常终止

            注:停止MQ后建议使用dspmq命令进行状态检查是否成功关闭。

    5. 查看通道运行状态与启停通道

    $ runmqsc QmgrName

    dis chl(*);     查看所有通道定义

    dis chs(*);     查看所有通道状态,如果没有查询到通道状态,或报错AMQ8420: Channel Status not found,请启动通道

    dis chs(ChannelName);  查看通道ChannelName的状态

    通道状态有如下几种:

            STARTING  正在启动

            BINDING    正在绑定

            INITIALIZING  正在初始化

            RUNNING   正常

            STOPPING 正在停止

            RETRYING  重试

            PAUSED  等待

            STOPPED 已停止

            REQUESTING  请求

    启停通道与重置通道序号的方法:

    $ runmqsc QmgrName

    start chl(ChannelName);  启动通道

    stop chl(ChannelName);  停止通道

    6. 查看队列深度

    如果队列深度不断增加,不见减少,那么可能就有问题了,请检查并分析其原因。

    $runmqsc QmgrName

    dis q(*);    查看所有各类队列的属性

    dis qlocal(QName);   查看所有本地队列的属

    队列深度属性为:CURDEPTH

    7.日志路径

    1.整个MQ的错误日志

    /../mqm下面的errors

    2.单个QM下面的日志

    /var/mqm/qmgrs/AMQ01OD1/errors

    展开全文
  • 消息中间件(一)MQ详解及四大MQ比较

    万次阅读 多人点赞 2018-08-29 22:05:58
    消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、...

    一、消息中间件相关知识

    1、概述

    消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。

     

    2、消息中间件的组成

          2.1 Broker

    消息服务器,作为server提供消息核心服务

          2.2 Producer

    消息生产者,业务的发起方,负责生产消息传输给broker,

          2.3 Consumer

    消息消费者,业务的处理方,负责从broker获取消息并进行业务逻辑处理

          2.4 Topic

    主题,发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的       广播

          2.5 Queue

    队列,PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收

          2.6 Message

    消息体,根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输

     

    3 消息中间件模式分类

          3.1 点对点

    PTP点对点:使用queue作为通信载体 

    说明: 
    消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。 
    消息被消费以后,queue中不再存储,所以消息消费者不可能消费到已经被消费的消息。 Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

    3.2 发布/订阅

    Pub/Sub发布订阅(广播):使用topic作为通信载体 

    说明: 
    消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。

    queue实现了负载均衡,将producer生产的消息发送到消息队列中,由多个消费者消费。但一个消息只能被一个消费者接受,当没有消费者可用时,这个消息会被保存直到有一个可用的消费者。 
    topic实现了发布和订阅,当你发布一个消息,所有订阅这个topic的服务都能得到这个消息,所以从1到N个订阅者都能得到一个消息的拷贝。

     

    4 消息中间件的优势

          4.1 系统解耦

    交互系统之间没有直接的调用关系,只是通过消息传输,故系统侵入性不强,耦合度低。

          4.2 提高系统响应时间

    例如原来的一套逻辑,完成支付可能涉及先修改订单状态、计算会员积分、通知物流配送几个逻辑才能完成;通过MQ架构设计,就可将紧急重要(需要立刻响应)的业务放到该调用方法中,响应要求不高的使用消息队列,放到MQ队列中,供消费者处理。

          4.3 为大数据处理架构提供服务

    通过消息作为整合,大数据的背景下,消息队列还与实时处理架构整合,为数据处理提供性能支持。

          4.4 Java消息服务——JMS

    Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 
    JMS中的P2P和Pub/Sub消息模式:点对点(point to point, queue)与发布订阅(publish/subscribe,topic)最初是由JMS定义的。这两种模式主要区别或解决的问题就是发送到队列的消息能否重复消费(多订阅)。

     

    5 消息中间件应用场景

           5.1 异步通信

    有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

          5.2 解耦

    降低工程间的强依赖程度,针对异构系统进行适配。在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。通过消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,当应用发生变化时,可以独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

          5.3 冗余

    有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。

          5.4 扩展性

    因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。不需要改变代码、不需要调节参数。便于分布式扩容。

          5.5 过载保护

    在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量无法提取预知;如果以为了能处理这类瞬间峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

          5.6 可恢复性

    系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。

          5.7 顺序保证

    在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。

          5.8 缓冲

    在任何重要的系统中,都会有需要不同的处理时间的元素。消息队列通过一个缓冲层来帮助任务最高效率的执行,该缓冲有助于控制和优化数据流经过系统的速度。以调节系统响应时间。

          5.9 数据流处理

    分布式系统产生的海量数据流,如:业务日志、监控数据、用户行为等,针对这些数据流进行实时或批量采集汇总,然后进行大数据分析是当前互联网的必备技术,通过消息队列完成此类数据收集是最好的选择。

     

    6 消息中间件常用协议

          6.1 AMQP协议

    AMQP即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。 
    优点:可靠、通用

          6.2 MQTT协议

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。 
    优点:格式简洁、占用带宽小、移动端通信、PUSH、嵌入式系统

          6.3 STOMP协议

    STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议。STOMP提供一个可互操作的连接格式,允许客户端与任意STOMP消息代理(Broker)进行交互。 
    优点:命令模式(非topic\queue模式)

          6.4 XMPP协议

    XMPP(可扩展消息处理现场协议,Extensible Messaging and Presence Protocol)是基于可扩展标记语言(XML)的协议,多用于即时消息(IM)以及在线现场探测。适用于服务器之间的准即时操作。核心是基于XML流传输,这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。 
    优点:通用公开、兼容性强、可扩展、安全性高,但XML编码格式占用带宽大

          6.5 其他基于TCP/IP自定义的协议

    有些特殊框架(如:redis、kafka、zeroMq等)根据自身需要未严格遵循MQ规范,而是基于TCP\IP自行封装了一套协议,通过网络socket接口进行传输,实现了MQ的功能。

     

    7 常见消息中间件MQ介绍

          7.1 RocketMQ

    阿里系下开源的一款分布式、队列模型的消息中间件,原名Metaq,3.0版本名称改为RocketMQ,是阿里参照kafka设计思想使用java实现的一套mq。同时将阿里系内部多款mq产品(Notify、metaq)进行整合,只维护核心功能,去除了所有其他运行时依赖,保证核心功能最简化,在此基础上配合阿里上述其他开源产品实现不同场景下mq的架构,目前主要多用于订单交易系统。

    具有以下特点:

    • 能够保证严格的消息顺序
    • 提供针对消息的过滤功能
    • 提供丰富的消息拉取模式
    • 高效的订阅者水平扩展能力
    • 实时的消息订阅机制
    • 亿级消息堆积能力

    官方提供了一些不同于kafka的对比差异: 
    https://rocketmq.apache.org/docs/motivation/

          7.2 RabbitMQ

    使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP,STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。同时实现了Broker架构,核心思想是生产者不会将消息直接发送给队列,消息在发送给客户端时先在中心队列排队。对路由(Routing),负载均衡(Load balance)、数据持久化都有很好的支持。多用于进行企业级的ESB整合。

          7.3 ActiveMQ

    Apache下的一个子项目。使用Java完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,少量代码就可以高效地实现高级应用场景。可插拔的传输协议支持,比如:in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports。RabbitMQ、ZeroMQ、ActiveMQ均支持常用的多种语言客户端 C++、Java、.Net,、Python、 Php、 Ruby等。

          7.4 Redis

    使用C语言开发的一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。实验表明:入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。

          7.5 Kafka

    Apache下的一个子项目,使用scala实现的一个高性能分布式Publish/Subscribe消息队列系统,具有以下特性:

    • 快速持久化:通过磁盘顺序读写与零拷贝机制,可以在O(1)的系统开销下进行消息持久化;
    • 高吞吐:在一台普通的服务器上既可以达到10W/s的吞吐速率;
    • 高堆积:支持topic下消费者较长时间离线,消息堆积量大;
    • 完全的分布式系统:Broker、Producer、Consumer都原生自动支持分布式,依赖zookeeper自动实现复杂均衡;
    • 支持Hadoop数据并行加载:对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。

          7.6 ZeroMQ

    号称最快的消息队列系统,专门为高吞吐量/低延迟的场景开发,在金融界的应用中经常使用,偏重于实时数据通信场景。ZMQ能够实现RabbitMQ不擅长的高级/复杂的队列,但是开发人员需要自己组合多种技术框架,开发成本高。因此ZeroMQ具有一个独特的非中间件的模式,更像一个socket library,你不需要安装和运行一个消息服务器或中间件,因为你的应用程序本身就是使用ZeroMQ API完成逻辑服务的角色。但是ZeroMQ仅提供非持久性的队列,如果down机,数据将会丢失。如:Twitter的Storm中使用ZeroMQ作为数据流的传输。

    ZeroMQ套接字是与传输层无关的:ZeroMQ套接字对所有传输层协议定义了统一的API接口。默认支持 进程内(inproc) ,进程间(IPC) ,多播,TCP协议,在不同的协议之间切换只要简单的改变连接字符串的前缀。可以在任何时候以最小的代价从进程间的本地通信切换到分布式下的TCP通信。ZeroMQ在背后处理连接建立,断开和重连逻辑。

    特性:

    • 无锁的队列模型:对于跨线程间的交互(用户端和session)之间的数据交换通道pipe,采用无锁的队列算法CAS;在pipe的两端注册有异步事件,在读或者写消息到pipe的时,会自动触发读写事件。
    • 批量处理的算法:对于批量的消息,进行了适应性的优化,可以批量的接收和发送消息。
    • 多核下的线程绑定,无须CPU切换:区别于传统的多线程并发模式,信号量或者临界区,zeroMQ充分利用多核的优势,每个核绑定运行一个工作者线程,避免多线程之间的CPU切换开销。

     

    二、主要消息中间件的比较

     

    综合选择RabbitMq 

    展开全文
  • MQ系统管理编程概述

    千次阅读 2012-08-09 19:47:24
    在广大用户使用MQ的过程中,大家比较常用而且比较熟悉的是有关MQI的编程,即利用MQ应用程序接口进行消息的发送和接收,以C语言为例,最为常 见的是使用MQCONN, MQOPEN, MQPUT/MQGET, MQCLOSE, ...所谓的MQ系统管理
  • kafka实现MQ

    千次阅读 2016-08-11 17:42:32
    要了解MQ系统整合中的作用,可以看Enterprise Integration Patterns (EIP)这本书或对应的网站。简单说就是发布者只管把消息发布到MQ中而不管谁会来取,同样消息使用者只管只管从MQ取消息而
  • 为什么使用MQ? 文章引用地址: 感谢前辈分享 https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/why-mq.md 为什么使用MQ?就是说我们在这在使用MQ的地方是因为什么原因 我们使用MQ都是...
  • 包含源程序和仿真文件
  • BOLL趋势系统.mq4

    2020-04-20 17:54:11
    BOLL趋势系统
  • MQ应用之解耦

    千次阅读 2019-11-15 11:40:01
    消息队列 MQ 既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。 应用场景 削峰填谷:诸如秒杀、抢红包、企业开门红等大型活动时皆会带来较高...
  • 系统利用STC89C52单片机与MQ-2传感器相结合的方式对多路CO信号进行监测,浓度可实时显示,当浓度超过阈值时本地声光报警,利用GSM模块TC35i向指定的手机发送报警短信。报警阈值、手机号码可通过按键进行设定。系统...
  • MQ600B起重机变频调速控制系统.pdf 介绍了关于MQ600B起重机变频调速控制系统的详细说明,提供变频器的技术资料的下载。
  • 第二篇文章描述了当前版本的性能改进: ://big-elephants.com/2013-10/tuning-redismq-how-to-use-redis-in-go/ 不是什么 它不是可以用作消息队列的独立服务器,至少目前还不能使用。 该实现完全是在客户端完成的。...
  • 本文实例说明如何使用IBM WebSphere MQ实现两个应用系统之间通信。两个应用系统都必须安装MQ服务器,只有双方都安装了MQ同时也创建队列管理器,而且双方都启动MQ的队列管理器才可以实现通
  • IBMMQ创建带权限验证的消息队列

    千次阅读 2019-03-14 14:40:00
    3、设置通道权限:配置可以使用通道的用户,注意不要把使用mq的用户设置成阻止.如果你不明白什么意思,记住这里清空就行 4、队列管理器连接认证更改:选中Test管理器-右键-属性-扩展,结尾为IDPWOS的时候说明该队列...
  • MQ消息队列的解耦、接口异步处理、削峰

    万次阅读 多人点赞 2018-12-13 20:02:43
    负责A系统的大兄弟自作主张引入MQ消息队列后,我管你老王、老张还是老李要什么数据,我放在MQ中,你们要就从MQ中拿,别来烦我、 接口异步处理 首先来看下没有引入MQ时候,假设打开一个网页随意...
  • 同业MQ v1.2

    2019-11-05 23:35:58
    另外,所有的交易结果都能通过同业MQ系统自动提醒,全面满足您推广业务、交易洽谈、交流经验、广交朋友的需求,还有财务管理功能哦。旅游必备软件,行业通讯工具,同业MQ,您的旅行社信息化之路由此开始!
  • IBM WebSphere MQ 8.0 linux 安装包 part1

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,692
精华内容 36,676
关键字:

mq系统