实例介绍
Apache RocketMQ是一个分布式消息和流平台,具有低延迟、高性能和可靠性,万亿级容量和灵活的可扩展性。它提供多种功能:消息模式包括发布/订阅、请求/回复和流式处理;金融级事务消息;内置容错和基于DLedger Controller的高可用性配置选项;内置消息跟踪能力,也支持opentracing;多样的大数据和流处理生态系统集成;按时间或偏移量进行消息追溯;同一队列中可靠的FIFO和严格有序的消息传递;高效的拉取和推送消费模型;单个队列中百万级消息累积容量;多种消息协议如gRPC、MQTT、JMS和OpenMessaging;灵活的分布式扩展部署架构;快速的批量消息交换系统;各种消息过滤机制,如SQL和Tag;用于隔离测试和云隔离集群的Docker镜像;功能丰富的管理仪表板用于配置、指标和监控;认证和授权;免费开源连接器,用于源和汇;轻量级实时计算。
【实例截图】【核心代码】
文件清单
└── rocketmq-281a7b32f002019525cfa4dd4a4b983b653f070d
├── acl
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── acl
│ │ ├── AccessResource.java
│ │ ├── AccessValidator.java
│ │ ├── common
│ │ │ ├── AclClientRPCHook.java
│ │ │ ├── AclConstants.java
│ │ │ ├── AclException.java
│ │ │ ├── AclSigner.java
│ │ │ ├── AclUtils.java
│ │ │ ├── AuthenticationHeader.java
│ │ │ ├── AuthorizationHeader.java
│ │ │ ├── Permission.java
│ │ │ ├── SessionCredentials.java
│ │ │ └── SigningAlgorithm.java
│ │ ├── PermissionChecker.java
│ │ └── plain
│ │ ├── PlainAccessData.java
│ │ ├── PlainAccessResource.java
│ │ ├── PlainAccessValidator.java
│ │ ├── PlainPermissionChecker.java
│ │ ├── PlainPermissionManager.java
│ │ ├── RemoteAddressStrategyFactory.java
│ │ └── RemoteAddressStrategy.java
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── acl
│ │ ├── common
│ │ │ ├── AclClientRPCHookTest.java
│ │ │ ├── AclSignerTest.java
│ │ │ ├── AclUtilsTest.java
│ │ │ ├── PermissionTest.java
│ │ │ └── SessionCredentialsTest.java
│ │ ├── plain
│ │ │ ├── AclTestHelper.java
│ │ │ ├── PlainAccessControlFlowTest.java
│ │ │ ├── PlainAccessValidatorTest.java
│ │ │ ├── PlainPermissionManagerTest.java
│ │ │ └── RemoteAddressStrategyTest.java
│ │ └── RemotingClientAccessTest.java
│ └── resources
│ ├── access_acl_conf
│ │ └── acl
│ │ └── plain_acl.yml
│ ├── both_acl_file_folder_conf
│ │ └── conf
│ │ ├── acl
│ │ │ └── plain_acl.yml
│ │ └── plain_acl.yml
│ ├── conf
│ │ ├── acl
│ │ │ └── plain_acl.yml
│ │ ├── plain_acl_bak.yml
│ │ ├── plain_acl_correct.yml
│ │ ├── plain_acl_delete.yml
│ │ ├── plain_acl_global_white_addrs.yml
│ │ ├── plain_acl_incomplete.yml
│ │ ├── plain_acl_update_create.yml
│ │ ├── plain_acl_with_no_accouts.yml
│ │ ├── plain_acl.yml
│ │ └── watch
│ │ └── plain_acl_watch.yml
│ ├── empty_acl_folder_conf
│ │ └── conf
│ │ └── plain_acl.yml
│ ├── only_acl_folder_conf
│ │ └── conf
│ │ └── acl
│ │ └── plain_acl.yml
│ ├── rmq.logback-test.xml
│ └── update_global_white_addr
│ └── conf
│ ├── acl
│ │ ├── empty.yml
│ │ └── plain_acl.yml
│ └── plain_acl.yml
├── bazel
│ ├── BUILD.bazel
│ └── GenTestRules.bzl
├── broker
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── rocketmq
│ │ │ └── broker
│ │ │ ├── BrokerController.java
│ │ │ ├── BrokerPathConfigHelper.java
│ │ │ ├── BrokerPreOnlineService.java
│ │ │ ├── BrokerStartup.java
│ │ │ ├── client
│ │ │ │ ├── ClientChannelInfo.java
│ │ │ │ ├── ClientHousekeepingService.java
│ │ │ │ ├── ConsumerGroupEvent.java
│ │ │ │ ├── ConsumerGroupInfo.java
│ │ │ │ ├── ConsumerIdsChangeListener.java
│ │ │ │ ├── ConsumerManager.java
│ │ │ │ ├── DefaultConsumerIdsChangeListener.java
│ │ │ │ ├── net
│ │ │ │ │ └── Broker2Client.java
│ │ │ │ ├── ProducerChangeListener.java
│ │ │ │ ├── ProducerGroupEvent.java
│ │ │ │ ├── ProducerManager.java
│ │ │ │ └── rebalance
│ │ │ │ └── RebalanceLockManager.java
│ │ │ ├── coldctr
│ │ │ │ ├── ColdCtrStrategy.java
│ │ │ │ ├── ColdDataCgCtrService.java
│ │ │ │ ├── ColdDataPullRequestHoldService.java
│ │ │ │ ├── PIDAdaptiveColdCtrStrategy.java
│ │ │ │ └── SimpleColdCtrStrategy.java
│ │ │ ├── controller
│ │ │ │ └── ReplicasManager.java
│ │ │ ├── dledger
│ │ │ │ └── DLedgerRoleChangeHandler.java
│ │ │ ├── failover
│ │ │ │ └── EscapeBridge.java
│ │ │ ├── filter
│ │ │ │ ├── CommitLogDispatcherCalcBitMap.java
│ │ │ │ ├── ConsumerFilterData.java
│ │ │ │ ├── ConsumerFilterManager.java
│ │ │ │ ├── ExpressionForRetryMessageFilter.java
│ │ │ │ ├── ExpressionMessageFilter.java
│ │ │ │ └── MessageEvaluationContext.java
│ │ │ ├── latency
│ │ │ │ └── BrokerFastFailure.java
│ │ │ ├── loadbalance
│ │ │ │ └── MessageRequestModeManager.java
│ │ │ ├── longpolling
│ │ │ │ ├── LmqPullRequestHoldService.java
│ │ │ │ ├── ManyPullRequest.java
│ │ │ │ ├── NotificationRequest.java
│ │ │ │ ├── NotifyMessageArrivingListener.java
│ │ │ │ ├── PollingHeader.java
│ │ │ │ ├── PollingResult.java
│ │ │ │ ├── PopLongPollingService.java
│ │ │ │ ├── PopRequest.java
│ │ │ │ ├── PullRequestHoldService.java
│ │ │ │ └── PullRequest.java
│ │ │ ├── metrics
│ │ │ │ ├── BrokerMetricsConstant.java
│ │ │ │ ├── BrokerMetricsManager.java
│ │ │ │ ├── ConsumerAttr.java
│ │ │ │ ├── ConsumerLagCalculator.java
│ │ │ │ ├── PopMetricsConstant.java
│ │ │ │ ├── PopMetricsManager.java
│ │ │ │ ├── PopReviveMessageType.java
│ │ │ │ └── ProducerAttr.java
│ │ │ ├── mqtrace
│ │ │ │ ├── ConsumeMessageContext.java
│ │ │ │ ├── ConsumeMessageHook.java
│ │ │ │ ├── SendMessageContext.java
│ │ │ │ └── SendMessageHook.java
│ │ │ ├── offset
│ │ │ │ ├── BroadcastOffsetManager.java
│ │ │ │ ├── BroadcastOffsetStore.java
│ │ │ │ ├── ConsumerOffsetManager.java
│ │ │ │ ├── ConsumerOrderInfoLockManager.java
│ │ │ │ ├── ConsumerOrderInfoManager.java
│ │ │ │ ├── LmqConsumerOffsetManager.java
│ │ │ │ ├── RocksDBConsumerOffsetManager.java
│ │ │ │ ├── RocksDBLmqConsumerOffsetManager.java
│ │ │ │ └── RocksDBOffsetSerializeWrapper.java
│ │ │ ├── out
│ │ │ │ └── BrokerOuterAPI.java
│ │ │ ├── pagecache
│ │ │ │ ├── ManyMessageTransfer.java
│ │ │ │ ├── OneMessageTransfer.java
│ │ │ │ └── QueryMessageTransfer.java
│ │ │ ├── plugin
│ │ │ │ ├── BrokerAttachedPlugin.java
│ │ │ │ └── PullMessageResultHandler.java
│ │ │ ├── processor
│ │ │ │ ├── AbstractSendMessageProcessor.java
│ │ │ │ ├── AckMessageProcessor.java
│ │ │ │ ├── AdminBrokerProcessor.java
│ │ │ │ ├── ChangeInvisibleTimeProcessor.java
│ │ │ │ ├── ClientManageProcessor.java
│ │ │ │ ├── ConsumerManageProcessor.java
│ │ │ │ ├── DefaultPullMessageResultHandler.java
│ │ │ │ ├── EndTransactionProcessor.java
│ │ │ │ ├── NotificationProcessor.java
│ │ │ │ ├── PeekMessageProcessor.java
│ │ │ │ ├── PollingInfoProcessor.java
│ │ │ │ ├── PopBufferMergeService.java
│ │ │ │ ├── PopInflightMessageCounter.java
│ │ │ │ ├── PopMessageProcessor.java
│ │ │ │ ├── PopReviveService.java
│ │ │ │ ├── PullMessageProcessor.java
│ │ │ │ ├── QueryAssignmentProcessor.java
│ │ │ │ ├── QueryMessageProcessor.java
│ │ │ │ ├── ReplyMessageProcessor.java
│ │ │ │ ├── SendMessageCallback.java
│ │ │ │ └── SendMessageProcessor.java
│ │ │ ├── schedule
│ │ │ │ ├── DelayOffsetSerializeWrapper.java
│ │ │ │ └── ScheduleMessageService.java
│ │ │ ├── ShutdownHook.java
│ │ │ ├── slave
│ │ │ │ └── SlaveSynchronize.java
│ │ │ ├── subscription
│ │ │ │ ├── LmqSubscriptionGroupManager.java
│ │ │ │ ├── RocksDBLmqSubscriptionGroupManager.java
│ │ │ │ ├── RocksDBSubscriptionGroupManager.java
│ │ │ │ └── SubscriptionGroupManager.java
│ │ │ ├── topic
│ │ │ │ ├── LmqTopicConfigManager.java
│ │ │ │ ├── RocksDBLmqTopicConfigManager.java
│ │ │ │ ├── RocksDBTopicConfigManager.java
│ │ │ │ ├── TopicConfigManager.java
│ │ │ │ ├── TopicQueueMappingCleanService.java
│ │ │ │ ├── TopicQueueMappingManager.java
│ │ │ │ └── TopicRouteInfoManager.java
│ │ │ ├── transaction
│ │ │ │ ├── AbstractTransactionalMessageCheckListener.java
│ │ │ │ ├── OperationResult.java
│ │ │ │ ├── queue
│ │ │ │ │ ├── DefaultTransactionalMessageCheckListener.java
│ │ │ │ │ ├── GetResult.java
│ │ │ │ │ ├── MessageQueueOpContext.java
│ │ │ │ │ ├── TransactionalMessageBridge.java
│ │ │ │ │ ├── TransactionalMessageServiceImpl.java
│ │ │ │ │ ├── TransactionalMessageUtil.java
│ │ │ │ │ └── TransactionalOpBatchService.java
│ │ │ │ ├── TransactionalMessageCheckService.java
│ │ │ │ ├── TransactionalMessageService.java
│ │ │ │ ├── TransactionMetricsFlushService.java
│ │ │ │ └── TransactionMetrics.java
│ │ │ └── util
│ │ │ ├── HookUtils.java
│ │ │ └── PositiveAtomicCounter.java
│ │ └── resources
│ │ ├── rmq.broker.logback.xml
│ │ └── transaction.sql
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── broker
│ │ ├── BrokerControllerTest.java
│ │ ├── BrokerOuterAPITest.java
│ │ ├── BrokerPathConfigHelperTest.java
│ │ ├── BrokerStartupTest.java
│ │ ├── client
│ │ │ ├── ConsumerManagerScannerTest.java
│ │ │ ├── ConsumerManagerTest.java
│ │ │ └── ProducerManagerTest.java
│ │ ├── controller
│ │ │ ├── ReplicasManagerRegisterTest.java
│ │ │ └── ReplicasManagerTest.java
│ │ ├── failover
│ │ │ └── EscapeBridgeTest.java
│ │ ├── filter
│ │ │ ├── CommitLogDispatcherCalcBitMapTest.java
│ │ │ ├── ConsumerFilterManagerTest.java
│ │ │ └── MessageStoreWithFilterTest.java
│ │ ├── latency
│ │ │ └── BrokerFastFailureTest.java
│ │ ├── longpolling
│ │ │ └── PullRequestHoldServiceTest.java
│ │ ├── metrics
│ │ │ └── BrokerMetricsManagerTest.java
│ │ ├── offset
│ │ │ ├── BroadcastOffsetManagerTest.java
│ │ │ ├── BroadcastOffsetStoreTest.java
│ │ │ ├── ConsumerOffsetManagerTest.java
│ │ │ ├── ConsumerOrderInfoManagerLockFreeNotifyTest.java
│ │ │ ├── ConsumerOrderInfoManagerTest.java
│ │ │ ├── LmqConsumerOffsetManagerTest.java
│ │ │ └── RocksDBConsumerOffsetManagerTest.java
│ │ ├── pagecache
│ │ │ ├── ManyMessageTransferTest.java
│ │ │ └── OneMessageTransferTest.java
│ │ ├── processor
│ │ │ ├── AckMessageProcessorTest.java
│ │ │ ├── AdminBrokerProcessorTest.java
│ │ │ ├── ChangeInvisibleTimeProcessorTest.java
│ │ │ ├── ClientManageProcessorTest.java
│ │ │ ├── ConsumerManageProcessorTest.java
│ │ │ ├── EndTransactionProcessorTest.java
│ │ │ ├── PopBufferMergeServiceTest.java
│ │ │ ├── PopInflightMessageCounterTest.java
│ │ │ ├── PopMessageProcessorTest.java
│ │ │ ├── PopReviveServiceTest.java
│ │ │ ├── PullMessageProcessorTest.java
│ │ │ ├── QueryAssignmentProcessorTest.java
│ │ │ ├── ReplyMessageProcessorTest.java
│ │ │ └── SendMessageProcessorTest.java
│ │ ├── schedule
│ │ │ └── ScheduleMessageServiceTest.java
│ │ ├── subscription
│ │ │ ├── ForbiddenTest.java
│ │ │ └── SubscriptionGroupManagerTest.java
│ │ ├── topic
│ │ │ ├── RocksdbTopicConfigManagerTest.java
│ │ │ ├── TopicConfigManagerTest.java
│ │ │ └── TopicQueueMappingManagerTest.java
│ │ ├── transaction
│ │ │ └── queue
│ │ │ ├── DefaultTransactionalMessageCheckListenerTest.java
│ │ │ ├── TransactionalMessageBridgeTest.java
│ │ │ ├── TransactionalMessageServiceImplTest.java
│ │ │ ├── TransactionalMessageUtilTest.java
│ │ │ └── TransactionMetricsTest.java
│ │ └── util
│ │ ├── HookUtilsTest.java
│ │ ├── LogTransactionalMessageCheckListener.java
│ │ ├── ServiceProviderTest.java
│ │ └── TransactionalMessageServiceImpl.java
│ └── resources
│ ├── META-INF
│ │ └── service
│ │ ├── org.apache.rocketmq.acl.AccessValidator
│ │ ├── org.apache.rocketmq.broker.transaction.AbstractTransactionalMessageCheckListener
│ │ └── org.apache.rocketmq.broker.transaction.TransactionalMessageService
│ └── rmq.logback-test.xml
├── BUILD.bazel
├── BUILDING
├── client
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── rocketmq
│ │ │ └── client
│ │ │ ├── AccessChannel.java
│ │ │ ├── admin
│ │ │ │ └── MQAdminExtInner.java
│ │ │ ├── ClientConfig.java
│ │ │ ├── common
│ │ │ │ ├── ClientErrorCode.java
│ │ │ │ ├── NameserverAccessConfig.java
│ │ │ │ └── ThreadLocalIndex.java
│ │ │ ├── consumer
│ │ │ │ ├── AckCallback.java
│ │ │ │ ├── AckResult.java
│ │ │ │ ├── AckStatus.java
│ │ │ │ ├── AllocateMessageQueueStrategy.java
│ │ │ │ ├── DefaultLitePullConsumer.java
│ │ │ │ ├── DefaultMQPullConsumer.java
│ │ │ │ ├── DefaultMQPushConsumer.java
│ │ │ │ ├── listener
│ │ │ │ │ ├── ConsumeConcurrentlyContext.java
│ │ │ │ │ ├── ConsumeConcurrentlyStatus.java
│ │ │ │ │ ├── ConsumeOrderlyContext.java
│ │ │ │ │ ├── ConsumeOrderlyStatus.java
│ │ │ │ │ ├── ConsumeReturnType.java
│ │ │ │ │ ├── MessageListenerConcurrently.java
│ │ │ │ │ ├── MessageListener.java
│ │ │ │ │ └── MessageListenerOrderly.java
│ │ │ │ ├── LitePullConsumer.java
│ │ │ │ ├── MessageQueueListener.java
│ │ │ │ ├── MessageSelector.java
│ │ │ │ ├── MQConsumer.java
│ │ │ │ ├── MQPullConsumer.java
│ │ │ │ ├── MQPullConsumerScheduleService.java
│ │ │ │ ├── MQPushConsumer.java
│ │ │ │ ├── PopCallback.java
│ │ │ │ ├── PopResult.java
│ │ │ │ ├── PopStatus.java
│ │ │ │ ├── PullCallback.java
│ │ │ │ ├── PullResult.java
│ │ │ │ ├── PullStatus.java
│ │ │ │ ├── PullTaskCallback.java
│ │ │ │ ├── PullTaskContext.java
│ │ │ │ ├── rebalance
│ │ │ │ │ ├── AbstractAllocateMessageQueueStrategy.java
│ │ │ │ │ ├── AllocateMachineRoomNearby.java
│ │ │ │ │ ├── AllocateMessageQueueAveragelyByCircle.java
│ │ │ │ │ ├── AllocateMessageQueueAveragely.java
│ │ │ │ │ ├── AllocateMessageQueueByConfig.java
│ │ │ │ │ ├── AllocateMessageQueueByMachineRoom.java
│ │ │ │ │ └── AllocateMessageQueueConsistentHash.java
│ │ │ │ ├── store
│ │ │ │ │ ├── ControllableOffset.java
│ │ │ │ │ ├── LocalFileOffsetStore.java
│ │ │ │ │ ├── OffsetSerializeWrapper.java
│ │ │ │ │ ├── OffsetStore.java
│ │ │ │ │ ├── ReadOffsetType.java
│ │ │ │ │ └── RemoteBrokerOffsetStore.java
│ │ │ │ └── TopicMessageQueueChangeListener.java
│ │ │ ├── exception
│ │ │ │ ├── MQBrokerException.java
│ │ │ │ ├── MQClientException.java
│ │ │ │ ├── OffsetNotFoundException.java
│ │ │ │ └── RequestTimeoutException.java
│ │ │ ├── hook
│ │ │ │ ├── CheckForbiddenContext.java
│ │ │ │ ├── CheckForbiddenHook.java
│ │ │ │ ├── ConsumeMessageContext.java
│ │ │ │ ├── ConsumeMessageHook.java
│ │ │ │ ├── EndTransactionContext.java
│ │ │ │ ├── EndTransactionHook.java
│ │ │ │ ├── FilterMessageContext.java
│ │ │ │ ├── FilterMessageHook.java
│ │ │ │ ├── SendMessageContext.java
│ │ │ │ └── SendMessageHook.java
│ │ │ ├── impl
│ │ │ │ ├── admin
│ │ │ │ │ └── MqClientAdminImpl.java
│ │ │ │ ├── ClientRemotingProcessor.java
│ │ │ │ ├── CommunicationMode.java
│ │ │ │ ├── consumer
│ │ │ │ │ ├── AssignedMessageQueue.java
│ │ │ │ │ ├── ConsumeMessageConcurrentlyService.java
│ │ │ │ │ ├── ConsumeMessageOrderlyService.java
│ │ │ │ │ ├── ConsumeMessagePopConcurrentlyService.java
│ │ │ │ │ ├── ConsumeMessagePopOrderlyService.java
│ │ │ │ │ ├── ConsumeMessageService.java
│ │ │ │ │ ├── DefaultLitePullConsumerImpl.java
│ │ │ │ │ ├── DefaultMQPullConsumerImpl.java
│ │ │ │ │ ├── DefaultMQPushConsumerImpl.java
│ │ │ │ │ ├── MessageQueueLock.java
│ │ │ │ │ ├── MessageRequest.java
│ │ │ │ │ ├── MQConsumerInner.java
│ │ │ │ │ ├── PopProcessQueue.java
│ │ │ │ │ ├── PopRequest.java
│ │ │ │ │ ├── ProcessQueue.java
│ │ │ │ │ ├── PullAPIWrapper.java
│ │ │ │ │ ├── PullMessageService.java
│ │ │ │ │ ├── PullRequest.java
│ │ │ │ │ ├── PullResultExt.java
│ │ │ │ │ ├── RebalanceImpl.java
│ │ │ │ │ ├── RebalanceLitePullImpl.java
│ │ │ │ │ ├── RebalancePullImpl.java
│ │ │ │ │ ├── RebalancePushImpl.java
│ │ │ │ │ └── RebalanceService.java
│ │ │ │ ├── factory
│ │ │ │ │ └── MQClientInstance.java
│ │ │ │ ├── FindBrokerResult.java
│ │ │ │ ├── MQAdminImpl.java
│ │ │ │ ├── mqclient
│ │ │ │ │ ├── DoNothingClientRemotingProcessor.java
│ │ │ │ │ ├── MQClientAPIExt.java
│ │ │ │ │ └── MQClientAPIFactory.java
│ │ │ │ ├── MQClientAPIImpl.java
│ │ │ │ ├── MQClientManager.java
│ │ │ │ └── producer
│ │ │ │ ├── DefaultMQProducerImpl.java
│ │ │ │ ├── MQProducerInner.java
│ │ │ │ └── TopicPublishInfo.java
│ │ │ ├── latency
│ │ │ │ ├── LatencyFaultToleranceImpl.java
│ │ │ │ ├── LatencyFaultTolerance.java
│ │ │ │ ├── MQFaultStrategy.java
│ │ │ │ ├── Resolver.java
│ │ │ │ └── ServiceDetector.java
│ │ │ ├── MQAdmin.java
│ │ │ ├── MqClientAdmin.java
│ │ │ ├── MQHelper.java
│ │ │ ├── producer
│ │ │ │ ├── DefaultMQProducer.java
│ │ │ │ ├── LocalTransactionState.java
│ │ │ │ ├── MessageQueueSelector.java
│ │ │ │ ├── MQProducer.java
│ │ │ │ ├── ProduceAccumulator.java
│ │ │ │ ├── RequestCallback.java
│ │ │ │ ├── RequestFutureHolder.java
│ │ │ │ ├── RequestResponseFuture.java
│ │ │ │ ├── selector
│ │ │ │ │ ├── SelectMessageQueueByHash.java
│ │ │ │ │ ├── SelectMessageQueueByMachineRoom.java
│ │ │ │ │ └── SelectMessageQueueByRandom.java
│ │ │ │ ├── SendCallback.java
│ │ │ │ ├── SendResult.java
│ │ │ │ ├── SendStatus.java
│ │ │ │ ├── TransactionCheckListener.java
│ │ │ │ ├── TransactionListener.java
│ │ │ │ ├── TransactionMQProducer.java
│ │ │ │ └── TransactionSendResult.java
│ │ │ ├── QueryResult.java
│ │ │ ├── rpchook
│ │ │ │ └── NamespaceRpcHook.java
│ │ │ ├── stat
│ │ │ │ └── ConsumerStatsManager.java
│ │ │ ├── trace
│ │ │ │ ├── AsyncTraceDispatcher.java
│ │ │ │ ├── hook
│ │ │ │ │ ├── ConsumeMessageOpenTracingHookImpl.java
│ │ │ │ │ ├── ConsumeMessageTraceHookImpl.java
│ │ │ │ │ ├── EndTransactionOpenTracingHookImpl.java
│ │ │ │ │ ├── EndTransactionTraceHookImpl.java
│ │ │ │ │ ├── SendMessageOpenTracingHookImpl.java
│ │ │ │ │ └── SendMessageTraceHookImpl.java
│ │ │ │ ├── TraceBean.java
│ │ │ │ ├── TraceConstants.java
│ │ │ │ ├── TraceContext.java
│ │ │ │ ├── TraceDataEncoder.java
│ │ │ │ ├── TraceDispatcher.java
│ │ │ │ ├── TraceDispatcherType.java
│ │ │ │ ├── TraceTransferBean.java
│ │ │ │ ├── TraceType.java
│ │ │ │ └── TraceView.java
│ │ │ ├── utils
│ │ │ │ └── MessageUtil.java
│ │ │ └── Validators.java
│ │ └── resources
│ │ └── rmq.client.logback.xml
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── client
│ │ ├── common
│ │ │ └── ThreadLocalIndexTest.java
│ │ ├── consumer
│ │ │ ├── DefaultLitePullConsumerTest.java
│ │ │ ├── DefaultMQPullConsumerTest.java
│ │ │ ├── DefaultMQPushConsumerTest.java
│ │ │ ├── rebalance
│ │ │ │ ├── AllocateMachineRoomNearByTest.java
│ │ │ │ ├── AllocateMessageQueueAveragelyByCircleTest.java
│ │ │ │ ├── AllocateMessageQueueAveragelyTest.java
│ │ │ │ ├── AllocateMessageQueueByConfigTest.java
│ │ │ │ ├── AllocateMessageQueueByMachineRoomTest.java
│ │ │ │ └── AllocateMessageQueueConsitentHashTest.java
│ │ │ └── store
│ │ │ ├── LocalFileOffsetStoreTest.java
│ │ │ └── RemoteBrokerOffsetStoreTest.java
│ │ ├── impl
│ │ │ ├── consumer
│ │ │ │ ├── ConsumeMessageConcurrentlyServiceTest.java
│ │ │ │ ├── ConsumeMessageOrderlyServiceTest.java
│ │ │ │ ├── DefaultMQPushConsumerImplTest.java
│ │ │ │ ├── ProcessQueueTest.java
│ │ │ │ ├── RebalanceLitePullImplTest.java
│ │ │ │ └── RebalancePushImplTest.java
│ │ │ ├── factory
│ │ │ │ └── MQClientInstanceTest.java
│ │ │ └── MQClientAPIImplTest.java
│ │ ├── latency
│ │ │ └── LatencyFaultToleranceImplTest.java
│ │ ├── producer
│ │ │ ├── DefaultMQProducerTest.java
│ │ │ ├── ProduceAccumulatorTest.java
│ │ │ ├── RequestResponseFutureTest.java
│ │ │ └── selector
│ │ │ ├── SelectMessageQueueByHashTest.java
│ │ │ └── SelectMessageQueueRetryTest.java
│ │ ├── rpchook
│ │ │ └── NamespaceRpcHookTest.java
│ │ ├── trace
│ │ │ ├── DefaultMQConsumerWithOpenTracingTest.java
│ │ │ ├── DefaultMQConsumerWithTraceTest.java
│ │ │ ├── DefaultMQLitePullConsumerWithTraceTest.java
│ │ │ ├── DefaultMQProducerWithOpenTracingTest.java
│ │ │ ├── DefaultMQProducerWithTraceTest.java
│ │ │ ├── TraceDataEncoderTest.java
│ │ │ ├── TraceViewTest.java
│ │ │ ├── TransactionMQProducerWithOpenTracingTest.java
│ │ │ └── TransactionMQProducerWithTraceTest.java
│ │ ├── utils
│ │ │ └── MessageUtilsTest.java
│ │ └── ValidatorsTest.java
│ └── resources
│ ├── org
│ │ └── powermock
│ │ └── extensions
│ │ └── configuration.properties
│ └── rmq.logback-test.xml
├── common
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── rocketmq
│ │ │ └── common
│ │ │ ├── AbortProcessException.java
│ │ │ ├── AbstractBrokerRunnable.java
│ │ │ ├── AclConfig.java
│ │ │ ├── annotation
│ │ │ │ └── ImportantField.java
│ │ │ ├── attribute
│ │ │ │ ├── Attribute.java
│ │ │ │ ├── AttributeParser.java
│ │ │ │ ├── AttributeUtil.java
│ │ │ │ ├── BooleanAttribute.java
│ │ │ │ ├── CleanupPolicy.java
│ │ │ │ ├── CQType.java
│ │ │ │ ├── EnumAttribute.java
│ │ │ │ ├── LongRangeAttribute.java
│ │ │ │ └── TopicMessageType.java
│ │ │ ├── BoundaryType.java
│ │ │ ├── BrokerConfig.java
│ │ │ ├── BrokerConfigSingleton.java
│ │ │ ├── BrokerIdentity.java
│ │ │ ├── coldctr
│ │ │ │ └── AccAndTimeStamp.java
│ │ │ ├── compression
│ │ │ │ ├── CompressionType.java
│ │ │ │ ├── CompressorFactory.java
│ │ │ │ ├── Compressor.java
│ │ │ │ ├── Lz4Compressor.java
│ │ │ │ ├── ZlibCompressor.java
│ │ │ │ └── ZstdCompressor.java
│ │ │ ├── config
│ │ │ │ ├── AbstractRocksDBStorage.java
│ │ │ │ ├── ConfigRocksDBStorage.java
│ │ │ │ └── RocksDBConfigManager.java
│ │ │ ├── ConfigManager.java
│ │ │ ├── consistenthash
│ │ │ │ ├── ConsistentHashRouter.java
│ │ │ │ ├── HashFunction.java
│ │ │ │ ├── Node.java
│ │ │ │ └── VirtualNode.java
│ │ │ ├── constant
│ │ │ │ ├── ConsumeInitMode.java
│ │ │ │ ├── DBMsgConstants.java
│ │ │ │ ├── FIleReadaheadMode.java
│ │ │ │ ├── HAProxyConstants.java
│ │ │ │ ├── LoggerName.java
│ │ │ │ └── PermName.java
│ │ │ ├── consumer
│ │ │ │ ├── ConsumeFromWhere.java
│ │ │ │ └── ReceiptHandle.java
│ │ │ ├── ControllerConfig.java
│ │ │ ├── CountDownLatch2.java
│ │ │ ├── fastjson
│ │ │ │ └── GenericMapSuperclassDeserializer.java
│ │ │ ├── filter
│ │ │ │ ├── ExpressionType.java
│ │ │ │ ├── FilterContext.java
│ │ │ │ ├── impl
│ │ │ │ │ ├── Operand.java
│ │ │ │ │ ├── Operator.java
│ │ │ │ │ ├── Op.java
│ │ │ │ │ ├── PolishExpr.java
│ │ │ │ │ └── Type.java
│ │ │ │ └── MessageFilter.java
│ │ │ ├── future
│ │ │ │ └── FutureTaskExt.java
│ │ │ ├── help
│ │ │ │ └── FAQUrl.java
│ │ │ ├── hook
│ │ │ │ └── FilterCheckHook.java
│ │ │ ├── JraftConfig.java
│ │ │ ├── KeyBuilder.java
│ │ │ ├── LifecycleAwareServiceThread.java
│ │ │ ├── LockCallback.java
│ │ │ ├── logging
│ │ │ │ ├── DefaultJoranConfiguratorExt.java
│ │ │ │ └── JoranConfiguratorExt.java
│ │ │ ├── message
│ │ │ │ ├── MessageAccessor.java
│ │ │ │ ├── MessageBatch.java
│ │ │ │ ├── MessageClientExt.java
│ │ │ │ ├── MessageClientIDSetter.java
│ │ │ │ ├── MessageConst.java
│ │ │ │ ├── MessageDecoder.java
│ │ │ │ ├── MessageExtBatch.java
│ │ │ │ ├── MessageExtBrokerInner.java
│ │ │ │ ├── MessageExt.java
│ │ │ │ ├── MessageId.java
│ │ │ │ ├── Message.java
│ │ │ │ ├── MessageQueueAssignment.java
│ │ │ │ ├── MessageQueueForC.java
│ │ │ │ ├── MessageQueue.java
│ │ │ │ ├── MessageRequestMode.java
│ │ │ │ ├── MessageType.java
│ │ │ │ └── MessageVersion.java
│ │ │ ├── metrics
│ │ │ │ ├── MetricsExporterType.java
│ │ │ │ ├── NopLongCounter.java
│ │ │ │ ├── NopLongHistogram.java
│ │ │ │ ├── NopLongUpDownCounter.java
│ │ │ │ ├── NopObservableDoubleGauge.java
│ │ │ │ └── NopObservableLongGauge.java
│ │ │ ├── MixAll.java
│ │ │ ├── MQVersion.java
│ │ │ ├── namesrv
│ │ │ │ ├── DefaultTopAddressing.java
│ │ │ │ ├── NameServerUpdateCallback.java
│ │ │ │ ├── NamesrvConfig.java
│ │ │ │ ├── NamesrvUtil.java
│ │ │ │ └── TopAddressing.java
│ │ │ ├── Pair.java
│ │ │ ├── PlainAccessConfig.java
│ │ │ ├── PopAckConstants.java
│ │ │ ├── queue
│ │ │ │ ├── ConcurrentTreeMap.java
│ │ │ │ └── RoundQueue.java
│ │ │ ├── running
│ │ │ │ └── RunningStats.java
│ │ │ ├── ServiceState.java
│ │ │ ├── ServiceThread.java
│ │ │ ├── state
│ │ │ │ └── StateEventListener.java
│ │ │ ├── statistics
│ │ │ │ ├── FutureHolder.java
│ │ │ │ ├── Interceptor.java
│ │ │ │ ├── StatisticsBriefInterceptor.java
│ │ │ │ ├── StatisticsBrief.java
│ │ │ │ ├── StatisticsItemFormatter.java
│ │ │ │ ├── StatisticsItem.java
│ │ │ │ ├── StatisticsItemPrinter.java
│ │ │ │ ├── StatisticsItemScheduledIncrementPrinter.java
│ │ │ │ ├── StatisticsItemScheduledPrinter.java
│ │ │ │ ├── StatisticsItemStateGetter.java
│ │ │ │ ├── StatisticsKindMeta.java
│ │ │ │ └── StatisticsManager.java
│ │ │ ├── stats
│ │ │ │ ├── MomentStatsItem.java
│ │ │ │ ├── MomentStatsItemSet.java
│ │ │ │ ├── RTStatsItem.java
│ │ │ │ ├── StatsItem.java
│ │ │ │ ├── StatsItemSet.java
│ │ │ │ ├── Stats.java
│ │ │ │ └── StatsSnapshot.java
│ │ │ ├── SubscriptionGroupAttributes.java
│ │ │ ├── sysflag
│ │ │ │ ├── MessageSysFlag.java
│ │ │ │ ├── PullSysFlag.java
│ │ │ │ ├── SubscriptionSysFlag.java
│ │ │ │ └── TopicSysFlag.java
│ │ │ ├── SystemClock.java
│ │ │ ├── thread
│ │ │ │ ├── FutureTaskExtThreadPoolExecutor.java
│ │ │ │ ├── ThreadPoolMonitor.java
│ │ │ │ ├── ThreadPoolQueueSizeMonitor.java
│ │ │ │ ├── ThreadPoolStatusMonitor.java
│ │ │ │ └── ThreadPoolWrapper.java
│ │ │ ├── ThreadFactoryImpl.java
│ │ │ ├── topic
│ │ │ │ └── TopicValidator.java
│ │ │ ├── TopicAttributes.java
│ │ │ ├── TopicConfig.java
│ │ │ ├── TopicFilterType.java
│ │ │ ├── TopicQueueId.java
│ │ │ ├── UnlockCallback.java
│ │ │ ├── UtilAll.java
│ │ │ └── utils
│ │ │ ├── AbstractStartAndShutdown.java
│ │ │ ├── BinaryUtil.java
│ │ │ ├── ChannelUtil.java
│ │ │ ├── CheckpointFile.java
│ │ │ ├── CleanupPolicyUtils.java
│ │ │ ├── ConcurrentHashMapUtils.java
│ │ │ ├── CorrelationIdUtil.java
│ │ │ ├── DataConverter.java
│ │ │ ├── FastJsonSerializer.java
│ │ │ ├── HttpTinyClient.java
│ │ │ ├── IOTinyUtils.java
│ │ │ ├── MessageUtils.java
│ │ │ ├── NameServerAddressUtils.java
│ │ │ ├── NetworkUtil.java
│ │ │ ├── PositiveAtomicCounter.java
│ │ │ ├── QueueTypeUtils.java
│ │ │ ├── Serializer.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── Shutdown.java
│ │ │ ├── StartAndShutdown.java
│ │ │ ├── Start.java
│ │ │ └── ThreadUtils.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── org.apache.rocketmq.logging.ch.qos.logback.classic.spi.Configurator
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── common
│ │ ├── attribute
│ │ │ ├── AttributeParserTest.java
│ │ │ └── AttributeTest.java
│ │ ├── BrokerConfigTest.java
│ │ ├── compression
│ │ │ └── CompressionTest.java
│ │ ├── ConfigManagerTest.java
│ │ ├── CountDownLatch2Test.java
│ │ ├── KeyBuilderTest.java
│ │ ├── message
│ │ │ ├── MessageClientIDSetterTest.java
│ │ │ ├── MessageDecoderTest.java
│ │ │ └── MessageTest.java
│ │ ├── MessageBatchTest.java
│ │ ├── MessageEncodeDecodeTest.java
│ │ ├── MessageExtBrokerInnerTest.java
│ │ ├── MixAllTest.java
│ │ ├── MQVersionTest.java
│ │ ├── NetworkUtilTest.java
│ │ ├── ServiceThreadTest.java
│ │ ├── stats
│ │ │ └── StatsItemSetTest.java
│ │ ├── sysflag
│ │ │ ├── CompressionFlagTest.java
│ │ │ └── PullSysFlagTest.java
│ │ ├── topic
│ │ │ └── TopicValidatorTest.java
│ │ ├── TopicConfigTest.java
│ │ ├── UtilAllTest.java
│ │ └── utils
│ │ ├── ConcurrentHashMapUtilsTest.java
│ │ ├── IOTinyUtilsTest.java
│ │ └── NameServerAddressUtilsTest.java
│ └── resources
│ └── rmq.logback-test.xml
├── container
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── container
│ │ ├── BrokerBootHook.java
│ │ ├── BrokerContainerConfig.java
│ │ ├── BrokerContainer.java
│ │ ├── BrokerContainerProcessor.java
│ │ ├── BrokerContainerStartup.java
│ │ ├── ContainerClientHouseKeepingService.java
│ │ ├── IBrokerContainer.java
│ │ ├── InnerBrokerController.java
│ │ ├── InnerSalveBrokerController.java
│ │ └── logback
│ │ └── BrokerLogbackConfigurator.java
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── container
│ │ ├── BrokerContainerStartupTest.java
│ │ ├── BrokerContainerTest.java
│ │ └── BrokerPreOnlineTest.java
│ └── resources
│ └── rmq.logback-test.xml
├── CONTRIBUTING.md
├── controller
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── rocketmq
│ │ │ └── controller
│ │ │ ├── BrokerHeartbeatManager.java
│ │ │ ├── BrokerHousekeepingService.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerManager.java
│ │ │ ├── ControllerStartup.java
│ │ │ ├── elect
│ │ │ │ ├── ElectPolicy.java
│ │ │ │ └── impl
│ │ │ │ └── DefaultElectPolicy.java
│ │ │ ├── helper
│ │ │ │ ├── BrokerLifecycleListener.java
│ │ │ │ ├── BrokerLiveInfoGetter.java
│ │ │ │ └── BrokerValidPredicate.java
│ │ │ ├── impl
│ │ │ │ ├── closure
│ │ │ │ │ └── ControllerClosure.java
│ │ │ │ ├── DLedgerController.java
│ │ │ │ ├── DLedgerControllerStateMachine.java
│ │ │ │ ├── event
│ │ │ │ │ ├── AlterSyncStateSetEvent.java
│ │ │ │ │ ├── ApplyBrokerIdEvent.java
│ │ │ │ │ ├── CleanBrokerDataEvent.java
│ │ │ │ │ ├── ControllerResult.java
│ │ │ │ │ ├── ElectMasterEvent.java
│ │ │ │ │ ├── EventMessage.java
│ │ │ │ │ ├── EventSerializer.java
│ │ │ │ │ ├── EventType.java
│ │ │ │ │ ├── ListEventSerializer.java
│ │ │ │ │ └── UpdateBrokerAddressEvent.java
│ │ │ │ ├── heartbeat
│ │ │ │ │ ├── BrokerIdentityInfo.java
│ │ │ │ │ ├── BrokerLiveInfo.java
│ │ │ │ │ ├── DefaultBrokerHeartbeatManager.java
│ │ │ │ │ └── RaftBrokerHeartBeatManager.java
│ │ │ │ ├── JRaftController.java
│ │ │ │ ├── JRaftControllerStateMachine.java
│ │ │ │ ├── manager
│ │ │ │ │ ├── BrokerReplicaInfo.java
│ │ │ │ │ ├── RaftReplicasInfoManager.java
│ │ │ │ │ ├── ReplicasInfoManager.java
│ │ │ │ │ └── SyncStateInfo.java
│ │ │ │ └── task
│ │ │ │ ├── BrokerCloseChannelRequest.java
│ │ │ │ ├── BrokerCloseChannelResponse.java
│ │ │ │ ├── CheckNotActiveBrokerRequest.java
│ │ │ │ ├── CheckNotActiveBrokerResponse.java
│ │ │ │ ├── GetBrokerLiveInfoRequest.java
│ │ │ │ ├── GetBrokerLiveInfoResponse.java
│ │ │ │ ├── GetSyncStateDataRequest.java
│ │ │ │ ├── RaftBrokerHeartBeatEventRequest.java
│ │ │ │ └── RaftBrokerHeartBeatEventResponse.java
│ │ │ ├── metrics
│ │ │ │ ├── ControllerMetricsConstant.java
│ │ │ │ └── ControllerMetricsManager.java
│ │ │ └── processor
│ │ │ └── ControllerRequestProcessor.java
│ │ └── resources
│ │ └── rmq.controller.logback.xml
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── controller
│ │ ├── ControllerManagerTest.java
│ │ ├── ControllerRequestProcessorTest.java
│ │ ├── ControllerTestBase.java
│ │ └── impl
│ │ ├── DefaultBrokerHeartbeatManagerTest.java
│ │ ├── DLedgerControllerTest.java
│ │ └── manager
│ │ └── ReplicasInfoManagerTest.java
│ └── resources
│ └── rmq.logback-test.xml
├── dev
│ └── merge_rocketmq_pr.py
├── distribution
│ ├── benchmark
│ │ ├── batchproducer.sh
│ │ ├── consumer.sh
│ │ ├── producer.sh
│ │ ├── runclass.sh
│ │ ├── shutdown.sh
│ │ └── tproducer.sh
│ ├── bin
│ │ ├── cachedog.sh
│ │ ├── cleancache.sh
│ │ ├── cleancache.v1.sh
│ │ ├── controller
│ │ │ ├── fast-try.cmd
│ │ │ ├── fast-try-independent-deployment.cmd
│ │ │ ├── fast-try-independent-deployment.sh
│ │ │ ├── fast-try-namesrv-plugin.cmd
│ │ │ ├── fast-try-namesrv-plugin.sh
│ │ │ └── fast-try.sh
│ │ ├── dledger
│ │ │ └── fast-try.sh
│ │ ├── export.sh
│ │ ├── mqadmin
│ │ ├── mqadmin.cmd
│ │ ├── mqbroker
│ │ ├── mqbroker.cmd
│ │ ├── mqbrokercontainer
│ │ ├── mqbroker.numanode0
│ │ ├── mqbroker.numanode1
│ │ ├── mqbroker.numanode2
│ │ ├── mqbroker.numanode3
│ │ ├── mqcontroller
│ │ ├── mqcontroller.cmd
│ │ ├── mqnamesrv
│ │ ├── mqnamesrv.cmd
│ │ ├── mqproxy
│ │ ├── mqproxy.cmd
│ │ ├── mqshutdown
│ │ ├── mqshutdown.cmd
│ │ ├── os.sh
│ │ ├── play.cmd
│ │ ├── play.sh
│ │ ├── README.md
│ │ ├── runbroker.cmd
│ │ ├── runbroker.sh
│ │ ├── runserver.cmd
│ │ ├── runserver.sh
│ │ ├── setcache.sh
│ │ ├── startfsrv.sh
│ │ ├── tools.cmd
│ │ └── tools.sh
│ ├── conf
│ │ ├── 2m-2s-async
│ │ │ ├── broker-a.properties
│ │ │ ├── broker-a-s.properties
│ │ │ ├── broker-b.properties
│ │ │ └── broker-b-s.properties
│ │ ├── 2m-2s-sync
│ │ │ ├── broker-a.properties
│ │ │ ├── broker-a-s.properties
│ │ │ ├── broker-b.properties
│ │ │ └── broker-b-s.properties
│ │ ├── 2m-noslave
│ │ │ ├── broker-a.properties
│ │ │ ├── broker-b.properties
│ │ │ └── broker-trace.properties
│ │ ├── broker.conf
│ │ ├── container
│ │ │ └── 2container-2m-2s
│ │ │ ├── broker-a-in-container1.conf
│ │ │ ├── broker-a-in-container2.conf
│ │ │ ├── broker-b-in-container1.conf
│ │ │ ├── broker-b-in-container2.conf
│ │ │ ├── broker-container1.conf
│ │ │ ├── broker-container2.conf
│ │ │ └── nameserver.conf
│ │ ├── controller
│ │ │ ├── cluster-3n-independent
│ │ │ │ ├── controller-n0.conf
│ │ │ │ ├── controller-n1.conf
│ │ │ │ └── controller-n2.conf
│ │ │ ├── cluster-3n-namesrv-plugin
│ │ │ │ ├── namesrv-n0.conf
│ │ │ │ ├── namesrv-n1.conf
│ │ │ │ └── namesrv-n2.conf
│ │ │ ├── controller-standalone.conf
│ │ │ └── quick-start
│ │ │ ├── broker-n0.conf
│ │ │ ├── broker-n1.conf
│ │ │ └── namesrv.conf
│ │ ├── dledger
│ │ │ ├── broker-n0.conf
│ │ │ ├── broker-n1.conf
│ │ │ └── broker-n2.conf
│ │ ├── plain_acl.yml
│ │ ├── rmq-proxy.json
│ │ └── tools.yml
│ ├── LICENSE-BIN
│ ├── NOTICE-BIN
│ ├── pom.xml
│ ├── release-client.xml
│ └── release.xml
├── docs
│ ├── cn
│ │ ├── acl
│ │ │ ├── RocketMQ_Multiple_ACL_Files_设计.md
│ │ │ └── user_guide.md
│ │ ├── architecture.md
│ │ ├── best_practice.md
│ │ ├── BrokerContainer.md
│ │ ├── client
│ │ │ └── java
│ │ │ ├── API_Reference_DefaultMQProducer.md
│ │ │ └── API_Reference_ DefaultPullConsumer.md
│ │ ├── concept.md
│ │ ├── Configuration_System.md
│ │ ├── Configuration_TLS.md
│ │ ├── controller
│ │ │ ├── deploy.md
│ │ │ ├── design.md
│ │ │ ├── persistent_unique_broker_id.md
│ │ │ └── quick_start.md
│ │ ├── Debug_In_Idea.md
│ │ ├── Deployment.md
│ │ ├── design.md
│ │ ├── dledger
│ │ │ ├── deploy_guide.md
│ │ │ └── quick_start.md
│ │ ├── Example_Batch.md
│ │ ├── Example_Compaction_Topic_cn.md
│ │ ├── Example_CreateTopic.md
│ │ ├── Example_Delay.md
│ │ ├── Example_LMQ.md
│ │ ├── Example_Simple_cn.md
│ │ ├── FAQ.md
│ │ ├── features.md
│ │ ├── image
│ │ │ ├── consumer_reply.png
│ │ │ ├── controller
│ │ │ │ ├── controller_design_1.png
│ │ │ │ ├── controller_design_2.png
│ │ │ │ ├── controller_design_3.png
│ │ │ │ ├── controller_design_4.png
│ │ │ │ ├── controller_design_5.png
│ │ │ │ ├── controller_design_6.png
│ │ │ │ ├── persistent_unique_broker_id
│ │ │ │ │ ├── fail_apply_broker_id.png
│ │ │ │ │ ├── fail_create_metadata_file_and_delete_temp.png
│ │ │ │ │ ├── fail_create_temp_metadata_file.png
│ │ │ │ │ ├── normal_restart.png
│ │ │ │ │ ├── register_process.png
│ │ │ │ │ └── register_state_transfer.png
│ │ │ │ └── quick-start
│ │ │ │ ├── changemaster.png
│ │ │ │ ├── controller.png
│ │ │ │ ├── epoch.png
│ │ │ │ └── syncstateset.png
│ │ │ ├── Idea_config_broker.png
│ │ │ ├── Idea_config_nameserver.png
│ │ │ ├── LMQ_1.png
│ │ │ ├── producer_send_request.png
│ │ │ ├── rocketmq_architecture_1.png
│ │ │ ├── rocketmq_architecture_2.png
│ │ │ ├── rocketmq_architecture_3.png
│ │ │ ├── rocketmq_design_10.png
│ │ │ ├── rocketmq_design_11.png
│ │ │ ├── rocketmq_design_12.png
│ │ │ ├── rocketmq_design_13.png
│ │ │ ├── rocketmq_design_1.png
│ │ │ ├── rocketmq_design_2.png
│ │ │ ├── rocketmq_design_3.png
│ │ │ ├── rocketmq_design_4.png
│ │ │ ├── rocketmq_design_5.png
│ │ │ ├── rocketmq_design_6.png
│ │ │ ├── rocketmq_design_7.png
│ │ │ ├── rocketmq_design_8.png
│ │ │ └── rocketmq_design_9.png
│ │ ├── msg_trace
│ │ │ └── user_guide.md
│ │ ├── operation.md
│ │ ├── proxy
│ │ │ └── deploy_guide.md
│ │ ├── QuorumACK.md
│ │ ├── README.md
│ │ ├── RocketMQ_Example.md
│ │ ├── rpc_request.md
│ │ ├── SlaveActingMasterMode.md
│ │ └── statictopic
│ │ ├── RocketMQ_Static_Topic_Logic_Queue_设计.md
│ │ └── The_Scope_Of_Static_Topic.md
│ └── en
│ ├── acl
│ │ └── Operations_ACL.md
│ ├── architecture.md
│ ├── best_practice.md
│ ├── client
│ │ └── java
│ │ └── API_Reference_DefaultMQProducer.md
│ ├── CLITools.md
│ ├── Concept.md
│ ├── Configuration_Client.md
│ ├── Configuration_System.md
│ ├── Configuration_TLS.md
│ ├── controller
│ │ ├── deploy.md
│ │ ├── design.md
│ │ ├── persistent_unique_broker_id.md
│ │ └── quick_start.md
│ ├── Debug_In_Idea.md
│ ├── Deployment.md
│ ├── Design_Filter.md
│ ├── Design_LoadBlancing.md
│ ├── design.md
│ ├── Design_Query.md
│ ├── Design_Remoting.md
│ ├── Design_Store.md
│ ├── Design_Trancation.md
│ ├── dledger
│ │ ├── deploy_guide.md
│ │ └── quick_start.md
│ ├── Example_Batch.md
│ ├── Example_Compaction_Topic.md
│ ├── Example_CreateTopic.md
│ ├── Example_Delay.md
│ ├── Example_Filter.md
│ ├── Example_OpenMessaging.md
│ ├── Example_Orderly.md
│ ├── Example_Simple.md
│ ├── Example_Transaction.md
│ ├── FAQ.md
│ ├── Feature.md
│ ├── image
│ │ ├── controller
│ │ │ ├── controller_design_1.png
│ │ │ ├── controller_design_2.png
│ │ │ ├── controller_design_3.png
│ │ │ ├── controller_design_4.png
│ │ │ ├── controller_design_5.png
│ │ │ ├── controller_design_6.png
│ │ │ ├── persistent_unique_broker_id
│ │ │ │ ├── fail_apply_broker_id.png
│ │ │ │ ├── fail_create_metadata_file_and_delete_temp.png
│ │ │ │ ├── fail_create_temp_metadata_file.png
│ │ │ │ ├── normal_restart.png
│ │ │ │ ├── register_process.png
│ │ │ │ └── register_state_transfer.png
│ │ │ └── quick-start
│ │ │ ├── changemaster.png
│ │ │ ├── controller.png
│ │ │ ├── epoch.png
│ │ │ └── syncstateset.png
│ │ ├── rocketmq_architecture_1.png
│ │ ├── rocketmq_architecture_2.png
│ │ └── rocketmq_architecture_3.png
│ ├── images
│ │ ├── rocketmq_design_7.png
│ │ ├── rocketmq_design_message_query.png
│ │ ├── rocketmq_proxy_cluster_mode.png
│ │ ├── rocketmq_proxy_local_mode.png
│ │ ├── rocketmq_storage_arch.png
│ │ └── rocketmq_storage_flush.png
│ ├── msg_trace
│ │ └── user_guide.md
│ ├── operation.md
│ ├── Operations_Broker.md
│ ├── Operations_Consumer.md
│ ├── Operations_Producer.md
│ ├── Operations_Trace.md
│ ├── proxy
│ │ └── deploy_guide.md
│ ├── QuorumACK.md
│ ├── README.md
│ ├── RocketMQ_Example.md
│ └── Troubleshoopting.md
├── example
│ ├── pom.xml
│ └── src
│ └── main
│ └── java
│ └── org
│ └── apache
│ └── rocketmq
│ └── example
│ ├── batch
│ │ ├── SimpleBatchProducer.java
│ │ └── SplitBatchProducer.java
│ ├── benchmark
│ │ ├── AclClient.java
│ │ ├── BatchProducer.java
│ │ ├── Consumer.java
│ │ ├── Producer.java
│ │ ├── timer
│ │ │ ├── TimerConsumer.java
│ │ │ └── TimerProducer.java
│ │ └── TransactionProducer.java
│ ├── broadcast
│ │ └── PushConsumer.java
│ ├── filter
│ │ ├── SqlFilterConsumer.java
│ │ ├── SqlFilterProducer.java
│ │ ├── TagFilterConsumer.java
│ │ └── TagFilterProducer.java
│ ├── namespace
│ │ ├── ProducerWithNamespace.java
│ │ ├── PullConsumerWithNamespace.java
│ │ └── PushConsumerWithNamespace.java
│ ├── openmessaging
│ │ ├── SimpleProducer.java
│ │ ├── SimplePullConsumer.java
│ │ └── SimplePushConsumer.java
│ ├── operation
│ │ ├── Consumer.java
│ │ └── Producer.java
│ ├── ordermessage
│ │ ├── Consumer.java
│ │ └── Producer.java
│ ├── quickstart
│ │ ├── Consumer.java
│ │ └── Producer.java
│ ├── rpc
│ │ ├── AsyncRequestProducer.java
│ │ ├── RequestProducer.java
│ │ └── ResponseConsumer.java
│ ├── schedule
│ │ ├── ScheduledMessageConsumer.java
│ │ ├── ScheduledMessageProducer.java
│ │ ├── TimerMessageConsumer.java
│ │ └── TimerMessageProducer.java
│ ├── simple
│ │ ├── AclClient.java
│ │ ├── AsyncProducer.java
│ │ ├── CachedQueue.java
│ │ ├── LitePullConsumerAssign.java
│ │ ├── LitePullConsumerAssignWithSubExpression.java
│ │ ├── LitePullConsumerSubscribe.java
│ │ ├── OnewayProducer.java
│ │ ├── PopConsumer.java
│ │ ├── Producer.java
│ │ ├── PullConsumer.java
│ │ ├── PullScheduleService.java
│ │ ├── PushConsumer.java
│ │ └── RandomAsyncCommit.java
│ ├── tracemessage
│ │ ├── OpenTracingProducer.java
│ │ ├── OpenTracingPushConsumer.java
│ │ ├── OpenTracingTransactionProducer.java
│ │ ├── TraceProducer.java
│ │ └── TracePushConsumer.java
│ └── transaction
│ ├── TransactionListenerImpl.java
│ └── TransactionProducer.java
├── filter
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── filter
│ │ ├── constant
│ │ │ └── UnaryType.java
│ │ ├── expression
│ │ │ ├── BinaryExpression.java
│ │ │ ├── BooleanConstantExpression.java
│ │ │ ├── BooleanExpression.java
│ │ │ ├── ComparisonExpression.java
│ │ │ ├── ConstantExpression.java
│ │ │ ├── EmptyEvaluationContext.java
│ │ │ ├── EvaluationContext.java
│ │ │ ├── Expression.java
│ │ │ ├── LogicExpression.java
│ │ │ ├── MQFilterException.java
│ │ │ ├── NowExpression.java
│ │ │ ├── PropertyExpression.java
│ │ │ ├── UnaryExpression.java
│ │ │ └── UnaryInExpression.java
│ │ ├── FilterFactory.java
│ │ ├── FilterSpi.java
│ │ ├── parser
│ │ │ ├── ParseException.java
│ │ │ ├── SelectorParserConstants.java
│ │ │ ├── SelectorParser.java
│ │ │ ├── SelectorParser.jj
│ │ │ ├── SelectorParserTokenManager.java
│ │ │ ├── SimpleCharStream.java
│ │ │ ├── Token.java
│ │ │ └── TokenMgrError.java
│ │ ├── SqlFilter.java
│ │ └── util
│ │ ├── BitsArray.java
│ │ ├── BloomFilterData.java
│ │ └── BloomFilter.java
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── filter
│ │ ├── BitsArrayTest.java
│ │ ├── BloomFilterTest.java
│ │ ├── ExpressionTest.java
│ │ ├── FilterSpiTest.java
│ │ └── ParserTest.java
│ └── resources
│ └── rmq.logback-test.xml
├── LICENSE
├── namesrv
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── rocketmq
│ │ │ └── namesrv
│ │ │ ├── kvconfig
│ │ │ │ ├── KVConfigManager.java
│ │ │ │ └── KVConfigSerializeWrapper.java
│ │ │ ├── NamesrvController.java
│ │ │ ├── NamesrvStartup.java
│ │ │ ├── processor
│ │ │ │ ├── ClientRequestProcessor.java
│ │ │ │ ├── ClusterTestRequestProcessor.java
│ │ │ │ └── DefaultRequestProcessor.java
│ │ │ ├── route
│ │ │ │ └── ZoneRouteRPCHook.java
│ │ │ └── routeinfo
│ │ │ ├── BatchUnregistrationService.java
│ │ │ ├── BrokerHousekeepingService.java
│ │ │ └── RouteInfoManager.java
│ │ └── resources
│ │ └── rmq.namesrv.logback.xml
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── namesrv
│ │ ├── kvconfig
│ │ │ ├── KVConfigManagerTest.java
│ │ │ └── KVConfigSerializeWrapperTest.java
│ │ ├── NameServerInstanceTest.java
│ │ ├── NamesrvControllerTest.java
│ │ ├── NamesrvStartupTest.java
│ │ ├── processor
│ │ │ ├── ClusterTestRequestProcessorTest.java
│ │ │ └── RequestProcessorTest.java
│ │ └── routeinfo
│ │ ├── BrokerHousekeepingServiceTest.java
│ │ ├── GetRouteInfoBenchmark.java
│ │ ├── RegisterBrokerBenchmark.java
│ │ ├── RouteInfoManagerBrokerPermTest.java
│ │ ├── RouteInfoManagerBrokerRegisterTest.java
│ │ ├── RouteInfoManagerNewTest.java
│ │ ├── RouteInfoManagerStaticRegisterTest.java
│ │ ├── RouteInfoManagerTestBase.java
│ │ └── RouteInfoManagerTest.java
│ └── resources
│ └── rmq.logback-test.xml
├── NOTICE
├── openmessaging
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── openmessaging
│ │ └── rocketmq
│ │ ├── config
│ │ │ └── ClientConfig.java
│ │ ├── consumer
│ │ │ ├── LocalMessageCache.java
│ │ │ ├── PullConsumerImpl.java
│ │ │ └── PushConsumerImpl.java
│ │ ├── domain
│ │ │ ├── BytesMessageImpl.java
│ │ │ ├── ConsumeRequest.java
│ │ │ ├── NonStandardKeys.java
│ │ │ ├── RocketMQConstants.java
│ │ │ └── SendResultImpl.java
│ │ ├── MessagingAccessPointImpl.java
│ │ ├── producer
│ │ │ ├── AbstractOMSProducer.java
│ │ │ └── ProducerImpl.java
│ │ ├── promise
│ │ │ ├── DefaultPromise.java
│ │ │ └── FutureState.java
│ │ └── utils
│ │ ├── BeanUtils.java
│ │ └── OMSUtil.java
│ └── test
│ ├── java
│ │ └── io
│ │ └── openmessaging
│ │ └── rocketmq
│ │ ├── consumer
│ │ │ ├── LocalMessageCacheTest.java
│ │ │ ├── PullConsumerImplTest.java
│ │ │ └── PushConsumerImplTest.java
│ │ ├── producer
│ │ │ └── ProducerImplTest.java
│ │ ├── promise
│ │ │ └── DefaultPromiseTest.java
│ │ └── utils
│ │ └── BeanUtilsTest.java
│ └── resources
│ └── rmq.logback-test.xml
├── pom.xml
├── proxy
│ ├── BUILD.bazel
│ ├── pom.xml
│ ├── README.md
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── rocketmq
│ │ │ └── proxy
│ │ │ ├── CommandLineArgument.java
│ │ │ ├── common
│ │ │ │ ├── AbstractCacheLoader.java
│ │ │ │ ├── Address.java
│ │ │ │ ├── channel
│ │ │ │ │ └── ChannelHelper.java
│ │ │ │ ├── ContextVariable.java
│ │ │ │ ├── MessageReceiptHandle.java
│ │ │ │ ├── ProxyContext.java
│ │ │ │ ├── ProxyExceptionCode.java
│ │ │ │ ├── ProxyException.java
│ │ │ │ ├── ReceiptHandleGroup.java
│ │ │ │ ├── ReceiptHandleGroupKey.java
│ │ │ │ ├── RenewEvent.java
│ │ │ │ ├── RenewStrategyPolicy.java
│ │ │ │ └── utils
│ │ │ │ ├── ExceptionUtils.java
│ │ │ │ ├── FilterUtils.java
│ │ │ │ ├── FutureUtils.java
│ │ │ │ └── ProxyUtils.java
│ │ │ ├── config
│ │ │ │ ├── ConfigFile.java
│ │ │ │ ├── Configuration.java
│ │ │ │ ├── ConfigurationManager.java
│ │ │ │ ├── MetricCollectorMode.java
│ │ │ │ └── ProxyConfig.java
│ │ │ ├── grpc
│ │ │ │ ├── constant
│ │ │ │ │ └── AttributeKeys.java
│ │ │ │ ├── GrpcServerBuilder.java
│ │ │ │ ├── GrpcServer.java
│ │ │ │ ├── interceptor
│ │ │ │ │ ├── AuthenticationInterceptor.java
│ │ │ │ │ ├── ContextInterceptor.java
│ │ │ │ │ ├── GlobalExceptionInterceptor.java
│ │ │ │ │ ├── HeaderInterceptor.java
│ │ │ │ │ ├── InterceptorConstants.java
│ │ │ │ │ └── RequestMapping.java
│ │ │ │ ├── ProxyAndTlsProtocolNegotiator.java
│ │ │ │ └── v2
│ │ │ │ ├── AbstractMessingActivity.java
│ │ │ │ ├── channel
│ │ │ │ │ ├── GrpcChannelManager.java
│ │ │ │ │ └── GrpcClientChannel.java
│ │ │ │ ├── client
│ │ │ │ │ └── ClientActivity.java
│ │ │ │ ├── common
│ │ │ │ │ ├── GrpcClientSettingsManager.java
│ │ │ │ │ ├── GrpcConverter.java
│ │ │ │ │ ├── GrpcProxyException.java
│ │ │ │ │ ├── GrpcValidator.java
│ │ │ │ │ ├── ResponseBuilder.java
│ │ │ │ │ └── ResponseWriter.java
│ │ │ │ ├── consumer
│ │ │ │ │ ├── AckMessageActivity.java
│ │ │ │ │ ├── ChangeInvisibleDurationActivity.java
│ │ │ │ │ ├── PopMessageResultFilterImpl.java
│ │ │ │ │ ├── ReceiveMessageActivity.java
│ │ │ │ │ └── ReceiveMessageResponseStreamWriter.java
│ │ │ │ ├── ContextStreamObserver.java
│ │ │ │ ├── DefaultGrpcMessingActivity.java
│ │ │ │ ├── GrpcMessagingApplication.java
│ │ │ │ ├── GrpcMessingActivity.java
│ │ │ │ ├── producer
│ │ │ │ │ ├── ForwardMessageToDLQActivity.java
│ │ │ │ │ └── SendMessageActivity.java
│ │ │ │ ├── route
│ │ │ │ │ └── RouteActivity.java
│ │ │ │ └── transaction
│ │ │ │ └── EndTransactionActivity.java
│ │ │ ├── metrics
│ │ │ │ ├── ProxyMetricsConstant.java
│ │ │ │ └── ProxyMetricsManager.java
│ │ │ ├── processor
│ │ │ │ ├── AbstractProcessor.java
│ │ │ │ ├── BatchAckResult.java
│ │ │ │ ├── channel
│ │ │ │ │ ├── ChannelExtendAttributeGetter.java
│ │ │ │ │ ├── ChannelProtocolType.java
│ │ │ │ │ ├── RemoteChannelConverter.java
│ │ │ │ │ ├── RemoteChannel.java
│ │ │ │ │ └── RemoteChannelSerializer.java
│ │ │ │ ├── ClientProcessor.java
│ │ │ │ ├── ConsumerProcessor.java
│ │ │ │ ├── DefaultMessagingProcessor.java
│ │ │ │ ├── MessagingProcessor.java
│ │ │ │ ├── PopMessageResultFilter.java
│ │ │ │ ├── ProducerProcessor.java
│ │ │ │ ├── QueueSelector.java
│ │ │ │ ├── ReceiptHandleProcessor.java
│ │ │ │ ├── RequestBrokerProcessor.java
│ │ │ │ ├── TransactionProcessor.java
│ │ │ │ ├── TransactionStatus.java
│ │ │ │ └── validator
│ │ │ │ ├── DefaultTopicMessageTypeValidator.java
│ │ │ │ └── TopicMessageTypeValidator.java
│ │ │ ├── ProxyMode.java
│ │ │ ├── ProxyStartup.java
│ │ │ ├── remoting
│ │ │ │ ├── activity
│ │ │ │ │ ├── AbstractRemotingActivity.java
│ │ │ │ │ ├── AckMessageActivity.java
│ │ │ │ │ ├── ChangeInvisibleTimeActivity.java
│ │ │ │ │ ├── ClientManagerActivity.java
│ │ │ │ │ ├── ConsumerManagerActivity.java
│ │ │ │ │ ├── GetTopicRouteActivity.java
│ │ │ │ │ ├── PopMessageActivity.java
│ │ │ │ │ ├── PullMessageActivity.java
│ │ │ │ │ ├── SendMessageActivity.java
│ │ │ │ │ └── TransactionActivity.java
│ │ │ │ ├── channel
│ │ │ │ │ ├── RemotingChannel.java
│ │ │ │ │ └── RemotingChannelManager.java
│ │ │ │ ├── ClientHousekeepingService.java
│ │ │ │ ├── common
│ │ │ │ │ └── RemotingConverter.java
│ │ │ │ ├── MultiProtocolRemotingServer.java
│ │ │ │ ├── MultiProtocolTlsHelper.java
│ │ │ │ ├── pipeline
│ │ │ │ │ ├── AuthenticationPipeline.java
│ │ │ │ │ └── RequestPipeline.java
│ │ │ │ ├── protocol
│ │ │ │ │ ├── http2proxy
│ │ │ │ │ │ ├── HAProxyMessageForwarder.java
│ │ │ │ │ │ ├── Http2ProtocolProxyHandler.java
│ │ │ │ │ │ ├── Http2ProxyBackendHandler.java
│ │ │ │ │ │ └── Http2ProxyFrontendHandler.java
│ │ │ │ │ ├── ProtocolHandler.java
│ │ │ │ │ ├── ProtocolNegotiationHandler.java
│ │ │ │ │ └── remoting
│ │ │ │ │ └── RemotingProtocolHandler.java
│ │ │ │ ├── RemotingProtocolServer.java
│ │ │ │ └── RemotingProxyOutClient.java
│ │ │ └── service
│ │ │ ├── admin
│ │ │ │ ├── AdminService.java
│ │ │ │ └── DefaultAdminService.java
│ │ │ ├── channel
│ │ │ │ ├── ChannelManager.java
│ │ │ │ ├── InvocationChannel.java
│ │ │ │ ├── InvocationContextInterface.java
│ │ │ │ ├── InvocationContext.java
│ │ │ │ ├── SimpleChannelHandlerContext.java
│ │ │ │ └── SimpleChannel.java
│ │ │ ├── client
│ │ │ │ ├── ClusterConsumerManager.java
│ │ │ │ └── ProxyClientRemotingProcessor.java
│ │ │ ├── ClusterServiceManager.java
│ │ │ ├── LocalServiceManager.java
│ │ │ ├── message
│ │ │ │ ├── ClusterMessageService.java
│ │ │ │ ├── LocalMessageService.java
│ │ │ │ ├── LocalRemotingCommand.java
│ │ │ │ ├── MessageService.java
│ │ │ │ └── ReceiptHandleMessage.java
│ │ │ ├── metadata
│ │ │ │ ├── ClusterMetadataService.java
│ │ │ │ ├── LocalMetadataService.java
│ │ │ │ └── MetadataService.java
│ │ │ ├── receipt
│ │ │ │ ├── DefaultReceiptHandleManager.java
│ │ │ │ └── ReceiptHandleManager.java
│ │ │ ├── relay
│ │ │ │ ├── AbstractProxyRelayService.java
│ │ │ │ ├── ClusterProxyRelayService.java
│ │ │ │ ├── LocalProxyRelayService.java
│ │ │ │ ├── ProxyChannel.java
│ │ │ │ ├── ProxyRelayResult.java
│ │ │ │ ├── ProxyRelayService.java
│ │ │ │ └── RelayData.java
│ │ │ ├── route
│ │ │ │ ├── AddressableMessageQueue.java
│ │ │ │ ├── ClusterTopicRouteService.java
│ │ │ │ ├── LocalTopicRouteService.java
│ │ │ │ ├── MessageQueueSelector.java
│ │ │ │ ├── MessageQueueView.java
│ │ │ │ ├── ProxyTopicRouteData.java
│ │ │ │ ├── TopicRouteHelper.java
│ │ │ │ ├── TopicRouteService.java
│ │ │ │ └── TopicRouteWrapper.java
│ │ │ ├── ServiceManagerFactory.java
│ │ │ ├── ServiceManager.java
│ │ │ ├── sysmessage
│ │ │ │ ├── AbstractSystemMessageSyncer.java
│ │ │ │ ├── HeartbeatSyncerData.java
│ │ │ │ ├── HeartbeatSyncer.java
│ │ │ │ └── HeartbeatType.java
│ │ │ └── transaction
│ │ │ ├── AbstractTransactionService.java
│ │ │ ├── ClusterTransactionService.java
│ │ │ ├── EndTransactionRequestData.java
│ │ │ ├── LocalTransactionService.java
│ │ │ ├── TransactionData.java
│ │ │ ├── TransactionDataManager.java
│ │ │ └── TransactionService.java
│ │ └── resources
│ │ └── rmq.proxy.logback.xml
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── proxy
│ │ ├── common
│ │ │ ├── ReceiptHandleGroupTest.java
│ │ │ ├── RenewStrategyPolicyTest.java
│ │ │ └── utils
│ │ │ └── FilterUtilTest.java
│ │ ├── config
│ │ │ ├── ConfigurationManagerTest.java
│ │ │ ├── InitConfigTest.java
│ │ │ └── MetricCollectorModeTest.java
│ │ ├── grpc
│ │ │ ├── ProxyAndTlsProtocolNegotiatorTest.java
│ │ │ └── v2
│ │ │ ├── AbstractMessingActivityTest.java
│ │ │ ├── BaseActivityTest.java
│ │ │ ├── channel
│ │ │ │ └── GrpcClientChannelTest.java
│ │ │ ├── client
│ │ │ │ └── ClientActivityTest.java
│ │ │ ├── common
│ │ │ │ ├── GrpcClientSettingsManagerTest.java
│ │ │ │ ├── GrpcConverterTest.java
│ │ │ │ └── GrpcValidatorTest.java
│ │ │ ├── consumer
│ │ │ │ ├── AckMessageActivityTest.java
│ │ │ │ ├── ChangeInvisibleDurationActivityTest.java
│ │ │ │ ├── ReceiveMessageActivityTest.java
│ │ │ │ └── ReceiveMessageResponseStreamWriterTest.java
│ │ │ ├── GrpcMessagingApplicationTest.java
│ │ │ ├── producer
│ │ │ │ ├── ForwardMessageToDLQActivityTest.java
│ │ │ │ └── SendMessageActivityTest.java
│ │ │ ├── route
│ │ │ │ └── RouteActivityTest.java
│ │ │ └── transaction
│ │ │ └── EndTransactionActivityTest.java
│ │ ├── processor
│ │ │ ├── BaseProcessorTest.java
│ │ │ ├── channel
│ │ │ │ └── RemoteChannelTest.java
│ │ │ ├── ConsumerProcessorTest.java
│ │ │ ├── ProducerProcessorTest.java
│ │ │ └── TransactionProcessorTest.java
│ │ ├── ProxyStartupTest.java
│ │ ├── remoting
│ │ │ ├── activity
│ │ │ │ ├── AbstractRemotingActivityTest.java
│ │ │ │ ├── PullMessageActivityTest.java
│ │ │ │ └── SendMessageActivityTest.java
│ │ │ ├── channel
│ │ │ │ ├── RemotingChannelManagerTest.java
│ │ │ │ └── RemotingChannelTest.java
│ │ │ └── protocol
│ │ │ └── http2proxy
│ │ │ ├── HAProxyMessageForwarderTest.java
│ │ │ └── Http2ProtocolProxyHandlerTest.java
│ │ └── service
│ │ ├── admin
│ │ │ └── DefaultAdminServiceTest.java
│ │ ├── BaseServiceTest.java
│ │ ├── message
│ │ │ ├── ClusterMessageServiceTest.java
│ │ │ └── LocalMessageServiceTest.java
│ │ ├── metadata
│ │ │ └── ClusterMetadataServiceTest.java
│ │ ├── mqclient
│ │ │ ├── MQClientAPIExtTest.java
│ │ │ └── ProxyClientRemotingProcessorTest.java
│ │ ├── receipt
│ │ │ └── DefaultReceiptHandleManagerTest.java
│ │ ├── relay
│ │ │ ├── LocalProxyRelayServiceTest.java
│ │ │ └── ProxyChannelTest.java
│ │ ├── route
│ │ │ ├── ClusterTopicRouteServiceTest.java
│ │ │ ├── LocalTopicRouteServiceTest.java
│ │ │ └── MessageQueueSelectorTest.java
│ │ ├── sysmessage
│ │ │ └── HeartbeatSyncerTest.java
│ │ └── transaction
│ │ ├── AbstractTransactionServiceTest.java
│ │ ├── ClusterTransactionServiceTest.java
│ │ └── TransactionDataManagerTest.java
│ └── resources
│ ├── mockito-extensions
│ │ └── org.mockito.plugins.MockMaker
│ ├── rmq.logback-test.xml
│ └── rmq-proxy-home
│ └── conf
│ ├── broker.conf
│ ├── logback_proxy.xml
│ └── rmq-proxy.json
├── README.md
├── remoting
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── remoting
│ │ ├── annotation
│ │ │ ├── CFNotNull.java
│ │ │ └── CFNullable.java
│ │ ├── ChannelEventListener.java
│ │ ├── CommandCustomHeader.java
│ │ ├── common
│ │ │ ├── HeartbeatV2Result.java
│ │ │ ├── RemotingHelper.java
│ │ │ ├── SemaphoreReleaseOnlyOnce.java
│ │ │ ├── ServiceThread.java
│ │ │ └── TlsMode.java
│ │ ├── Configuration.java
│ │ ├── exception
│ │ │ ├── RemotingCommandException.java
│ │ │ ├── RemotingConnectException.java
│ │ │ ├── RemotingException.java
│ │ │ ├── RemotingSendRequestException.java
│ │ │ ├── RemotingTimeoutException.java
│ │ │ └── RemotingTooMuchRequestException.java
│ │ ├── InvokeCallback.java
│ │ ├── metrics
│ │ │ ├── RemotingMetricsConstant.java
│ │ │ └── RemotingMetricsManager.java
│ │ ├── netty
│ │ │ ├── AttributeKeys.java
│ │ │ ├── FileRegionEncoder.java
│ │ │ ├── NettyClientConfig.java
│ │ │ ├── NettyDecoder.java
│ │ │ ├── NettyEncoder.java
│ │ │ ├── NettyEvent.java
│ │ │ ├── NettyEventType.java
│ │ │ ├── NettyLogger.java
│ │ │ ├── NettyRemotingAbstract.java
│ │ │ ├── NettyRemotingClient.java
│ │ │ ├── NettyRemotingServer.java
│ │ │ ├── NettyRequestProcessor.java
│ │ │ ├── NettyServerConfig.java
│ │ │ ├── NettySystemConfig.java
│ │ │ ├── RemotingCodeDistributionHandler.java
│ │ │ ├── RemotingResponseCallback.java
│ │ │ ├── RequestTask.java
│ │ │ ├── ResponseFuture.java
│ │ │ ├── TlsHelper.java
│ │ │ └── TlsSystemConfig.java
│ │ ├── protocol
│ │ │ ├── admin
│ │ │ │ ├── ConsumeStats.java
│ │ │ │ ├── OffsetWrapper.java
│ │ │ │ ├── RollbackStats.java
│ │ │ │ ├── TopicOffset.java
│ │ │ │ └── TopicStatsTable.java
│ │ │ ├── BitSetSerializerDeserializer.java
│ │ │ ├── body
│ │ │ │ ├── BatchAck.java
│ │ │ │ ├── BatchAckMessageRequestBody.java
│ │ │ │ ├── BrokerMemberGroup.java
│ │ │ │ ├── BrokerReplicasInfo.java
│ │ │ │ ├── BrokerStatsData.java
│ │ │ │ ├── BrokerStatsItem.java
│ │ │ │ ├── CheckClientRequestBody.java
│ │ │ │ ├── ClusterAclVersionInfo.java
│ │ │ │ ├── ClusterInfo.java
│ │ │ │ ├── CMResult.java
│ │ │ │ ├── Connection.java
│ │ │ │ ├── ConsumeByWho.java
│ │ │ │ ├── ConsumeMessageDirectlyResult.java
│ │ │ │ ├── ConsumeQueueData.java
│ │ │ │ ├── ConsumerConnection.java
│ │ │ │ ├── ConsumerOffsetSerializeWrapper.java
│ │ │ │ ├── ConsumerRunningInfo.java
│ │ │ │ ├── ConsumeStatsList.java
│ │ │ │ ├── ConsumeStatus.java
│ │ │ │ ├── ElectMasterResponseBody.java
│ │ │ │ ├── EpochEntryCache.java
│ │ │ │ ├── GetBrokerMemberGroupResponseBody.java
│ │ │ │ ├── GetConsumerStatusBody.java
│ │ │ │ ├── GroupList.java
│ │ │ │ ├── HARuntimeInfo.java
│ │ │ │ ├── KVTable.java
│ │ │ │ ├── LockBatchRequestBody.java
│ │ │ │ ├── LockBatchResponseBody.java
│ │ │ │ ├── MessageRequestModeSerializeWrapper.java
│ │ │ │ ├── PopProcessQueueInfo.java
│ │ │ │ ├── ProcessQueueInfo.java
│ │ │ │ ├── ProducerConnection.java
│ │ │ │ ├── ProducerInfo.java
│ │ │ │ ├── ProducerTableInfo.java
│ │ │ │ ├── QueryAssignmentRequestBody.java
│ │ │ │ ├── QueryAssignmentResponseBody.java
│ │ │ │ ├── QueryConsumeQueueResponseBody.java
│ │ │ │ ├── QueryConsumeTimeSpanBody.java
│ │ │ │ ├── QueryCorrectionOffsetBody.java
│ │ │ │ ├── QuerySubscriptionResponseBody.java
│ │ │ │ ├── QueueTimeSpan.java
│ │ │ │ ├── RegisterBrokerBody.java
│ │ │ │ ├── ResetOffsetBodyForC.java
│ │ │ │ ├── ResetOffsetBody.java
│ │ │ │ ├── RoleChangeNotifyEntry.java
│ │ │ │ ├── SetMessageRequestModeRequestBody.java
│ │ │ │ ├── SubscriptionGroupWrapper.java
│ │ │ │ ├── SyncStateSet.java
│ │ │ │ ├── TopicConfigAndMappingSerializeWrapper.java
│ │ │ │ ├── TopicConfigSerializeWrapper.java
│ │ │ │ ├── TopicList.java
│ │ │ │ ├── TopicQueueMappingSerializeWrapper.java
│ │ │ │ └── UnlockBatchRequestBody.java
│ │ │ ├── BrokerSyncInfo.java
│ │ │ ├── DataVersion.java
│ │ │ ├── EpochEntry.java
│ │ │ ├── FastCodesHeader.java
│ │ │ ├── filter
│ │ │ │ └── FilterAPI.java
│ │ │ ├── ForbiddenType.java
│ │ │ ├── header
│ │ │ │ ├── AckMessageRequestHeader.java
│ │ │ │ ├── AddBrokerRequestHeader.java
│ │ │ │ ├── ChangeInvisibleTimeRequestHeader.java
│ │ │ │ ├── ChangeInvisibleTimeResponseHeader.java
│ │ │ │ ├── CheckTransactionStateRequestHeader.java
│ │ │ │ ├── CheckTransactionStateResponseHeader.java
│ │ │ │ ├── CloneGroupOffsetRequestHeader.java
│ │ │ │ ├── ConsumeMessageDirectlyResultRequestHeader.java
│ │ │ │ ├── ConsumerSendMsgBackRequestHeader.java
│ │ │ │ ├── controller
│ │ │ │ │ ├── admin
│ │ │ │ │ │ └── CleanControllerBrokerDataRequestHeader.java
│ │ │ │ │ ├── AlterSyncStateSetRequestHeader.java
│ │ │ │ │ ├── AlterSyncStateSetResponseHeader.java
│ │ │ │ │ ├── ElectMasterRequestHeader.java
│ │ │ │ │ ├── ElectMasterResponseHeader.java
│ │ │ │ │ ├── GetMetaDataResponseHeader.java
│ │ │ │ │ ├── GetReplicaInfoRequestHeader.java
│ │ │ │ │ ├── GetReplicaInfoResponseHeader.java
│ │ │ │ │ └── register
│ │ │ │ │ ├── ApplyBrokerIdRequestHeader.java
│ │ │ │ │ ├── ApplyBrokerIdResponseHeader.java
│ │ │ │ │ ├── GetNextBrokerIdRequestHeader.java
│ │ │ │ │ ├── GetNextBrokerIdResponseHeader.java
│ │ │ │ │ ├── RegisterBrokerToControllerRequestHeader.java
│ │ │ │ │ └── RegisterBrokerToControllerResponseHeader.java
│ │ │ │ ├── CreateAccessConfigRequestHeader.java
│ │ │ │ ├── CreateTopicRequestHeader.java
│ │ │ │ ├── DeleteAccessConfigRequestHeader.java
│ │ │ │ ├── DeleteSubscriptionGroupRequestHeader.java
│ │ │ │ ├── DeleteTopicRequestHeader.java
│ │ │ │ ├── EndTransactionRequestHeader.java
│ │ │ │ ├── EndTransactionResponseHeader.java
│ │ │ │ ├── ExchangeHAInfoRequestHeader.java
│ │ │ │ ├── ExchangeHAInfoResponseHeader.java
│ │ │ │ ├── ExtraInfoUtil.java
│ │ │ │ ├── GetAllProducerInfoRequestHeader.java
│ │ │ │ ├── GetAllTopicConfigResponseHeader.java
│ │ │ │ ├── GetBrokerAclConfigResponseHeader.java
│ │ │ │ ├── GetBrokerConfigResponseHeader.java
│ │ │ │ ├── GetBrokerMemberGroupRequestHeader.java
│ │ │ │ ├── GetConsumerConnectionListRequestHeader.java
│ │ │ │ ├── GetConsumerListByGroupRequestHeader.java
│ │ │ │ ├── GetConsumerListByGroupResponseBody.java
│ │ │ │ ├── GetConsumerListByGroupResponseHeader.java
│ │ │ │ ├── GetConsumerRunningInfoRequestHeader.java
│ │ │ │ ├── GetConsumerStatusRequestHeader.java
│ │ │ │ ├── GetConsumeStatsInBrokerHeader.java
│ │ │ │ ├── GetConsumeStatsRequestHeader.java
│ │ │ │ ├── GetEarliestMsgStoretimeRequestHeader.java
│ │ │ │ ├── GetEarliestMsgStoretimeResponseHeader.java
│ │ │ │ ├── GetMaxOffsetRequestHeader.java
│ │ │ │ ├── GetMaxOffsetResponseHeader.java
│ │ │ │ ├── GetMinOffsetRequestHeader.java
│ │ │ │ ├── GetMinOffsetResponseHeader.java
│ │ │ │ ├── GetProducerConnectionListRequestHeader.java
│ │ │ │ ├── GetSubscriptionGroupConfigRequestHeader.java
│ │ │ │ ├── GetTopicConfigRequestHeader.java
│ │ │ │ ├── GetTopicsByClusterRequestHeader.java
│ │ │ │ ├── GetTopicStatsInfoRequestHeader.java
│ │ │ │ ├── HeartbeatRequestHeader.java
│ │ │ │ ├── InitConsumerOffsetRequestHeader.java
│ │ │ │ ├── LockBatchMqRequestHeader.java
│ │ │ │ ├── namesrv
│ │ │ │ │ ├── AddWritePermOfBrokerRequestHeader.java
│ │ │ │ │ ├── AddWritePermOfBrokerResponseHeader.java
│ │ │ │ │ ├── BrokerHeartbeatRequestHeader.java
│ │ │ │ │ ├── DeleteKVConfigRequestHeader.java
│ │ │ │ │ ├── DeleteTopicFromNamesrvRequestHeader.java
│ │ │ │ │ ├── GetKVConfigRequestHeader.java
│ │ │ │ │ ├── GetKVConfigResponseHeader.java
│ │ │ │ │ ├── GetKVListByNamespaceRequestHeader.java
│ │ │ │ │ ├── GetRouteInfoRequestHeader.java
│ │ │ │ │ ├── PutKVConfigRequestHeader.java
│ │ │ │ │ ├── QueryDataVersionRequestHeader.java
│ │ │ │ │ ├── QueryDataVersionResponseHeader.java
│ │ │ │ │ ├── RegisterBrokerRequestHeader.java
│ │ │ │ │ ├── RegisterBrokerResponseHeader.java
│ │ │ │ │ ├── RegisterOrderTopicRequestHeader.java
│ │ │ │ │ ├── RegisterTopicRequestHeader.java
│ │ │ │ │ ├── UnRegisterBrokerRequestHeader.java
│ │ │ │ │ ├── WipeWritePermOfBrokerRequestHeader.java
│ │ │ │ │ └── WipeWritePermOfBrokerResponseHeader.java
│ │ │ │ ├── NotificationRequestHeader.java
│ │ │ │ ├── NotificationResponseHeader.java
│ │ │ │ ├── NotifyBrokerRoleChangedRequestHeader.java
│ │ │ │ ├── NotifyConsumerIdsChangedRequestHeader.java
│ │ │ │ ├── NotifyMinBrokerIdChangeRequestHeader.java
│ │ │ │ ├── PeekMessageRequestHeader.java
│ │ │ │ ├── PollingInfoRequestHeader.java
│ │ │ │ ├── PollingInfoResponseHeader.java
│ │ │ │ ├── PopMessageRequestHeader.java
│ │ │ │ ├── PopMessageResponseHeader.java
│ │ │ │ ├── PullMessageRequestHeader.java
│ │ │ │ ├── PullMessageResponseHeader.java
│ │ │ │ ├── QueryConsumeQueueRequestHeader.java
│ │ │ │ ├── QueryConsumerOffsetRequestHeader.java
│ │ │ │ ├── QueryConsumerOffsetResponseHeader.java
│ │ │ │ ├── QueryConsumeTimeSpanRequestHeader.java
│ │ │ │ ├── QueryCorrectionOffsetHeader.java
│ │ │ │ ├── QueryMessageRequestHeader.java
│ │ │ │ ├── QueryMessageResponseHeader.java
│ │ │ │ ├── QuerySubscriptionByConsumerRequestHeader.java
│ │ │ │ ├── QueryTopicConsumeByWhoRequestHeader.java
│ │ │ │ ├── QueryTopicsByConsumerRequestHeader.java
│ │ │ │ ├── RemoveBrokerRequestHeader.java
│ │ │ │ ├── ReplyMessageRequestHeader.java
│ │ │ │ ├── ResetMasterFlushOffsetHeader.java
│ │ │ │ ├── ResetOffsetRequestHeader.java
│ │ │ │ ├── ResumeCheckHalfMessageRequestHeader.java
│ │ │ │ ├── SearchOffsetRequestHeader.java
│ │ │ │ ├── SearchOffsetResponseHeader.java
│ │ │ │ ├── SendMessageRequestHeader.java
│ │ │ │ ├── SendMessageRequestHeaderV2.java
│ │ │ │ ├── SendMessageResponseHeader.java
│ │ │ │ ├── StatisticsMessagesRequestHeader.java
│ │ │ │ ├── UnlockBatchMqRequestHeader.java
│ │ │ │ ├── UnregisterClientRequestHeader.java
│ │ │ │ ├── UnregisterClientResponseHeader.java
│ │ │ │ ├── UpdateConsumerOffsetRequestHeader.java
│ │ │ │ ├── UpdateConsumerOffsetResponseHeader.java
│ │ │ │ ├── UpdateGlobalWhiteAddrsConfigRequestHeader.java
│ │ │ │ ├── UpdateGroupForbiddenRequestHeader.java
│ │ │ │ ├── ViewBrokerStatsDataRequestHeader.java
│ │ │ │ ├── ViewMessageRequestHeader.java
│ │ │ │ └── ViewMessageResponseHeader.java
│ │ │ ├── heartbeat
│ │ │ │ ├── ConsumerData.java
│ │ │ │ ├── ConsumeType.java
│ │ │ │ ├── HeartbeatData.java
│ │ │ │ ├── MessageModel.java
│ │ │ │ ├── ProducerData.java
│ │ │ │ └── SubscriptionData.java
│ │ │ ├── LanguageCode.java
│ │ │ ├── MQProtosHelper.java
│ │ │ ├── NamespaceUtil.java
│ │ │ ├── namesrv
│ │ │ │ └── RegisterBrokerResult.java
│ │ │ ├── RemotingCommand.java
│ │ │ ├── RemotingCommandType.java
│ │ │ ├── RemotingSerializable.java
│ │ │ ├── RemotingSysResponseCode.java
│ │ │ ├── RequestCode.java
│ │ │ ├── RequestSource.java
│ │ │ ├── RequestType.java
│ │ │ ├── ResponseCode.java
│ │ │ ├── RocketMQSerializable.java
│ │ │ ├── route
│ │ │ │ ├── BrokerData.java
│ │ │ │ ├── MessageQueueRouteState.java
│ │ │ │ ├── QueueData.java
│ │ │ │ └── TopicRouteData.java
│ │ │ ├── SerializeType.java
│ │ │ ├── statictopic
│ │ │ │ ├── LogicQueueMappingItem.java
│ │ │ │ ├── TopicConfigAndQueueMapping.java
│ │ │ │ ├── TopicQueueMappingContext.java
│ │ │ │ ├── TopicQueueMappingDetail.java
│ │ │ │ ├── TopicQueueMappingInfo.java
│ │ │ │ ├── TopicQueueMappingOne.java
│ │ │ │ ├── TopicQueueMappingUtils.java
│ │ │ │ └── TopicRemappingDetailWrapper.java
│ │ │ ├── subscription
│ │ │ │ ├── CustomizedRetryPolicy.java
│ │ │ │ ├── ExponentialRetryPolicy.java
│ │ │ │ ├── GroupForbidden.java
│ │ │ │ ├── GroupRetryPolicy.java
│ │ │ │ ├── GroupRetryPolicyType.java
│ │ │ │ ├── RetryPolicy.java
│ │ │ │ ├── SimpleSubscriptionData.java
│ │ │ │ └── SubscriptionGroupConfig.java
│ │ │ └── topic
│ │ │ └── OffsetMovedEvent.java
│ │ ├── proxy
│ │ │ └── SocksProxyConfig.java
│ │ ├── RemotingClient.java
│ │ ├── RemotingServer.java
│ │ ├── RemotingService.java
│ │ ├── rpc
│ │ │ ├── ClientMetadata.java
│ │ │ ├── RequestBuilder.java
│ │ │ ├── RpcClientHook.java
│ │ │ ├── RpcClientImpl.java
│ │ │ ├── RpcClient.java
│ │ │ ├── RpcClientUtils.java
│ │ │ ├── RpcException.java
│ │ │ ├── RpcRequestHeader.java
│ │ │ ├── RpcRequest.java
│ │ │ ├── RpcResponse.java
│ │ │ ├── TopicQueueRequestHeader.java
│ │ │ └── TopicRequestHeader.java
│ │ ├── rpchook
│ │ │ ├── DynamicalExtFieldRPCHook.java
│ │ │ └── StreamTypeRPCHook.java
│ │ └── RPCHook.java
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── remoting
│ │ ├── netty
│ │ │ ├── FileRegionEncoderTest.java
│ │ │ ├── MockChannel.java
│ │ │ ├── MockChannelPromise.java
│ │ │ ├── NettyClientConfigTest.java
│ │ │ ├── NettyRemotingAbstractTest.java
│ │ │ ├── NettyRemotingClientTest.java
│ │ │ ├── NettyRemotingServerTest.java
│ │ │ ├── NettyServerConfigTest.java
│ │ │ └── RemotingCodeDistributionHandlerTest.java
│ │ ├── protocol
│ │ │ ├── admin
│ │ │ │ ├── ConsumeStatsTest.java
│ │ │ │ └── TopicStatsTableTest.java
│ │ │ ├── body
│ │ │ │ ├── BatchAckTest.java
│ │ │ │ ├── BrokerStatsDataTest.java
│ │ │ │ ├── CheckClientRequestBodyTest.java
│ │ │ │ ├── ConsumeMessageDirectlyResultTest.java
│ │ │ │ ├── ConsumerConnectionTest.java
│ │ │ │ ├── ConsumerRunningInfoTest.java
│ │ │ │ ├── ConsumeStatsListTest.java
│ │ │ │ ├── KVTableTest.java
│ │ │ │ ├── MessageRequestModeSerializeWrapperTest.java
│ │ │ │ ├── QueryConsumeQueueResponseBodyTest.java
│ │ │ │ ├── QueryCorrectionOffsetBodyTest.java
│ │ │ │ ├── ResetOffsetBodyTest.java
│ │ │ │ └── SubscriptionGroupWrapperTest.java
│ │ │ ├── CheckpointFileTest.java
│ │ │ ├── ClusterInfoTest.java
│ │ │ ├── ConsumeStatusTest.java
│ │ │ ├── DataVersionTest.java
│ │ │ ├── filter
│ │ │ │ └── FilterAPITest.java
│ │ │ ├── GroupListTest.java
│ │ │ ├── header
│ │ │ │ ├── ExtraInfoUtilTest.java
│ │ │ │ ├── FastCodesHeaderTest.java
│ │ │ │ └── SendMessageRequestHeaderV2Test.java
│ │ │ ├── heartbeat
│ │ │ │ └── SubscriptionDataTest.java
│ │ │ ├── LanguageCodeTest.java
│ │ │ ├── NamespaceUtilTest.java
│ │ │ ├── QueryConsumeTimeSpanBodyTest.java
│ │ │ ├── RegisterBrokerBodyTest.java
│ │ │ ├── RemotingCommandTest.java
│ │ │ ├── RemotingSerializableTest.java
│ │ │ ├── RequestSourceTest.java
│ │ │ ├── RequestTypeTest.java
│ │ │ ├── RocketMQSerializableTest.java
│ │ │ ├── route
│ │ │ │ └── TopicRouteDataTest.java
│ │ │ ├── statictopic
│ │ │ │ ├── TopicQueueMappingTest.java
│ │ │ │ └── TopicQueueMappingUtilsTest.java
│ │ │ ├── subscription
│ │ │ │ ├── CustomizedRetryPolicyTest.java
│ │ │ │ ├── ExponentialRetryPolicyTest.java
│ │ │ │ └── GroupRetryPolicyTest.java
│ │ │ └── topic
│ │ │ └── OffsetMovedEventTest.java
│ │ ├── ProxyProtocolTest.java
│ │ ├── RemotingServerTest.java
│ │ ├── rpc
│ │ │ └── RpcRequestHeaderTest.java
│ │ ├── SubRemotingServerTest.java
│ │ └── TlsTest.java
│ └── resources
│ ├── certs
│ │ ├── badClient.key
│ │ ├── badClient.pem
│ │ ├── badServer.key
│ │ ├── badServer.pem
│ │ ├── ca.pem
│ │ ├── client.key
│ │ ├── client.pem
│ │ ├── privkey.pem
│ │ ├── server.key
│ │ └── server.pem
│ └── rmq.logback-test.xml
├── srvutil
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── srvutil
│ │ ├── AclFileWatchService.java
│ │ ├── FileWatchService.java
│ │ ├── ServerUtil.java
│ │ └── ShutdownHookThread.java
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── srvutil
│ │ └── FileWatchServiceTest.java
│ └── resources
│ └── rmq.logback-test.xml
├── store
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── store
│ │ ├── AllocateMappedFileService.java
│ │ ├── AppendMessageCallback.java
│ │ ├── AppendMessageResult.java
│ │ ├── AppendMessageStatus.java
│ │ ├── CommitLogDispatcher.java
│ │ ├── CommitLog.java
│ │ ├── CompactionAppendMsgCallback.java
│ │ ├── config
│ │ │ ├── BrokerRole.java
│ │ │ ├── FlushDiskType.java
│ │ │ ├── MessageStoreConfig.java
│ │ │ └── StorePathConfigHelper.java
│ │ ├── ConsumeQueueExt.java
│ │ ├── ConsumeQueue.java
│ │ ├── DefaultMessageFilter.java
│ │ ├── DefaultMessageStore.java
│ │ ├── DispatchRequest.java
│ │ ├── dledger
│ │ │ └── DLedgerCommitLog.java
│ │ ├── FileQueueSnapshot.java
│ │ ├── FlushDiskWatcher.java
│ │ ├── FlushManager.java
│ │ ├── GetMessageResult.java
│ │ ├── GetMessageStatus.java
│ │ ├── ha
│ │ │ ├── autoswitch
│ │ │ │ ├── AutoSwitchHAClient.java
│ │ │ │ ├── AutoSwitchHAConnection.java
│ │ │ │ ├── AutoSwitchHAService.java
│ │ │ │ ├── BrokerMetadata.java
│ │ │ │ ├── EpochFileCache.java
│ │ │ │ ├── MetadataFile.java
│ │ │ │ └── TempBrokerMetadata.java
│ │ │ ├── DefaultHAClient.java
│ │ │ ├── DefaultHAConnection.java
│ │ │ ├── DefaultHAService.java
│ │ │ ├── FlowMonitor.java
│ │ │ ├── GroupTransferService.java
│ │ │ ├── HAClient.java
│ │ │ ├── HAConnection.java
│ │ │ ├── HAConnectionState.java
│ │ │ ├── HAConnectionStateNotificationRequest.java
│ │ │ ├── HAConnectionStateNotificationService.java
│ │ │ ├── HAService.java
│ │ │ ├── io
│ │ │ │ ├── AbstractHAReader.java
│ │ │ │ ├── HAReadHook.java
│ │ │ │ ├── HAWriteHook.java
│ │ │ │ └── HAWriter.java
│ │ │ └── WaitNotifyObject.java
│ │ ├── hook
│ │ │ ├── PutMessageHook.java
│ │ │ └── SendMessageBackHook.java
│ │ ├── index
│ │ │ ├── IndexFile.java
│ │ │ ├── IndexHeader.java
│ │ │ ├── IndexService.java
│ │ │ └── QueryOffsetResult.java
│ │ ├── kv
│ │ │ ├── CommitLogDispatcherCompaction.java
│ │ │ ├── CompactionLog.java
│ │ │ ├── CompactionPositionMgr.java
│ │ │ ├── CompactionService.java
│ │ │ ├── CompactionStore.java
│ │ │ └── MessageFetcher.java
│ │ ├── logfile
│ │ │ ├── AbstractMappedFile.java
│ │ │ ├── DefaultMappedFile.java
│ │ │ └── MappedFile.java
│ │ ├── MappedFileQueue.java
│ │ ├── MessageArrivingListener.java
│ │ ├── MessageExtEncoder.java
│ │ ├── MessageFilter.java
│ │ ├── MessageStore.java
│ │ ├── metrics
│ │ │ ├── DefaultStoreMetricsConstant.java
│ │ │ ├── DefaultStoreMetricsManager.java
│ │ │ └── RocksDBStoreMetricsManager.java
│ │ ├── MultiDispatch.java
│ │ ├── MultiPathMappedFileQueue.java
│ │ ├── plugin
│ │ │ ├── AbstractPluginMessageStore.java
│ │ │ ├── MessageStoreFactory.java
│ │ │ └── MessageStorePluginContext.java
│ │ ├── pop
│ │ │ ├── AckMsg.java
│ │ │ ├── BatchAckMsg.java
│ │ │ └── PopCheckPoint.java
│ │ ├── PutMessageContext.java
│ │ ├── PutMessageLock.java
│ │ ├── PutMessageReentrantLock.java
│ │ ├── PutMessageResult.java
│ │ ├── PutMessageSpinLock.java
│ │ ├── PutMessageStatus.java
│ │ ├── QueryMessageResult.java
│ │ ├── queue
│ │ │ ├── AbstractConsumeQueueStore.java
│ │ │ ├── BatchConsumeQueue.java
│ │ │ ├── BatchOffsetIndex.java
│ │ │ ├── ConsumeQueueInterface.java
│ │ │ ├── ConsumeQueueStoreInterface.java
│ │ │ ├── ConsumeQueueStore.java
│ │ │ ├── CqUnit.java
│ │ │ ├── FileQueueLifeCycle.java
│ │ │ ├── MultiDispatchUtils.java
│ │ │ ├── QueueOffsetOperator.java
│ │ │ ├── ReferredIterator.java
│ │ │ ├── RocksDBConsumeQueue.java
│ │ │ ├── RocksDBConsumeQueueOffsetTable.java
│ │ │ ├── RocksDBConsumeQueueStore.java
│ │ │ ├── RocksDBConsumeQueueTable.java
│ │ │ └── SparseConsumeQueue.java
│ │ ├── ReferenceResource.java
│ │ ├── rocksdb
│ │ │ ├── ConsumeQueueCompactionFilterFactory.java
│ │ │ ├── ConsumeQueueRocksDBStorage.java
│ │ │ └── RocksDBOptionsFactory.java
│ │ ├── RocksDBMessageStore.java
│ │ ├── RunningFlags.java
│ │ ├── SelectMappedBufferResult.java
│ │ ├── SelectMappedFileResult.java
│ │ ├── stats
│ │ │ ├── BrokerStats.java
│ │ │ ├── BrokerStatsManager.java
│ │ │ └── LmqBrokerStatsManager.java
│ │ ├── StoreCheckpoint.java
│ │ ├── StoreStatsService.java
│ │ ├── StoreType.java
│ │ ├── StoreUtil.java
│ │ ├── Swappable.java
│ │ ├── timer
│ │ │ ├── Slot.java
│ │ │ ├── TimerCheckpoint.java
│ │ │ ├── TimerLog.java
│ │ │ ├── TimerMessageStore.java
│ │ │ ├── TimerMetrics.java
│ │ │ ├── TimerRequest.java
│ │ │ └── TimerWheel.java
│ │ ├── TopicQueueLock.java
│ │ ├── TransientStorePool.java
│ │ └── util
│ │ ├── LibC.java
│ │ └── PerfCounter.java
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── store
│ │ ├── AppendCallbackTest.java
│ │ ├── AppendPropCRCTest.java
│ │ ├── BatchPutMessageTest.java
│ │ ├── ConsumeQueueExtTest.java
│ │ ├── ConsumeQueueTest.java
│ │ ├── DefaultMessageStoreCleanFilesTest.java
│ │ ├── DefaultMessageStoreShutDownTest.java
│ │ ├── DefaultMessageStoreTest.java
│ │ ├── dledger
│ │ │ ├── DLedgerCommitlogTest.java
│ │ │ ├── DLedgerMultiPathTest.java
│ │ │ ├── MessageStoreTestBase.java
│ │ │ └── MixCommitlogTest.java
│ │ ├── FlushDiskWatcherTest.java
│ │ ├── GetMessageResultTest.java
│ │ ├── ha
│ │ │ ├── autoswitch
│ │ │ │ ├── AutoSwitchHATest.java
│ │ │ │ └── EpochFileCacheTest.java
│ │ │ ├── FlowMonitorTest.java
│ │ │ ├── HAClientTest.java
│ │ │ ├── HAServerTest.java
│ │ │ └── WaitNotifyObjectTest.java
│ │ ├── HATest.java
│ │ ├── index
│ │ │ └── IndexFileTest.java
│ │ ├── kv
│ │ │ ├── CompactionLogTest.java
│ │ │ ├── CompactionPositionMgrTest.java
│ │ │ └── OffsetMapTest.java
│ │ ├── logfile
│ │ │ └── DefaultMappedFileTest.java
│ │ ├── MappedFileQueueTest.java
│ │ ├── MappedFileTest.java
│ │ ├── MessageExtBrokerInnerTest.java
│ │ ├── MultiDispatchTest.java
│ │ ├── MultiPathMappedFileQueueTest.java
│ │ ├── pop
│ │ │ ├── AckMsgTest.java
│ │ │ └── BatchAckMsgTest.java
│ │ ├── queue
│ │ │ ├── BatchConsumeMessageTest.java
│ │ │ ├── BatchConsumeQueueTest.java
│ │ │ ├── ConsumeQueueStoreTest.java
│ │ │ ├── ConsumeQueueTest.java
│ │ │ ├── QueueTestBase.java
│ │ │ └── SparseConsumeQueueTest.java
│ │ ├── RocksDBMessageStoreTest.java
│ │ ├── stats
│ │ │ └── BrokerStatsManagerTest.java
│ │ ├── StoreCheckpointTest.java
│ │ ├── StoreStatsServiceTest.java
│ │ ├── StoreTestBase.java
│ │ ├── StoreTestUtil.java
│ │ └── timer
│ │ ├── StoreTestUtils.java
│ │ ├── TimerCheckPointTest.java
│ │ ├── TimerLogTest.java
│ │ ├── TimerMessageStoreTest.java
│ │ ├── TimerMetricsTest.java
│ │ └── TimerWheelTest.java
│ └── resources
│ └── rmq.logback-test.xml
├── style
│ ├── copyright
│ │ ├── Apache.xml
│ │ └── profiles_settings.xml
│ ├── rmq_checkstyle.xml
│ ├── rmq_codeStyle.xml
│ └── spotbugs-suppressions.xml
├── test
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── test
│ │ ├── client
│ │ │ ├── mq
│ │ │ │ └── MQAsyncProducer.java
│ │ │ └── rmq
│ │ │ ├── RMQAsyncSendProducer.java
│ │ │ ├── RMQBroadCastConsumer.java
│ │ │ ├── RMQNormalConsumer.java
│ │ │ ├── RMQNormalProducer.java
│ │ │ ├── RMQPopClient.java
│ │ │ ├── RMQPopConsumer.java
│ │ │ ├── RMQSqlConsumer.java
│ │ │ └── RMQTransactionalProducer.java
│ │ ├── clientinterface
│ │ │ ├── AbstractMQConsumer.java
│ │ │ ├── AbstractMQProducer.java
│ │ │ ├── MQCollector.java
│ │ │ ├── MQConsumer.java
│ │ │ └── MQProducer.java
│ │ ├── factory
│ │ │ ├── ConsumerFactory.java
│ │ │ ├── MessageFactory.java
│ │ │ ├── MQMessageFactory.java
│ │ │ ├── ProducerFactory.java
│ │ │ ├── SendCallBackFactory.java
│ │ │ └── TagMessage.java
│ │ ├── listener
│ │ │ ├── AbstractListener.java
│ │ │ └── rmq
│ │ │ ├── concurrent
│ │ │ │ ├── RMQBlockListener.java
│ │ │ │ ├── RMQDelayListener.java
│ │ │ │ └── RMQNormalListener.java
│ │ │ └── order
│ │ │ └── RMQOrderListener.java
│ │ ├── lmq
│ │ │ └── benchmark
│ │ │ └── BenchLmqStore.java
│ │ ├── message
│ │ │ └── MessageQueueMsg.java
│ │ ├── schema
│ │ │ ├── SchemaDefiner.java
│ │ │ └── SchemaTools.java
│ │ ├── sendresult
│ │ │ └── ResultWrapper.java
│ │ └── util
│ │ ├── Condition.java
│ │ ├── data
│ │ │ └── collect
│ │ │ ├── DataCollector.java
│ │ │ ├── DataCollectorManager.java
│ │ │ ├── DataFilter.java
│ │ │ └── impl
│ │ │ ├── ListDataCollectorImpl.java
│ │ │ └── MapDataCollectorImpl.java
│ │ ├── DuplicateMessageInfo.java
│ │ ├── FileUtil.java
│ │ ├── MQAdminTestUtils.java
│ │ ├── MQRandomUtils.java
│ │ ├── MQWait.java
│ │ ├── parallel
│ │ │ ├── ParallelTaskExecutor.java
│ │ │ ├── ParallelTask.java
│ │ │ └── Task4Test.java
│ │ ├── RandomUtil.java
│ │ ├── RandomUtils.java
│ │ ├── StatUtil.java
│ │ ├── TestUtil.java
│ │ ├── TestUtils.java
│ │ └── VerifyUtils.java
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── test
│ │ ├── autoswitchrole
│ │ │ ├── AutoSwitchRoleBase.java
│ │ │ └── AutoSwitchRoleIntegrationTest.java
│ │ ├── base
│ │ │ ├── BaseConf.java
│ │ │ └── IntegrationTestBase.java
│ │ ├── client
│ │ │ ├── consumer
│ │ │ │ ├── balance
│ │ │ │ │ ├── NormalMsgDynamicBalanceIT.java
│ │ │ │ │ └── NormalMsgStaticBalanceIT.java
│ │ │ │ ├── broadcast
│ │ │ │ │ ├── BaseBroadcast.java
│ │ │ │ │ ├── normal
│ │ │ │ │ │ ├── BroadcastNormalMsgNotReceiveIT.java
│ │ │ │ │ │ ├── BroadcastNormalMsgRecvCrashIT.java
│ │ │ │ │ │ ├── BroadcastNormalMsgRecvFailIT.java
│ │ │ │ │ │ ├── BroadcastNormalMsgRecvStartLaterIT.java
│ │ │ │ │ │ ├── BroadcastNormalMsgTwoDiffGroupRecvIT.java
│ │ │ │ │ │ └── NormalMsgTwoSameGroupConsumerIT.java
│ │ │ │ │ ├── order
│ │ │ │ │ │ └── OrderMsgBroadcastIT.java
│ │ │ │ │ └── tag
│ │ │ │ │ ├── BroadcastTwoConsumerFilterIT.java
│ │ │ │ │ ├── BroadcastTwoConsumerSubDiffTagIT.java
│ │ │ │ │ └── BroadcastTwoConsumerSubTagIT.java
│ │ │ │ ├── cluster
│ │ │ │ │ ├── DynamicAddAndCrashIT.java
│ │ │ │ │ ├── DynamicAddConsumerIT.java
│ │ │ │ │ └── DynamicCrashConsumerIT.java
│ │ │ │ ├── filter
│ │ │ │ │ └── SqlFilterIT.java
│ │ │ │ ├── pop
│ │ │ │ │ ├── BasePop.java
│ │ │ │ │ ├── BasePopNormally.java
│ │ │ │ │ ├── BasePopOrderly.java
│ │ │ │ │ ├── BatchAckIT.java
│ │ │ │ │ ├── NotificationIT.java
│ │ │ │ │ ├── PopBigMessageIT.java
│ │ │ │ │ ├── PopMessageAndForwardingIT.java
│ │ │ │ │ ├── PopOrderlyIT.java
│ │ │ │ │ └── PopSubCheckIT.java
│ │ │ │ ├── tag
│ │ │ │ │ ├── MulTagSubIT.java
│ │ │ │ │ ├── TagMessageWith1ConsumerIT.java
│ │ │ │ │ ├── TagMessageWithMulConsumerIT.java
│ │ │ │ │ └── TagMessageWithSameGroupConsumerIT.java
│ │ │ │ └── topic
│ │ │ │ ├── MulConsumerMulTopicIT.java
│ │ │ │ └── OneConsumerMulTopicIT.java
│ │ │ └── producer
│ │ │ ├── async
│ │ │ │ ├── AsyncSendExceptionIT.java
│ │ │ │ ├── AsyncSendWithMessageQueueIT.java
│ │ │ │ ├── AsyncSendWithMessageQueueSelectorIT.java
│ │ │ │ └── AsyncSendWithOnlySendCallBackIT.java
│ │ │ ├── batch
│ │ │ │ └── BatchSendIT.java
│ │ │ ├── exception
│ │ │ │ ├── msg
│ │ │ │ │ ├── ChinaPropIT.java
│ │ │ │ │ ├── MessageExceptionIT.java
│ │ │ │ │ └── MessageUserPropIT.java
│ │ │ │ └── producer
│ │ │ │ └── ProducerGroupAndInstanceNameValidityIT.java
│ │ │ ├── oneway
│ │ │ │ ├── OneWaySendExceptionIT.java
│ │ │ │ ├── OneWaySendIT.java
│ │ │ │ ├── OneWaySendWithMQIT.java
│ │ │ │ └── OneWaySendWithSelectorIT.java
│ │ │ ├── order
│ │ │ │ ├── OrderMsgDynamicRebalanceIT.java
│ │ │ │ ├── OrderMsgIT.java
│ │ │ │ ├── OrderMsgRebalanceIT.java
│ │ │ │ └── OrderMsgWithTagIT.java
│ │ │ ├── querymsg
│ │ │ │ ├── QueryMsgByIdExceptionIT.java
│ │ │ │ ├── QueryMsgByIdIT.java
│ │ │ │ └── QueryMsgByKeyIT.java
│ │ │ └── transaction
│ │ │ └── TransactionalMsgIT.java
│ │ ├── container
│ │ │ ├── AddAndRemoveBrokerIT.java
│ │ │ ├── BrokerFailoverIT.java
│ │ │ ├── BrokerMemberGroupIT.java
│ │ │ ├── ContainerIntegrationTestBase.java
│ │ │ ├── GetMaxOffsetFromSlaveIT.java
│ │ │ ├── GetMetadataReverseIT.java
│ │ │ ├── PopSlaveActingMasterIT.java
│ │ │ ├── PullMultipleReplicasIT.java
│ │ │ ├── PushMultipleReplicasIT.java
│ │ │ ├── RebalanceLockOnSlaveIT.java
│ │ │ ├── ScheduledMessageIT.java
│ │ │ ├── ScheduleSlaveActingMasterIT.java
│ │ │ ├── SendMultipleReplicasIT.java
│ │ │ ├── SlaveBrokerIT.java
│ │ │ ├── SyncConsumerOffsetIT.java
│ │ │ ├── TransactionListenerImpl.java
│ │ │ └── TransactionMessageIT.java
│ │ ├── delay
│ │ │ ├── DelayConf.java
│ │ │ └── NormalMsgDelayIT.java
│ │ ├── dledger
│ │ │ └── DLedgerProduceAndConsumeIT.java
│ │ ├── grpc
│ │ │ └── v2
│ │ │ ├── ClusterGrpcIT.java
│ │ │ ├── GrpcBaseIT.java
│ │ │ └── LocalGrpcIT.java
│ │ ├── lmq
│ │ │ └── TestBenchLmqStore.java
│ │ ├── offset
│ │ │ ├── LagCalculationIT.java
│ │ │ ├── OffsetNotFoundIT.java
│ │ │ ├── OffsetResetForPopIT.java
│ │ │ └── OffsetResetIT.java
│ │ ├── retry
│ │ │ └── PopConsumerRetryIT.java
│ │ ├── route
│ │ │ └── CreateAndUpdateTopicIT.java
│ │ ├── schema
│ │ │ └── SchemaTest.java
│ │ ├── smoke
│ │ │ └── NormalMessageSendAndRecvIT.java
│ │ ├── statictopic
│ │ │ └── StaticTopicIT.java
│ │ └── tls
│ │ ├── TlsIT.java
│ │ ├── TlsMix2IT.java
│ │ └── TlsMixIT.java
│ └── resources
│ ├── rmq.logback-test.xml
│ ├── rmq-proxy-home
│ │ └── conf
│ │ ├── broker.conf
│ │ ├── logback_proxy.xml
│ │ └── rmq-proxy.json
│ └── schema
│ ├── api
│ │ ├── client.consumer.AllocateMessageQueueStrategy.schema
│ │ ├── client.consumer.DefaultLitePullConsumer.schema
│ │ ├── client.consumer.DefaultMQPullConsumer.schema
│ │ ├── client.consumer.DefaultMQPushConsumer.schema
│ │ ├── client.consumer.listener.ConsumeConcurrentlyContext.schema
│ │ ├── client.consumer.listener.ConsumeConcurrentlyStatus.schema
│ │ ├── client.consumer.listener.ConsumeOrderlyContext.schema
│ │ ├── client.consumer.listener.ConsumeOrderlyStatus.schema
│ │ ├── client.consumer.listener.MessageListenerConcurrently.schema
│ │ ├── client.consumer.listener.MessageListenerOrderly.schema
│ │ ├── client.consumer.listener.MessageListener.schema
│ │ ├── client.consumer.PullCallback.schema
│ │ ├── client.consumer.PullResult.schema
│ │ ├── client.consumer.PullStatus.schema
│ │ ├── client.hook.CheckForbiddenHook.schema
│ │ ├── client.hook.ConsumeMessageContext.schema
│ │ ├── client.hook.ConsumeMessageHook.schema
│ │ ├── client.hook.EndTransactionContext.schema
│ │ ├── client.hook.EndTransactionHook.schema
│ │ ├── client.hook.FilterMessageContext.schema
│ │ ├── client.hook.FilterMessageHook.schema
│ │ ├── client.hook.SendMessageContext.schema
│ │ ├── client.hook.SendMessageHook.schema
│ │ ├── client.producer.DefaultMQProducer.schema
│ │ ├── client.producer.MessageQueueSelector.schema
│ │ ├── client.producer.SendCallback.schema
│ │ ├── client.producer.SendResult.schema
│ │ ├── client.producer.SendStatus.schema
│ │ ├── common.message.MessageExt.schema
│ │ ├── common.message.MessageQueue.schema
│ │ ├── common.message.Message.schema
│ │ ├── remoting.RPCHook.schema
│ │ └── tools.admin.DefaultMQAdminExt.schema
│ └── protocol
│ ├── common.protocol.header.CheckTransactionStateRequestHeader.schema
│ ├── common.protocol.header.CheckTransactionStateResponseHeader.schema
│ ├── common.protocol.header.CloneGroupOffsetRequestHeader.schema
│ ├── common.protocol.header.ConsumeMessageDirectlyResultRequestHeader.schema
│ ├── common.protocol.header.ConsumerSendMsgBackRequestHeader.schema
│ ├── common.protocol.header.CreateAccessConfigRequestHeader.schema
│ ├── common.protocol.header.CreateTopicRequestHeader.schema
│ ├── common.protocol.header.DeleteAccessConfigRequestHeader.schema
│ ├── common.protocol.header.DeleteSubscriptionGroupRequestHeader.schema
│ ├── common.protocol.header.DeleteTopicRequestHeader.schema
│ ├── common.protocol.header.EndTransactionRequestHeader.schema
│ ├── common.protocol.header.EndTransactionResponseHeader.schema
│ ├── common.protocol.header.filtersrv.RegisterFilterServerRequestHeader.schema
│ ├── common.protocol.header.filtersrv.RegisterFilterServerResponseHeader.schema
│ ├── common.protocol.header.filtersrv.RegisterMessageFilterClassRequestHeader.schema
│ ├── common.protocol.header.GetAllProducerInfoRequestHeader.schema
│ ├── common.protocol.header.GetAllTopicConfigResponseHeader.schema
│ ├── common.protocol.header.GetBrokerAclConfigResponseHeader.schema
│ ├── common.protocol.header.GetBrokerClusterAclConfigResponseHeader.schema
│ ├── common.protocol.header.GetBrokerConfigResponseHeader.schema
│ ├── common.protocol.header.GetConsumerConnectionListRequestHeader.schema
│ ├── common.protocol.header.GetConsumerListByGroupRequestHeader.schema
│ ├── common.protocol.header.GetConsumerListByGroupResponseHeader.schema
│ ├── common.protocol.header.GetConsumerRunningInfoRequestHeader.schema
│ ├── common.protocol.header.GetConsumerStatusRequestHeader.schema
│ ├── common.protocol.header.GetConsumeStatsInBrokerHeader.schema
│ ├── common.protocol.header.GetConsumeStatsRequestHeader.schema
│ ├── common.protocol.header.GetEarliestMsgStoretimeRequestHeader.schema
│ ├── common.protocol.header.GetEarliestMsgStoretimeResponseHeader.schema
│ ├── common.protocol.header.GetMaxOffsetRequestHeader.schema
│ ├── common.protocol.header.GetMaxOffsetResponseHeader.schema
│ ├── common.protocol.header.GetMinOffsetRequestHeader.schema
│ ├── common.protocol.header.GetMinOffsetResponseHeader.schema
│ ├── common.protocol.header.GetProducerConnectionListRequestHeader.schema
│ ├── common.protocol.header.GetTopicsByClusterRequestHeader.schema
│ ├── common.protocol.header.GetTopicStatsInfoRequestHeader.schema
│ ├── common.protocol.header.namesrv.AddWritePermOfBrokerRequestHeader.schema
│ ├── common.protocol.header.namesrv.AddWritePermOfBrokerResponseHeader.schema
│ ├── common.protocol.header.namesrv.DeleteKVConfigRequestHeader.schema
│ ├── common.protocol.header.namesrv.DeleteTopicFromNamesrvRequestHeader.schema
│ ├── common.protocol.header.namesrv.GetKVConfigRequestHeader.schema
│ ├── common.protocol.header.namesrv.GetKVConfigResponseHeader.schema
│ ├── common.protocol.header.namesrv.GetKVListByNamespaceRequestHeader.schema
│ ├── common.protocol.header.namesrv.GetRouteInfoRequestHeader.schema
│ ├── common.protocol.header.namesrv.PutKVConfigRequestHeader.schema
│ ├── common.protocol.header.namesrv.QueryDataVersionRequestHeader.schema
│ ├── common.protocol.header.namesrv.QueryDataVersionResponseHeader.schema
│ ├── common.protocol.header.namesrv.RegisterBrokerRequestHeader.schema
│ ├── common.protocol.header.namesrv.RegisterBrokerResponseHeader.schema
│ ├── common.protocol.header.namesrv.RegisterOrderTopicRequestHeader.schema
│ ├── common.protocol.header.namesrv.UnRegisterBrokerRequestHeader.schema
│ ├── common.protocol.header.namesrv.WipeWritePermOfBrokerRequestHeader.schema
│ ├── common.protocol.header.namesrv.WipeWritePermOfBrokerResponseHeader.schema
│ ├── common.protocol.header.NotifyConsumerIdsChangedRequestHeader.schema
│ ├── common.protocol.header.PullMessageRequestHeader.schema
│ ├── common.protocol.header.PullMessageResponseHeader.schema
│ ├── common.protocol.header.QueryConsumeQueueRequestHeader.schema
│ ├── common.protocol.header.QueryConsumerOffsetRequestHeader.schema
│ ├── common.protocol.header.QueryConsumerOffsetResponseHeader.schema
│ ├── common.protocol.header.QueryConsumeTimeSpanRequestHeader.schema
│ ├── common.protocol.header.QueryCorrectionOffsetHeader.schema
│ ├── common.protocol.header.QueryMessageRequestHeader.schema
│ ├── common.protocol.header.QueryMessageResponseHeader.schema
│ ├── common.protocol.header.QueryTopicConsumeByWhoRequestHeader.schema
│ ├── common.protocol.header.ReplyMessageRequestHeader.schema
│ ├── common.protocol.header.ResetOffsetRequestHeader.schema
│ ├── common.protocol.header.ResumeCheckHalfMessageRequestHeader.schema
│ ├── common.protocol.header.SearchOffsetRequestHeader.schema
│ ├── common.protocol.header.SearchOffsetResponseHeader.schema
│ ├── common.protocol.header.SendMessageRequestHeader.schema
│ ├── common.protocol.header.SendMessageRequestHeaderV2.schema
│ ├── common.protocol.header.SendMessageResponseHeader.schema
│ ├── common.protocol.header.UnregisterClientRequestHeader.schema
│ ├── common.protocol.header.UnregisterClientResponseHeader.schema
│ ├── common.protocol.header.UpdateConsumerOffsetRequestHeader.schema
│ ├── common.protocol.header.UpdateConsumerOffsetResponseHeader.schema
│ ├── common.protocol.header.UpdateGlobalWhiteAddrsConfigRequestHeader.schema
│ ├── common.protocol.header.ViewBrokerStatsDataRequestHeader.schema
│ ├── common.protocol.header.ViewMessageRequestHeader.schema
│ ├── common.protocol.header.ViewMessageResponseHeader.schema
│ └── common.protocol.RequestCode.schema
├── tieredstore
│ ├── BUILD.bazel
│ ├── pom.xml
│ ├── README.md
│ ├── src
│ │ ├── main
│ │ │ └── java
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── rocketmq
│ │ │ └── tieredstore
│ │ │ ├── common
│ │ │ │ ├── AppendResult.java
│ │ │ │ ├── FileSegmentType.java
│ │ │ │ ├── GetMessageResultExt.java
│ │ │ │ ├── InFlightRequestFuture.java
│ │ │ │ ├── InFlightRequestKey.java
│ │ │ │ ├── MessageCacheKey.java
│ │ │ │ ├── SelectBufferResult.java
│ │ │ │ ├── SelectBufferResultWrapper.java
│ │ │ │ ├── TieredMessageStoreConfig.java
│ │ │ │ └── TieredStoreExecutor.java
│ │ │ ├── exception
│ │ │ │ ├── TieredStoreErrorCode.java
│ │ │ │ └── TieredStoreException.java
│ │ │ ├── file
│ │ │ │ ├── CompositeAccess.java
│ │ │ │ ├── CompositeFlatFile.java
│ │ │ │ ├── CompositeQueueFlatFile.java
│ │ │ │ ├── TieredCommitLog.java
│ │ │ │ ├── TieredConsumeQueue.java
│ │ │ │ ├── TieredFileAllocator.java
│ │ │ │ ├── TieredFlatFile.java
│ │ │ │ └── TieredFlatFileManager.java
│ │ │ ├── index
│ │ │ │ ├── IndexFile.java
│ │ │ │ ├── IndexItem.java
│ │ │ │ ├── IndexService.java
│ │ │ │ ├── IndexStoreFile.java
│ │ │ │ └── IndexStoreService.java
│ │ │ ├── MessageStoreFetcher.java
│ │ │ ├── metadata
│ │ │ │ ├── FileSegmentMetadata.java
│ │ │ │ ├── QueueMetadata.java
│ │ │ │ ├── TieredMetadataManager.java
│ │ │ │ ├── TieredMetadataSerializeWrapper.java
│ │ │ │ ├── TieredMetadataStore.java
│ │ │ │ └── TopicMetadata.java
│ │ │ ├── metrics
│ │ │ │ ├── TieredStoreMetricsConstant.java
│ │ │ │ └── TieredStoreMetricsManager.java
│ │ │ ├── provider
│ │ │ │ ├── FileSegmentAllocator.java
│ │ │ │ ├── posix
│ │ │ │ │ └── PosixFileSegment.java
│ │ │ │ ├── stream
│ │ │ │ │ ├── CommitLogInputStream.java
│ │ │ │ │ ├── FileSegmentInputStreamFactory.java
│ │ │ │ │ └── FileSegmentInputStream.java
│ │ │ │ ├── TieredFileSegment.java
│ │ │ │ ├── TieredStoreProvider.java
│ │ │ │ ├── TieredStoreTopicBlackListFilter.java
│ │ │ │ └── TieredStoreTopicFilter.java
│ │ │ ├── TieredDispatcher.java
│ │ │ ├── TieredMessageFetcher.java
│ │ │ ├── TieredMessageStore.java
│ │ │ └── util
│ │ │ ├── CQItemBufferUtil.java
│ │ │ ├── MessageBufferUtil.java
│ │ │ └── TieredStoreUtil.java
│ │ └── test
│ │ ├── java
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── rocketmq
│ │ │ └── tieredstore
│ │ │ ├── common
│ │ │ │ ├── GetMessageResultExtTest.java
│ │ │ │ ├── InFlightRequestFutureTest.java
│ │ │ │ └── SelectBufferResultTest.java
│ │ │ ├── file
│ │ │ │ ├── CompositeQueueFlatFileTest.java
│ │ │ │ ├── TieredCommitLogTest.java
│ │ │ │ ├── TieredFlatFileManagerTest.java
│ │ │ │ └── TieredFlatFileTest.java
│ │ │ ├── index
│ │ │ │ ├── IndexItemTest.java
│ │ │ │ ├── IndexStoreFileTest.java
│ │ │ │ ├── IndexStoreServiceBenchTest.java
│ │ │ │ └── IndexStoreServiceTest.java
│ │ │ ├── metadata
│ │ │ │ └── TieredMetadataManagerTest.java
│ │ │ ├── metrics
│ │ │ │ └── TieredStoreMetricsManagerTest.java
│ │ │ ├── provider
│ │ │ │ ├── memory
│ │ │ │ │ ├── MemoryFileSegment.java
│ │ │ │ │ └── MemoryFileSegmentWithoutCheck.java
│ │ │ │ ├── MockFileSegmentInputStream.java
│ │ │ │ ├── posix
│ │ │ │ │ └── PosixFileSegmentTest.java
│ │ │ │ ├── TieredFileSegmentInputStreamTest.java
│ │ │ │ ├── TieredFileSegmentTest.java
│ │ │ │ └── TieredStoreTopicBlackListFilterTest.java
│ │ │ ├── TieredDispatcherTest.java
│ │ │ ├── TieredMessageFetcherTest.java
│ │ │ ├── TieredMessageStoreTest.java
│ │ │ ├── TieredStoreTestUtil.java
│ │ │ └── util
│ │ │ ├── CQItemBufferUtilTest.java
│ │ │ ├── MessageBufferUtilTest.java
│ │ │ └── TieredStoreUtilTest.java
│ │ └── resources
│ │ └── rmq.logback-test.xml
│ └── tiered_storage_arch.png
├── tools
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── org
│ │ │ └── apache
│ │ │ └── rocketmq
│ │ │ └── tools
│ │ │ ├── admin
│ │ │ │ ├── api
│ │ │ │ │ ├── BrokerOperatorResult.java
│ │ │ │ │ ├── MessageTrack.java
│ │ │ │ │ └── TrackType.java
│ │ │ │ ├── common
│ │ │ │ │ ├── AdminToolHandler.java
│ │ │ │ │ ├── AdminToolResult.java
│ │ │ │ │ └── AdminToolsResultCodeEnum.java
│ │ │ │ ├── DefaultMQAdminExtImpl.java
│ │ │ │ ├── DefaultMQAdminExt.java
│ │ │ │ ├── MQAdminExt.java
│ │ │ │ └── MQAdminUtils.java
│ │ │ ├── command
│ │ │ │ ├── acl
│ │ │ │ │ ├── ClusterAclConfigVersionListSubCommand.java
│ │ │ │ │ ├── DeleteAccessConfigSubCommand.java
│ │ │ │ │ ├── UpdateAccessConfigSubCommand.java
│ │ │ │ │ └── UpdateGlobalWhiteAddrSubCommand.java
│ │ │ │ ├── broker
│ │ │ │ │ ├── BrokerConsumeStatsSubCommad.java
│ │ │ │ │ ├── BrokerStatusSubCommand.java
│ │ │ │ │ ├── CleanExpiredCQSubCommand.java
│ │ │ │ │ ├── CleanUnusedTopicCommand.java
│ │ │ │ │ ├── CommitLogSetReadAheadSubCommand.java
│ │ │ │ │ ├── DeleteExpiredCommitLogSubCommand.java
│ │ │ │ │ ├── GetBrokerConfigCommand.java
│ │ │ │ │ ├── GetBrokerEpochSubCommand.java
│ │ │ │ │ ├── GetColdDataFlowCtrInfoSubCommand.java
│ │ │ │ │ ├── RemoveColdDataFlowCtrGroupConfigSubCommand.java
│ │ │ │ │ ├── ResetMasterFlushOffsetSubCommand.java
│ │ │ │ │ ├── SendMsgStatusCommand.java
│ │ │ │ │ ├── UpdateBrokerConfigSubCommand.java
│ │ │ │ │ └── UpdateColdDataFlowCtrGroupConfigSubCommand.java
│ │ │ │ ├── cluster
│ │ │ │ │ ├── ClusterListSubCommand.java
│ │ │ │ │ └── CLusterSendMsgRTCommand.java
│ │ │ │ ├── CommandUtil.java
│ │ │ │ ├── connection
│ │ │ │ │ ├── ConsumerConnectionSubCommand.java
│ │ │ │ │ └── ProducerConnectionSubCommand.java
│ │ │ │ ├── consumer
│ │ │ │ │ ├── ConsumerProgressSubCommand.java
│ │ │ │ │ ├── ConsumerStatusSubCommand.java
│ │ │ │ │ ├── ConsumerSubCommand.java
│ │ │ │ │ ├── DeleteSubscriptionGroupCommand.java
│ │ │ │ │ ├── GetConsumerConfigSubCommand.java
│ │ │ │ │ ├── SetConsumeModeSubCommand.java
│ │ │ │ │ ├── StartMonitoringSubCommand.java
│ │ │ │ │ └── UpdateSubGroupSubCommand.java
│ │ │ │ ├── container
│ │ │ │ │ ├── AddBrokerSubCommand.java
│ │ │ │ │ └── RemoveBrokerSubCommand.java
│ │ │ │ ├── controller
│ │ │ │ │ ├── CleanControllerBrokerMetaSubCommand.java
│ │ │ │ │ ├── GetControllerConfigSubCommand.java
│ │ │ │ │ ├── GetControllerMetaDataSubCommand.java
│ │ │ │ │ ├── ReElectMasterSubCommand.java
│ │ │ │ │ └── UpdateControllerConfigSubCommand.java
│ │ │ │ ├── export
│ │ │ │ │ ├── ExportConfigsCommand.java
│ │ │ │ │ ├── ExportMetadataCommand.java
│ │ │ │ │ ├── ExportMetadataInRocksDBCommand.java
│ │ │ │ │ └── ExportMetricsCommand.java
│ │ │ │ ├── ha
│ │ │ │ │ ├── GetSyncStateSetSubCommand.java
│ │ │ │ │ └── HAStatusSubCommand.java
│ │ │ │ ├── message
│ │ │ │ │ ├── CheckMsgSendRTCommand.java
│ │ │ │ │ ├── ConsumeMessageCommand.java
│ │ │ │ │ ├── DecodeMessageIdCommond.java
│ │ │ │ │ ├── DumpCompactionLogCommand.java
│ │ │ │ │ ├── PrintMessageByQueueCommand.java
│ │ │ │ │ ├── PrintMessageSubCommand.java
│ │ │ │ │ ├── QueryMsgByIdSubCommand.java
│ │ │ │ │ ├── QueryMsgByKeySubCommand.java
│ │ │ │ │ ├── QueryMsgByOffsetSubCommand.java
│ │ │ │ │ ├── QueryMsgByUniqueKeySubCommand.java
│ │ │ │ │ ├── QueryMsgTraceByIdSubCommand.java
│ │ │ │ │ └── SendMessageCommand.java
│ │ │ │ ├── metadata
│ │ │ │ │ └── RocksDBConfigToJsonCommand.java
│ │ │ │ ├── MQAdminStartup.java
│ │ │ │ ├── namesrv
│ │ │ │ │ ├── AddWritePermSubCommand.java
│ │ │ │ │ ├── DeleteKvConfigCommand.java
│ │ │ │ │ ├── GetNamesrvConfigCommand.java
│ │ │ │ │ ├── UpdateKvConfigCommand.java
│ │ │ │ │ ├── UpdateNamesrvConfigCommand.java
│ │ │ │ │ └── WipeWritePermSubCommand.java
│ │ │ │ ├── offset
│ │ │ │ │ ├── CloneGroupOffsetCommand.java
│ │ │ │ │ ├── GetConsumerStatusCommand.java
│ │ │ │ │ ├── ResetOffsetByTimeCommand.java
│ │ │ │ │ ├── ResetOffsetByTimeOldCommand.java
│ │ │ │ │ └── SkipAccumulationSubCommand.java
│ │ │ │ ├── producer
│ │ │ │ │ └── ProducerSubCommand.java
│ │ │ │ ├── queue
│ │ │ │ │ └── QueryConsumeQueueCommand.java
│ │ │ │ ├── stats
│ │ │ │ │ └── StatsAllSubCommand.java
│ │ │ │ ├── SubCommandException.java
│ │ │ │ ├── SubCommand.java
│ │ │ │ └── topic
│ │ │ │ ├── AllocateMQSubCommand.java
│ │ │ │ ├── DeleteTopicSubCommand.java
│ │ │ │ ├── RebalanceResult.java
│ │ │ │ ├── RemappingStaticTopicSubCommand.java
│ │ │ │ ├── TopicClusterSubCommand.java
│ │ │ │ ├── TopicListSubCommand.java
│ │ │ │ ├── TopicRouteSubCommand.java
│ │ │ │ ├── TopicStatusSubCommand.java
│ │ │ │ ├── UpdateOrderConfCommand.java
│ │ │ │ ├── UpdateStaticTopicSubCommand.java
│ │ │ │ ├── UpdateTopicPermSubCommand.java
│ │ │ │ └── UpdateTopicSubCommand.java
│ │ │ └── monitor
│ │ │ ├── DefaultMonitorListener.java
│ │ │ ├── DeleteMsgsEvent.java
│ │ │ ├── FailedMsgs.java
│ │ │ ├── MonitorConfig.java
│ │ │ ├── MonitorListener.java
│ │ │ ├── MonitorService.java
│ │ │ └── UndoneMsgs.java
│ │ └── resources
│ │ └── rmq.tools.logback.xml
│ └── test
│ ├── java
│ │ └── org
│ │ └── apache
│ │ └── rocketmq
│ │ └── tools
│ │ ├── admin
│ │ │ └── DefaultMQAdminExtTest.java
│ │ ├── command
│ │ │ ├── acl
│ │ │ │ ├── ClusterAclConfigVersionListSubCommandTest.java
│ │ │ │ ├── DeleteAccessConfigSubCommandTest.java
│ │ │ │ ├── UpdateAccessConfigSubCommandTest.java
│ │ │ │ └── UpdateGlobalWhiteAddrSubCommandTest.java
│ │ │ ├── broker
│ │ │ │ ├── BrokerConsumeStatsSubCommadTest.java
│ │ │ │ ├── BrokerStatusSubCommandTest.java
│ │ │ │ ├── CleanExpiredCQSubCommandTest.java
│ │ │ │ ├── CleanUnusedTopicCommandTest.java
│ │ │ │ ├── DeleteExpiredCommitLogSubCommandTest.java
│ │ │ │ ├── GetBrokerConfigCommandTest.java
│ │ │ │ ├── SendMsgStatusCommandTest.java
│ │ │ │ └── UpdateBrokerConfigSubCommandTest.java
│ │ │ ├── CommandUtilTest.java
│ │ │ ├── connection
│ │ │ │ ├── ConsumerConnectionSubCommandTest.java
│ │ │ │ └── ProducerConnectionSubCommandTest.java
│ │ │ ├── consumer
│ │ │ │ ├── ConsumerProgressSubCommandTest.java
│ │ │ │ ├── ConsumerStatusSubCommandTest.java
│ │ │ │ └── GetConsumerConfigSubCommandTest.java
│ │ │ ├── message
│ │ │ │ ├── ConsumeMessageCommandTest.java
│ │ │ │ ├── QueryMsgByUniqueKeySubCommandTest.java
│ │ │ │ ├── QueryMsgTraceByIdSubCommandTest.java
│ │ │ │ └── SendMessageCommandTest.java
│ │ │ ├── metadata
│ │ │ │ └── ExportMetadataInRocksDBCommandTest.java
│ │ │ ├── namesrv
│ │ │ │ ├── AddWritePermSubCommandTest.java
│ │ │ │ ├── GetNamesrvConfigCommandTest.java
│ │ │ │ ├── UpdateKvConfigCommandTest.java
│ │ │ │ └── WipeWritePermSubCommandTest.java
│ │ │ ├── offset
│ │ │ │ ├── GetConsumerStatusCommandTest.java
│ │ │ │ ├── ResetOffsetByTimeCommandTest.java
│ │ │ │ ├── ResetOffsetByTimeOldCommandTest.java
│ │ │ │ └── SkipAccumulationCommandTest.java
│ │ │ ├── producer
│ │ │ │ └── ProducerSubCommandTest.java
│ │ │ ├── server
│ │ │ │ ├── NameServerMocker.java
│ │ │ │ └── ServerResponseMocker.java
│ │ │ └── topic
│ │ │ ├── AllocateMQSubCommandTest.java
│ │ │ ├── DeleteTopicSubCommandTest.java
│ │ │ ├── TopicClusterSubCommandTest.java
│ │ │ ├── TopicRouteSubCommandTest.java
│ │ │ ├── TopicStatusSubCommandTest.java
│ │ │ ├── UpdateOrderConfCommandTest.java
│ │ │ ├── UpdateTopicPermSubCommandTest.java
│ │ │ └── UpdateTopicSubCommandTest.java
│ │ └── monitor
│ │ ├── DefaultMonitorListenerTest.java
│ │ └── MonitorServiceTest.java
│ └── resources
│ └── rmq.logback-test.xml
└── WORKSPACE
737 directories, 2336 files
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论