首页 文章 精选 留言 我的

精选列表

搜索[rocketmq],共1401篇文章
优秀的个人博客,低调大师

RocketMQ概念详细之Consumer

消费者组和订阅 首先你应该关心的是不同的消费者群组可以独立的消费相同的主题,并且每个组都拥有自己的消费偏移量。请确保相同消费者内的每个消费者订阅一样的主题。 消息监听器 串行消费者将锁定每个消息队列以确保它被顺序消费。这会引起性能丢失,但当你关心消息顺序的实时这是很有用的。不推荐抛异常,你可以用返回ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT 替代。 并行正如名字所说,消息者将会并行消费消息。为了好的性能推荐使用。不推荐抛异常,你可以使用返回ConsumeConcurrentlyStatus.RECONSUME_LATER 代替。 消费状态 对于MessageListenerConcurrently,你可以返回 RECONSUME_LATER 来告诉消费者,你现在不能马上消费并且想在稍后重新消费。然后你可以继续消费其他消息。对于MessageListenerOrderly,因为你关心顺序,你不能跳过消息,但你可以返回SUSPEND_CURRENT_QUEUE_A_MOMENT 来告诉消费者等待一会。 阻塞 不建议阻塞监听器,因为它会阻塞线程池,最后使消费进程停止。 线程数量 消费者内部使用ThreadPoolExecutor来处理消费,因此你通过设置setConsumeThreadMin 或setConsumeThreadMax 可以改变它。 从哪开始消费 当创建一个新的消费者组,需要决定它是否需要消费在broker中已经存在的历史消息。CONSUME_FROM_LAST_OFFSET 将会忽略历史消息,消费所有的之后产生的消息。CONSUME_FROM_FIRST_OFFSET 将会消费Broker中存在的每一个消息。CONSUME_FROM_TIMESTAMP ,消费指定时间戳之后产生的消息。 重复 很多情况下都会引起重复,例如: Producer重发消息(FLUSH_SLAVE_TIMEOUT情况) Consumer 关闭,一些偏移量未及时更新到Broker 如果你的应用不能容忍重复的话,你可能需要做一些额外的工作来处理。例如,你可以检查DB的唯一主键。

优秀的个人博客,低调大师

RocketMQ概念详细之Producer

发送状态 当你发送一个消息,你将会获得包含SendStatus的SendResult。首先,我们假设消息 isWaitStoreMsgOK=true(默认true)。如果没有,我们会得到 SEND_OK,没有异常抛出的话。下面是每个状态的描述列表: FLUSH_DISK_TIMEOUT 如果broker设置 MessageStoreConfig’s 的 FlushDiskType=SYNC_FLUSH(默认ASYNC_FLUSH),在MessageStoreConfig’s 的syncFlushTimeoutbroker(默认5秒)内没有完成刷盘,你会获得此状态。 FLUSH_SLAVE_TIMEOUT 如果broker的角色是SYNC_MASTER(默认ASYNC_MASTER),在MessageStoreConfig’s 的syncFlushTimeoutbroker(默认5秒)内从Broker没有完成与主同步,你会获得此状态。 SLAVE_NOT_AVAILABLE 如果broker的角色是SYNC_MASTER(默认ASYNC_MASTER),但是配置的从Broker不存在,你会获得此状态。 SEND_OK SEND_OK也不意味着可靠。为了确保没有消息丢失,还应该启用 SYNC_MASTER或SYNC_FLUSH。 Duplication or Missing 如果得到FLUSH_DISK_TIMEOUT、FLUSH_SLAVE_TIMEOUT 和Broker正好关闭,你可以发现消息丢失。此时,你有两种选择,一个是放手可能引起消息丢失;另一个是重发消息,可能会使消息重复。通常我们建议重发和寻找一种方式处理消费时的重复删除。除非你感觉丢失的消息不重要。但请记住,当SLAVE_NOT_AVAILABLE时,重发时无用的。如果发生,你应该保留场景同时警告集群管理者。 超时 客户端发送请求到broker,然后等待响应,但如果等待时间过久且没有响应返回,客户端将会抛出RemotingTimeoutException异常。默认等待时间3秒。你可以使用send(msg, timeout) 代替 send(msg)传递超时参数。我们不建议等待时间太短,因为broker需要时间刷盘或与从同步。如果该值超过syncFlushTimeout,则该值可能影响不大,因为Broker可能会在超时之前返回FLUSH_SLAVE_TIMEOUT或FLUSH_SLAVE_TIMEOUT的响应。 消息大小 建议消息的大小不能超过512k。 异步发送 默认send(msg) 将会阻塞,直到响应返回。因此如果你关系性能,我们建议使用 send(msg, callback)以异步方式执行。 生产者群组 通常,生产者群组没有任何效果。但是如果你涉及事务,你应该注意。默认情况下,你只需要在同一个JVM上创建一个具有相同群组的生产者,就足够啦。 线程安全 生产者是线程安全的,你可以在业务解决方案中使用。 性能 如果在一个JVM上你需要多个producer用于大数据处理,我们建议: 这些(3~5够用)生产者使用异步发送 每个生产者设置实例名称

优秀的个人博客,低调大师

RocketMQ概念详细之broker

生产者角色 Broker的角色有ASYNC_MASTER,SYNC_MASTER 或SLAVE。如果不能容忍消息丢失,我们建议你部署SYNC_MASTER并为其附加SLAVE。如果消息丢失影响不大,但需要Broker一直可用,你可以使用SLAVE部署ASYNC_MASTER。如果仅想简单,你可能只需要一个没有SLAVE的ASYNC_MASTER。 刷盘类型 推荐异步刷盘,同步刷盘太昂贵且会引起大量性能下降。如果需要可靠性,推荐使用带有SLAVE的SYNC_MASTER 。 后续待完成

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册