`
huangyongxing310
  • 浏览: 508621 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

各种MQ应用分式

 
阅读更多
RabbitMQ

RabbitMQ有一个交换机(Exchange)决定消息分发到那些队列中
交换机有四种类型:
Direct:direct 类型的行为是"先匹配, 再投送". 即在绑定时设定一个 routing_key, 消息的routing_key 匹配时, 才会被交换器投送到绑定的队列中去.
Topic:按规则转发消息(最灵活)
Headers:设置header attribute参数类型的交换机
Fanout:转发消息到所有绑定队列

多个消费者定阅同一个队列,只有一个消费者可以得到的消息,消费完消息会删除
多种应用消费者要消费同样的消息,可以建立不同的队列,以Topic转发规则匹配到多个队列中实现

消息消费后就不再存在
https://www.cnblogs.com/ityouknow/p/6120544.html

为了确保消息不会丢失,RabbitMQ支持消息应答。
https://blog.csdn.net/a491857321/article/details/50670238


RabbitMQ在服务端没有声明队列和消息持久化时,队列和消息是存在内存中的,服务端宕机了,队列和消息也不会保留。
服务端声明持久化,客户端想接受消息的话,必须也要声明queue时,也要声明持久化,不然的话,客户端执行会报错。


https://www.jianshu.com/p/6376936845ff(消息中间件—RabbitMQ(集群原理与搭建篇))

RocketMQ
支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型

单一队列百万消息的堆积能力
Tag标签可以被认为是对 Topic 进一步细化。一般在相同业务模块中通过引入标签来标记不同用途的消息。
Name Server 为 producer 和 consumer 提供路由信息。
NameServer: 提供轻量级的服务发现和路由。
一个topic可以对应多个queue,多消都多生产时用于提高吞吐量
延时消息
延时消息,简单来说就是当 producer 将消息发送到 broker 后,会延时一定时间后才投递给 consumer 进行消费。

发布/订阅(Pub/Sub)
消息会一直持久化在broker中,通过一定的策略来删除消息

集群消费,一个消息只会被同一个组的消费者中的一个消费者消费

支持分组消费,就是不同应用可以订阅同一个topic,但属于不同的消费组,每个组的消费者都会消费同一topic里的所有消息,

消息支持应答,如果没有应答就会发送到同组的其他消费者消费(return ConsumeOrderlyStatus.SUCCESS;)

发布/订阅模式,消息消费后还存有,会保存一份,更改分组名后可以重新消费之前的所有消息

P2P模式,一个消息只有一个真正的消费者,因为消息取走了之后,消息就不会在broker存在了

每个组的消费信息会保存到broker中

当 consumer 使用集群消费时,每条消息只会被 consumer 集群内的任意一个 consumer 实例消费一次。

https://www.jianshu.com/p/824066d70da8
https://blog.csdn.net/iie_libi/article/details/54289580
https://mp.weixin.qq.com/s/QdNQFG6ohhPpNppScEXdUQ



activemq

两种数据结构:Queue/Topic
1.Queue队列,生产者生产一个消息,只能由一个消费者进行消费.
2.Topic 话题.生产者生产一个消息,可以由多个消费者进行消费.,
支持消费应答

多个一样的消费者可以用Queue,但不同应用要相同的数据就不能用Queue,因为同一个消息只会有一个消费者消费
多个应用接收相同消息可用Topic,但一个应用不能有多个了,否则同一个消息会消费多次
如果多应用多节点就只能多开Queue的方式进行处理了

Topic模式只对在线的消费者发送消息,
Queue队列模式后面再上线也会接收到之前的消息

对于这种点对点的发送方式而言,一旦服务器中的消息被相应的消费者消费后,对应的消息就会立刻被移出消息队列。

对于发布订阅式的通信模式而言,消费者必须先于生产者而启动,否者的话,消费者是接收不到相应的消费消息的。


https://www.cnblogs.com/xiohao/p/4835594.html
https://www.cnblogs.com/xiohao/p/4835594.html


https://blog.csdn.net/zhangll_2008/article/details/78657177(分布式消息中间件-Rocketmq)
https://www.cnblogs.com/xiaodf/p/5075167.html(阿里 RocketMQ 安装与简介)



kafka
支持应答
支持分组消费
支持重新消费之前的数据(offect)




消费事务
https://www.cnblogs.com/xuwc/p/9034352.html



//1.发送端,先在同一个事务中把消息放入数据库,发送成功后再把数据库的消息删除或更换状态。(要求数据库事务一致性,路由到同一个库就可以实现了),发送失败就由下一次的发送或后台定时任务进行处理。

2.发送失败,重试N次还是失败,保存到DB,由后台线程进行发送。(这种方式业务会简单一占)
存在问题,逻辑处理了,但消息没有发送就宕机了,所以单库就放到逻辑事务中就可以了,如果多库就要解多库的事务问题(如分到同一个库中),发送后删除。后台找到没发送的重发

https://blog.csdn.net/qq_32020035/article/details/82113751

//接收端,处理与消息去重在同一事务中进行,操作完成再回ACK给MQ,这样就可以保证消息不会被重复消费。

接收端接收到消息时就先向去重表放一条数据,再在事务中做逻辑处理,消息回应放到事务里面,以备失败回滚,同样存在插入了,但逻辑失败

高并发下去重:加上缓存加快去重查询操作


//接收端,
1.查询ID是否在去重表,是不处理。否插入到去重表。
2.执行逻辑处理(执行多次(最好有一定延时)),成功返回MQ的ACK。失败,去重表删除ID(重试多次(最好有一定延时)),成功就退出(不回ACK),删除失败,写消息到日志中(手工进行恢复).
3.2中如果写日志失败也会存在问题,所以如果是重复的就把消息写和另一个日志进行保存.

//接收端,
1.保证去重和逻辑处理在同一个库中进行处理,以消息ID和逻辑处理的ID拼接路由到同一个库实现。(保证去重表与逻辑处理的一致性),这样就可以解决不一致的问题了.



kafka在一台普通的服务器上既可以达到10W/s的吞吐速率



分享到:
评论

相关推荐

    Websphere MQ应用架构以及性能调优和测试

    Websphere MQ应用架构以及性能调优和测试,IBM内部保密资料。

    WebSphere MQ应用经验介绍.ppt

    WebSphere MQ应用经验介绍.pptWebSphere MQ应用经验介绍.pptWebSphere MQ应用经验介绍.pptWebSphere MQ应用经验介绍.ppt

    IBM MQ应用编程指南

    《IBM MQ应用编程指南》是一本面向开发人员的详尽参考资料,旨在帮助读者掌握如何使用各种编程语言与IBM MQ进行交互,实现高效、稳定的消息传递。IBM MQ是业界广泛采用的企业级消息中间件,它提供了可靠的异步通信...

    WebSphere MQ应用经验介绍

    有关MQ很好的范例教程,该文档是有关MQ应用的实例讲解

    Java下操作IBM Websphere MQ的项目案例

    IBM MQ支持各种接口,包括Java Message Service (JMS) API,使得Java开发者可以轻松地集成MQ功能。 在这个项目案例中,你将接触到以下Java与IBM MQ交互的关键知识点: 1. **IBM MQ Java API**:IBM提供了JMS API的...

    MQ 简单的应用培训

    ### Websphere MQ 简单的应用培训 #### 1. Websphere MQ 原理 ##### 1-1. 什么是中间件 中间件是位于应用软件和系统软件之间的一种可复用基础软件,它的主要作用是通过自身的复杂性来换取应用软件的简化。中间件...

    IBM WebSphere MQ入门教程.pdf

    WebSphere MQ 可以应用于各种需要异步通信的场景,例如: * 订单处理系统:WebSphere MQ 可以用于订单处理系统,实现订单的异步处理。 * 支付系统:WebSphere MQ 可以用于支付系统,实现支付的异步处理。 * 论坛...

    mq.rar_MQ_ibm mq 实例代码_ibm mq 文件传输_ibm mqput怎么用_put

    总的来说,IBM MQ提供了一套强大且灵活的消息传递机制,适用于各种企业级应用。通过`mqput`命令和相应的API,开发人员可以轻松地实现在不同系统间的数据交换,确保了系统的稳定性和效率。理解并熟练运用这些工具和...

    MQ应用入门+-+DeluxWorld的专栏+-+2018版

    《MQ应用入门》是DeluxWorld专栏在2018年发布的一份针对IBM MQ初学者的教程资源,旨在帮助那些刚开始接触MQ6.X或7.X版本的开发者快速熟悉并掌握消息队列(MQ)的基本概念和开发技巧,避免在学习过程中迷失方向。...

    WebSphere+MQ应用经验介绍.ppt

    WebSphere+MQ应用经验介绍.ppt

    MQ135.rar_MQ135程序_mq135_mq135测试C02_mq135空气质量传感器_空气质量检测

    MQ135是一款广泛应用在空气质量检测领域的气体传感器,主要用于探测环境中的有害气体,如二氧化硫、氨气、一氧化碳、酒精以及烟雾等。它以其成本效益高、响应速度快和稳定性好等特点,在家庭、办公室、工厂等环境的...

    IBM_MQ下载

    描述中的“IBM webSphere Mq应用jar包集合”是指IBM MQ提供的Java开发包,这些JAR文件包含了开发和运行与MQ交互的Java应用程序所需的类和资源。这些库使得开发者能够在Java环境中编写代码,以便发送、接收和管理MQ...

    mq客户端安装包7.5.0.3

    客户端包含了所有必要的库和工具,使得开发人员可以在各种操作系统平台上构建MQ应用,如Windows、Linux、Unix等。 2. **版本7.5.0.3**:这是MQ客户端的一个特定版本,每个版本可能包含性能优化、新功能、安全修复或...

    Websphere MQ资料集合(包含精通mq、mq java编程、mq编程模式、mq for linux等)

    5. **MQ编程模式**:探索各种MQ编程模式,如同步和异步消息处理,以及如何设计高效、健壮的MQ应用。 6. **故障排查与性能优化**:学习如何诊断MQ相关的问题,以及如何调整MQ配置以提高性能和可扩展性。 7. **安全...

    Websphere MQ实现应用程序通信

    ### Websphere MQ 实现应用程序通信详解 #### 一、概述 IBM WebSphere MQ(简称WMQ)是一种消息中间件,用于实现不同应用程序之间的通信。它支持多种平台和语言,能够在分布式环境中提供可靠的消息传递服务。本文将...

    MQ-7一氧化碳传感器模块资料+软件测试工程源码.zip

    MQ-7一氧化碳传感器模块是一款广泛应用于环境监测和安全报警系统的传感器,尤其适用于检测一氧化碳(CO)这种有毒气体。这款传感器模块的核心是MQ-7传感器,它能够通过化学反应来感知环境中一氧化碳的浓度,并将其...

    IBM WebSphere MQ 安装包

    作为MQ系列产品的基石,WebSphere MQ为不同系统间的通信提供了强大的支持,确保了企业应用之间的稳定、高性能和可靠的通讯。 1. **消息中间件概念**:消息中间件是连接分布式系统的一种软件,它通过消息队列进行...

    JAVA IBM MQ 接收、发送

    JMS是Java平台上的一个标准接口,用于访问各种消息中间件,包括IBM MQ。在IBM MQ中,JMS被封装在com.ibm.mq.allclient.jar库中,我们需要将其添加到项目依赖中。 发送消息到IBM MQ的步骤如下: 1. **初始化...

    IBM MQ Explore windows下安装包

    IBM MQ Explore是一款强大的工具,专为管理IBM WebSphere MQ(以前称为IBM Message Queuing或IBM MQ)环境而设计。...确保遵循正确的安装步骤,并充分利用其提供的各种管理选项,以优化IBM MQ的运行效率和稳定性。

Global site tag (gtag.js) - Google Analytics