# RocketMq **Repository Path**: Hinsss/RocketMq ## Basic Information - **Project Name**: RocketMq - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-02-21 - **Last Updated**: 2025-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RocketMq - Producer:消息的发送者;举例:发信者 - Consumer:消息接收者;举例:收信者 - Broker:暂存和传输消息;举例:邮局 - NameServer:管理Broker;举例:各个邮局的管理机构 - Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息 - Message Queue:相当于是Topic的分区;用于并行发送和接收消息 Broker向Nameserver注册topic,producer从namesrver获取topic,进而向关联broker发送消息 Broker支持通过tag过滤, 通过将需要顺序的消息发送到同一个queue里保证顺序消息的功能 要是消费者出现消费失败必然会重试消息,然而这时如果是先操作数据库后再出错,这种重复消费不可取, 生产者会有一个key的唯一值,可利用起来作为该消息的唯一值,然后消费的时候,操作完数据库后将该key值 写入缓存即可避免重复消费一些数据,实现幂等性消费 rocketmq生产者发送消息可以发到很多个队列,然后消费者拉去各个队列消息进行消费,rabbitmq则是一个消费者只会绑定一个队列 rocketmq 使用集群模式的时候要注意,不能用tags区分来消费,这样生产者就算根据tags发送消息, 但是可能会没有分配到具体的消费者,这样会消息丢失且没有消费成功,同一个集群下的消费者消费逻辑必须完全一致(包括 Tag 的使用) 集群消费模式下,每一条消息都只会被分发到一台机器上处理。如果需要被集群下的每一台机器都处理,请使用广播模式。 集群消费模式下,不保证每一次失败重投的消息路由到同一台机器上,所有不要消费者逻辑不一样 广播模式下,消息队列 RocketMQ 版保证每条消息至少被每台客户端消费一次,但是并不会重投消费失败的消息,因此业务方需要关注消费失败的情况。 rocketmq 的 ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT 队列挂起并不会真的挂起,而是不断重试消息 #### 安装 在linux安装rocketmq,下载网址 http://rocketmq.apache.org/,具体安装自行查阅 启动NameServer命令:nohup sh mqnamesrv & 启动Broker命令:nohup sh mqbroker -n localhost:9876 -c ../conf/broker.conf & 如果出现连接失败可尝试 https://blog.csdn.net/qq_14853889/article/details/81053145?utm_source=distribute.pc_relevant.none-task 要想可视化观察动态mq一些动态,消息轨迹,可启动rocketmq的控制台,下载网址 https://github.com/apache/rocketmq-externals 里面有个rocketmq-console文件夹直接导入连接rocketmq启动