Copy disabled (too large)
Download .txt
Showing preview only (16,431K chars total). Download the full file to get everything.
Repository: apache/rocketmq
Branch: develop
Commit: ebf159541817
Files: 2627
Total size: 16.4 MB
Directory structure:
gitextract_8f2xr136/
├── .asf.yaml
├── .bazelrc
├── .bazelversion
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ ├── doc.yml
│ │ ├── enhancement_request.yml
│ │ └── feature_request.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── asf-deploy-settings.xml
│ └── workflows/
│ ├── bazel.yml
│ ├── codeql_analysis.yml
│ ├── coverage.yml
│ ├── integration-test.yml
│ ├── license-checker.yaml
│ ├── maven.yaml
│ ├── misspell_check.yml
│ ├── pr-ci.yml
│ ├── pr-e2e-test.yml
│ ├── push-ci.yml
│ ├── rerun-workflow.yml
│ ├── snapshot-automation.yml
│ └── stale.yml
├── .gitignore
├── .licenserc.yaml
├── BUILD.bazel
├── BUILDING
├── CONTRIBUTING.md
├── LICENSE
├── MODULE.bazel
├── NOTICE
├── README.md
├── WORKSPACE
├── auth/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── auth/
│ │ ├── authentication/
│ │ │ ├── AuthenticationEvaluator.java
│ │ │ ├── builder/
│ │ │ │ ├── AuthenticationContextBuilder.java
│ │ │ │ └── DefaultAuthenticationContextBuilder.java
│ │ │ ├── chain/
│ │ │ │ └── DefaultAuthenticationHandler.java
│ │ │ ├── context/
│ │ │ │ ├── AuthenticationContext.java
│ │ │ │ └── DefaultAuthenticationContext.java
│ │ │ ├── enums/
│ │ │ │ ├── SubjectType.java
│ │ │ │ ├── UserStatus.java
│ │ │ │ └── UserType.java
│ │ │ ├── exception/
│ │ │ │ └── AuthenticationException.java
│ │ │ ├── factory/
│ │ │ │ └── AuthenticationFactory.java
│ │ │ ├── manager/
│ │ │ │ ├── AuthenticationMetadataManager.java
│ │ │ │ └── AuthenticationMetadataManagerImpl.java
│ │ │ ├── model/
│ │ │ │ ├── Subject.java
│ │ │ │ └── User.java
│ │ │ ├── provider/
│ │ │ │ ├── AuthenticationMetadataProvider.java
│ │ │ │ ├── AuthenticationProvider.java
│ │ │ │ ├── DefaultAuthenticationProvider.java
│ │ │ │ └── LocalAuthenticationMetadataProvider.java
│ │ │ └── strategy/
│ │ │ ├── AbstractAuthenticationStrategy.java
│ │ │ ├── AuthenticationStrategy.java
│ │ │ ├── StatefulAuthenticationStrategy.java
│ │ │ └── StatelessAuthenticationStrategy.java
│ │ ├── authorization/
│ │ │ ├── AuthorizationEvaluator.java
│ │ │ ├── builder/
│ │ │ │ ├── AuthorizationContextBuilder.java
│ │ │ │ └── DefaultAuthorizationContextBuilder.java
│ │ │ ├── chain/
│ │ │ │ ├── AclAuthorizationHandler.java
│ │ │ │ └── UserAuthorizationHandler.java
│ │ │ ├── context/
│ │ │ │ ├── AuthorizationContext.java
│ │ │ │ └── DefaultAuthorizationContext.java
│ │ │ ├── enums/
│ │ │ │ ├── Decision.java
│ │ │ │ └── PolicyType.java
│ │ │ ├── exception/
│ │ │ │ └── AuthorizationException.java
│ │ │ ├── factory/
│ │ │ │ └── AuthorizationFactory.java
│ │ │ ├── manager/
│ │ │ │ ├── AuthorizationMetadataManager.java
│ │ │ │ └── AuthorizationMetadataManagerImpl.java
│ │ │ ├── model/
│ │ │ │ ├── Acl.java
│ │ │ │ ├── Environment.java
│ │ │ │ ├── Policy.java
│ │ │ │ ├── PolicyEntry.java
│ │ │ │ ├── RequestContext.java
│ │ │ │ └── Resource.java
│ │ │ ├── provider/
│ │ │ │ ├── AuthorizationMetadataProvider.java
│ │ │ │ ├── AuthorizationProvider.java
│ │ │ │ ├── DefaultAuthorizationProvider.java
│ │ │ │ └── LocalAuthorizationMetadataProvider.java
│ │ │ └── strategy/
│ │ │ ├── AbstractAuthorizationStrategy.java
│ │ │ ├── AuthorizationStrategy.java
│ │ │ ├── StatefulAuthorizationStrategy.java
│ │ │ └── StatelessAuthorizationStrategy.java
│ │ ├── config/
│ │ │ └── AuthConfig.java
│ │ └── migration/
│ │ ├── AuthMigrator.java
│ │ └── v1/
│ │ ├── AccessResource.java
│ │ ├── AclConfig.java
│ │ ├── PlainAccessConfig.java
│ │ ├── PlainAccessData.java
│ │ ├── PlainAccessResource.java
│ │ └── PlainPermissionManager.java
│ └── test/
│ └── java/
│ └── org/
│ └── apache/
│ └── rocketmq/
│ └── auth/
│ ├── authentication/
│ │ ├── AuthenticationEvaluatorTest.java
│ │ ├── builder/
│ │ │ └── DefaultAuthenticationContextBuilderTest.java
│ │ ├── manager/
│ │ │ └── AuthenticationMetadataManagerTest.java
│ │ └── provider/
│ │ └── LocalAuthenticationMetadataProviderTest.java
│ ├── authorization/
│ │ ├── AuthorizationEvaluatorTest.java
│ │ ├── builder/
│ │ │ └── DefaultAuthorizationContextBuilderTest.java
│ │ ├── chain/
│ │ │ ├── AclAuthorizationHandlerTest.java
│ │ │ └── UserAuthorizationHandlerTest.java
│ │ ├── manager/
│ │ │ └── AuthorizationMetadataManagerTest.java
│ │ ├── model/
│ │ │ └── ResourceTest.java
│ │ ├── provider/
│ │ │ └── LocalAuthorizationMetadataProviderTest.java
│ │ └── strategy/
│ │ └── StatefulAuthorizationStrategyTest.java
│ ├── helper/
│ │ └── AuthTestHelper.java
│ └── migration/
│ └── AuthMigratorTest.java
├── 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
│ │ │ ├── ConfigContext.java
│ │ │ ├── ShutdownHook.java
│ │ │ ├── auth/
│ │ │ │ ├── converter/
│ │ │ │ │ ├── AclConverter.java
│ │ │ │ │ └── UserConverter.java
│ │ │ │ └── pipeline/
│ │ │ │ ├── AuthenticationPipeline.java
│ │ │ │ └── AuthorizationPipeline.java
│ │ │ ├── client/
│ │ │ │ ├── ClientChannelAttributeHelper.java
│ │ │ │ ├── ClientChannelInfo.java
│ │ │ │ ├── ClientHousekeepingService.java
│ │ │ │ ├── ConsumerGroupEvent.java
│ │ │ │ ├── ConsumerGroupInfo.java
│ │ │ │ ├── ConsumerIdsChangeListener.java
│ │ │ │ ├── ConsumerManager.java
│ │ │ │ ├── DefaultConsumerIdsChangeListener.java
│ │ │ │ ├── ProducerChangeListener.java
│ │ │ │ ├── ProducerGroupEvent.java
│ │ │ │ ├── ProducerManager.java
│ │ │ │ ├── net/
│ │ │ │ │ └── Broker2Client.java
│ │ │ │ └── rebalance/
│ │ │ │ └── RebalanceLockManager.java
│ │ │ ├── coldctr/
│ │ │ │ ├── ColdCtrStrategy.java
│ │ │ │ ├── ColdDataCgCtrService.java
│ │ │ │ ├── ColdDataPullRequestHoldService.java
│ │ │ │ ├── PIDAdaptiveColdCtrStrategy.java
│ │ │ │ └── SimpleColdCtrStrategy.java
│ │ │ ├── config/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── RocksDBConfigManager.java
│ │ │ │ │ ├── RocksDBConsumerOffsetManager.java
│ │ │ │ │ ├── RocksDBLmqSubscriptionGroupManager.java
│ │ │ │ │ ├── RocksDBLmqTopicConfigManager.java
│ │ │ │ │ ├── RocksDBOffsetSerializeWrapper.java
│ │ │ │ │ ├── RocksDBSubscriptionGroupManager.java
│ │ │ │ │ └── RocksDBTopicConfigManager.java
│ │ │ │ └── v2/
│ │ │ │ ├── ConfigHelper.java
│ │ │ │ ├── ConfigStorage.java
│ │ │ │ ├── ConsumerOffsetManagerV2.java
│ │ │ │ ├── RecordPrefix.java
│ │ │ │ ├── SerializationType.java
│ │ │ │ ├── SubscriptionGroupManagerV2.java
│ │ │ │ ├── TableId.java
│ │ │ │ ├── TablePrefix.java
│ │ │ │ ├── TopicConfigManagerV2.java
│ │ │ │ └── package-info.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
│ │ │ ├── lite/
│ │ │ │ ├── AbstractLiteLifecycleManager.java
│ │ │ │ ├── LiteCtlListener.java
│ │ │ │ ├── LiteEventDispatcher.java
│ │ │ │ ├── LiteLifecycleManager.java
│ │ │ │ ├── LiteMetadataUtil.java
│ │ │ │ ├── LiteQuotaException.java
│ │ │ │ ├── LiteSharding.java
│ │ │ │ ├── LiteShardingImpl.java
│ │ │ │ ├── LiteSubscriptionRegistry.java
│ │ │ │ ├── LiteSubscriptionRegistryImpl.java
│ │ │ │ └── RocksDBLiteLifecycleManager.java
│ │ │ ├── loadbalance/
│ │ │ │ └── MessageRequestModeManager.java
│ │ │ ├── longpolling/
│ │ │ │ ├── LmqPullRequestHoldService.java
│ │ │ │ ├── ManyPullRequest.java
│ │ │ │ ├── NotificationRequest.java
│ │ │ │ ├── NotifyMessageArrivingListener.java
│ │ │ │ ├── PollingHeader.java
│ │ │ │ ├── PollingResult.java
│ │ │ │ ├── PopCommandCallback.java
│ │ │ │ ├── PopLiteLongPollingService.java
│ │ │ │ ├── PopLongPollingService.java
│ │ │ │ ├── PopRequest.java
│ │ │ │ ├── PullRequest.java
│ │ │ │ └── PullRequestHoldService.java
│ │ │ ├── metrics/
│ │ │ │ ├── BrokerMetricsConstant.java
│ │ │ │ ├── BrokerMetricsManager.java
│ │ │ │ ├── ConsumerAttr.java
│ │ │ │ ├── ConsumerLagCalculator.java
│ │ │ │ ├── InvocationStatus.java
│ │ │ │ ├── LiteConsumerLagCalculator.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
│ │ │ │ ├── LmqConsumerOffsetManager.java
│ │ │ │ └── MemoryConsumerOrderInfoManager.java
│ │ │ ├── out/
│ │ │ │ └── BrokerOuterAPI.java
│ │ │ ├── pagecache/
│ │ │ │ ├── ManyMessageTransfer.java
│ │ │ │ ├── OneMessageTransfer.java
│ │ │ │ └── QueryMessageTransfer.java
│ │ │ ├── plugin/
│ │ │ │ ├── BrokerAttachedPlugin.java
│ │ │ │ └── PullMessageResultHandler.java
│ │ │ ├── pop/
│ │ │ │ ├── PopConsumerCache.java
│ │ │ │ ├── PopConsumerContext.java
│ │ │ │ ├── PopConsumerKVStore.java
│ │ │ │ ├── PopConsumerLockService.java
│ │ │ │ ├── PopConsumerRecord.java
│ │ │ │ ├── PopConsumerRocksdbStore.java
│ │ │ │ ├── PopConsumerService.java
│ │ │ │ └── orderly/
│ │ │ │ ├── ConsumerOrderInfoManager.java
│ │ │ │ ├── QueueLevelConsumerManager.java
│ │ │ │ └── QueueLevelConsumerOrderInfoLockManager.java
│ │ │ ├── processor/
│ │ │ │ ├── AbstractSendMessageProcessor.java
│ │ │ │ ├── AckMessageProcessor.java
│ │ │ │ ├── AdminBrokerProcessor.java
│ │ │ │ ├── ChangeInvisibleTimeProcessor.java
│ │ │ │ ├── ClientManageProcessor.java
│ │ │ │ ├── ConsumerManageProcessor.java
│ │ │ │ ├── DefaultPullMessageResultHandler.java
│ │ │ │ ├── EndTransactionProcessor.java
│ │ │ │ ├── LiteManagerProcessor.java
│ │ │ │ ├── LiteSubscriptionCtlProcessor.java
│ │ │ │ ├── NotificationProcessor.java
│ │ │ │ ├── PeekMessageProcessor.java
│ │ │ │ ├── PollingInfoProcessor.java
│ │ │ │ ├── PopBufferMergeService.java
│ │ │ │ ├── PopInflightMessageCounter.java
│ │ │ │ ├── PopLiteMessageProcessor.java
│ │ │ │ ├── PopMessageProcessor.java
│ │ │ │ ├── PopReviveService.java
│ │ │ │ ├── PullMessageProcessor.java
│ │ │ │ ├── QueryAssignmentProcessor.java
│ │ │ │ ├── QueryMessageProcessor.java
│ │ │ │ ├── RecallMessageProcessor.java
│ │ │ │ ├── ReplyMessageProcessor.java
│ │ │ │ ├── SendMessageCallback.java
│ │ │ │ └── SendMessageProcessor.java
│ │ │ ├── schedule/
│ │ │ │ ├── DelayOffsetSerializeWrapper.java
│ │ │ │ └── ScheduleMessageService.java
│ │ │ ├── slave/
│ │ │ │ └── SlaveSynchronize.java
│ │ │ ├── subscription/
│ │ │ │ ├── LmqSubscriptionGroupManager.java
│ │ │ │ └── SubscriptionGroupManager.java
│ │ │ ├── topic/
│ │ │ │ ├── LmqTopicConfigManager.java
│ │ │ │ ├── TopicConfigManager.java
│ │ │ │ ├── TopicQueueMappingCleanService.java
│ │ │ │ ├── TopicQueueMappingManager.java
│ │ │ │ └── TopicRouteInfoManager.java
│ │ │ ├── transaction/
│ │ │ │ ├── AbstractTransactionalMessageCheckListener.java
│ │ │ │ ├── OperationResult.java
│ │ │ │ ├── TransactionMetrics.java
│ │ │ │ ├── TransactionMetricsFlushService.java
│ │ │ │ ├── TransactionalMessageCheckService.java
│ │ │ │ ├── TransactionalMessageService.java
│ │ │ │ ├── queue/
│ │ │ │ │ ├── DefaultTransactionalMessageCheckListener.java
│ │ │ │ │ ├── GetResult.java
│ │ │ │ │ ├── MessageQueueOpContext.java
│ │ │ │ │ ├── TransactionalMessageBridge.java
│ │ │ │ │ ├── TransactionalMessageServiceImpl.java
│ │ │ │ │ ├── TransactionalMessageUtil.java
│ │ │ │ │ └── TransactionalOpBatchService.java
│ │ │ │ └── rocksdb/
│ │ │ │ └── TransactionalMessageRocksDBService.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
│ │ ├── BrokerShutdownTest.java
│ │ ├── BrokerStartupTest.java
│ │ ├── RocksDBConfigManagerTest.java
│ │ ├── client/
│ │ │ ├── ConsumerManagerScannerTest.java
│ │ │ ├── ConsumerManagerTest.java
│ │ │ ├── ProducerManagerTest.java
│ │ │ ├── net/
│ │ │ │ └── Broker2ClientTest.java
│ │ │ └── rebalance/
│ │ │ └── RebalanceLockManagerTest.java
│ │ ├── coldctr/
│ │ │ └── ColdDataCgCtrServiceTest.java
│ │ ├── config/
│ │ │ ├── v1/
│ │ │ │ ├── RocksDBConsumerOffsetManagerMigrationTest.java
│ │ │ │ ├── RocksDBSubscriptionGroupManagerMigrationTest.java
│ │ │ │ ├── RocksDBSubscriptionGroupManagerTest.java
│ │ │ │ ├── RocksDBTopicConfigManagerMigrationTest.java
│ │ │ │ └── RocksDBTopicConfigManagerTest.java
│ │ │ └── v2/
│ │ │ ├── ConsumerOffsetManagerV2Test.java
│ │ │ ├── SubscriptionGroupManagerV2Test.java
│ │ │ └── TopicConfigManagerV2Test.java
│ │ ├── controller/
│ │ │ ├── ReplicasManagerRegisterTest.java
│ │ │ └── ReplicasManagerTest.java
│ │ ├── failover/
│ │ │ └── EscapeBridgeTest.java
│ │ ├── filter/
│ │ │ ├── CommitLogDispatcherCalcBitMapTest.java
│ │ │ ├── ConsumerFilterManagerTest.java
│ │ │ └── MessageStoreWithFilterTest.java
│ │ ├── latency/
│ │ │ └── BrokerFastFailureTest.java
│ │ ├── lite/
│ │ │ ├── AbstractLiteLifecycleManagerTest.java
│ │ │ ├── LiteEventDispatcherTest.java
│ │ │ ├── LiteLifecycleManagerTest.java
│ │ │ ├── LiteShardingImplTest.java
│ │ │ ├── LiteSubscriptionRegistryImplTest.java
│ │ │ ├── LiteTestUtil.java
│ │ │ └── RocksDBLiteLifecycleManagerTest.java
│ │ ├── longpolling/
│ │ │ ├── PopLiteLongPollingServiceTest.java
│ │ │ ├── PopLongPollingServiceTest.java
│ │ │ └── PullRequestHoldServiceTest.java
│ │ ├── metrics/
│ │ │ ├── BrokerMetricsManagerTest.java
│ │ │ └── LiteConsumerLagCalculatorTest.java
│ │ ├── offset/
│ │ │ ├── BroadcastOffsetManagerTest.java
│ │ │ ├── BroadcastOffsetStoreTest.java
│ │ │ ├── ConsumerOffsetManagerTest.java
│ │ │ ├── LmqConsumerOffsetManagerTest.java
│ │ │ ├── RocksDBConsumerOffsetManagerTest.java
│ │ │ ├── RocksDBLmqConsumerOffsetManagerTest.java
│ │ │ ├── RocksDBOffsetSerializeWrapperTest.java
│ │ │ └── RocksdbTransferOffsetAndCqTest.java
│ │ ├── pagecache/
│ │ │ ├── ManyMessageTransferTest.java
│ │ │ ├── OneMessageTransferTest.java
│ │ │ └── QueryMessageTransferTest.java
│ │ ├── pop/
│ │ │ ├── PopConsumerCacheTest.java
│ │ │ ├── PopConsumerContextTest.java
│ │ │ ├── PopConsumerLockServiceTest.java
│ │ │ ├── PopConsumerRecordTest.java
│ │ │ ├── PopConsumerRocksdbStoreTest.java
│ │ │ ├── PopConsumerServiceTest.java
│ │ │ └── orderly/
│ │ │ ├── ConsumerOrderInfoManagerLockFreeNotifyTest.java
│ │ │ └── ConsumerOrderInfoManagerTest.java
│ │ ├── processor/
│ │ │ ├── AckMessageProcessorTest.java
│ │ │ ├── AdminBrokerProcessorTest.java
│ │ │ ├── ChangeInvisibleTimeProcessorTest.java
│ │ │ ├── ClientManageProcessorTest.java
│ │ │ ├── ConsumerManageProcessorTest.java
│ │ │ ├── EndTransactionProcessorTest.java
│ │ │ ├── LiteManagerProcessorTest.java
│ │ │ ├── LiteSubscriptionCtlProcessorTest.java
│ │ │ ├── PeekMessageProcessorTest.java
│ │ │ ├── PopBufferMergeServiceTest.java
│ │ │ ├── PopInflightMessageCounterTest.java
│ │ │ ├── PopLiteMessageProcessorTest.java
│ │ │ ├── PopMessageProcessorTest.java
│ │ │ ├── PopReviveServiceTest.java
│ │ │ ├── PullMessageProcessorTest.java
│ │ │ ├── QueryAssignmentProcessorTest.java
│ │ │ ├── QueryMessageProcessorTest.java
│ │ │ ├── RecallMessageProcessorTest.java
│ │ │ ├── ReplyMessageProcessorTest.java
│ │ │ └── SendMessageProcessorTest.java
│ │ ├── schedule/
│ │ │ └── ScheduleMessageServiceTest.java
│ │ ├── slave/
│ │ │ ├── SlaveSynchronizeAtomicTest.java
│ │ │ └── SlaveSynchronizeTest.java
│ │ ├── subscription/
│ │ │ ├── ForbiddenTest.java
│ │ │ ├── RocksdbGroupConfigTransferTest.java
│ │ │ └── SubscriptionGroupManagerTest.java
│ │ ├── topic/
│ │ │ ├── RocksdbTopicConfigManagerTest.java
│ │ │ ├── RocksdbTopicConfigTransferTest.java
│ │ │ ├── TopicConfigManagerTest.java
│ │ │ ├── TopicQueueMappingCleanServiceTest.java
│ │ │ └── TopicQueueMappingManagerTest.java
│ │ ├── transaction/
│ │ │ └── queue/
│ │ │ ├── DefaultTransactionalMessageCheckListenerTest.java
│ │ │ ├── TransactionMetricsTest.java
│ │ │ ├── TransactionalMessageBridgeTest.java
│ │ │ ├── TransactionalMessageServiceImplTest.java
│ │ │ └── TransactionalMessageUtilTest.java
│ │ └── util/
│ │ ├── HookUtilsTest.java
│ │ ├── LogTransactionalMessageCheckListener.java
│ │ ├── ServiceProviderTest.java
│ │ └── TransactionalMessageServiceImpl.java
│ └── resources/
│ ├── META-INF/
│ │ └── service/
│ │ ├── org.apache.rocketmq.broker.transaction.AbstractTransactionalMessageCheckListener
│ │ └── org.apache.rocketmq.broker.transaction.TransactionalMessageService
│ └── rmq.logback-test.xml
├── client/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── rocketmq/
│ │ │ ├── acl/
│ │ │ │ └── common/
│ │ │ │ ├── AclClientRPCHook.java
│ │ │ │ ├── AclConstants.java
│ │ │ │ ├── AclException.java
│ │ │ │ ├── AclSigner.java
│ │ │ │ ├── AclUtils.java
│ │ │ │ ├── Permission.java
│ │ │ │ ├── SessionCredentials.java
│ │ │ │ └── SigningAlgorithm.java
│ │ │ └── client/
│ │ │ ├── AccessChannel.java
│ │ │ ├── ClientConfig.java
│ │ │ ├── MQAdmin.java
│ │ │ ├── MQHelper.java
│ │ │ ├── MqClientAdmin.java
│ │ │ ├── QueryResult.java
│ │ │ ├── Validators.java
│ │ │ ├── admin/
│ │ │ │ └── MQAdminExtInner.java
│ │ │ ├── common/
│ │ │ │ ├── ClientErrorCode.java
│ │ │ │ ├── NameserverAccessConfig.java
│ │ │ │ └── ThreadLocalIndex.java
│ │ │ ├── consumer/
│ │ │ │ ├── AckCallback.java
│ │ │ │ ├── AckResult.java
│ │ │ │ ├── AckStatus.java
│ │ │ │ ├── AllocateMessageQueueStrategy.java
│ │ │ │ ├── DefaultLitePullConsumer.java
│ │ │ │ ├── DefaultMQPullConsumer.java
│ │ │ │ ├── DefaultMQPushConsumer.java
│ │ │ │ ├── LitePullConsumer.java
│ │ │ │ ├── MQConsumer.java
│ │ │ │ ├── MQPullConsumer.java
│ │ │ │ ├── MQPullConsumerScheduleService.java
│ │ │ │ ├── MQPushConsumer.java
│ │ │ │ ├── MessageQueueListener.java
│ │ │ │ ├── MessageSelector.java
│ │ │ │ ├── NotifyResult.java
│ │ │ │ ├── PopCallback.java
│ │ │ │ ├── PopResult.java
│ │ │ │ ├── PopStatus.java
│ │ │ │ ├── PullCallback.java
│ │ │ │ ├── PullResult.java
│ │ │ │ ├── PullStatus.java
│ │ │ │ ├── PullTaskCallback.java
│ │ │ │ ├── PullTaskContext.java
│ │ │ │ ├── TopicMessageQueueChangeListener.java
│ │ │ │ ├── listener/
│ │ │ │ │ ├── ConsumeConcurrentlyContext.java
│ │ │ │ │ ├── ConsumeConcurrentlyStatus.java
│ │ │ │ │ ├── ConsumeOrderlyContext.java
│ │ │ │ │ ├── ConsumeOrderlyStatus.java
│ │ │ │ │ ├── ConsumeReturnType.java
│ │ │ │ │ ├── MessageListener.java
│ │ │ │ │ ├── MessageListenerConcurrently.java
│ │ │ │ │ └── MessageListenerOrderly.java
│ │ │ │ ├── rebalance/
│ │ │ │ │ ├── AbstractAllocateMessageQueueStrategy.java
│ │ │ │ │ ├── AllocateMachineRoomNearby.java
│ │ │ │ │ ├── AllocateMessageQueueAveragely.java
│ │ │ │ │ ├── AllocateMessageQueueAveragelyByCircle.java
│ │ │ │ │ ├── AllocateMessageQueueByConfig.java
│ │ │ │ │ ├── AllocateMessageQueueByMachineRoom.java
│ │ │ │ │ └── AllocateMessageQueueConsistentHash.java
│ │ │ │ └── store/
│ │ │ │ ├── ControllableOffset.java
│ │ │ │ ├── LocalFileOffsetStore.java
│ │ │ │ ├── OffsetSerializeWrapper.java
│ │ │ │ ├── OffsetStore.java
│ │ │ │ ├── ReadOffsetType.java
│ │ │ │ └── RemoteBrokerOffsetStore.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/
│ │ │ │ ├── ClientRemotingProcessor.java
│ │ │ │ ├── CommunicationMode.java
│ │ │ │ ├── FindBrokerResult.java
│ │ │ │ ├── MQAdminImpl.java
│ │ │ │ ├── MQClientAPIImpl.java
│ │ │ │ ├── MQClientManager.java
│ │ │ │ ├── admin/
│ │ │ │ │ └── MqClientAdminImpl.java
│ │ │ │ ├── consumer/
│ │ │ │ │ ├── AssignedMessageQueue.java
│ │ │ │ │ ├── ConsumeMessageConcurrentlyService.java
│ │ │ │ │ ├── ConsumeMessageOrderlyService.java
│ │ │ │ │ ├── ConsumeMessagePopConcurrentlyService.java
│ │ │ │ │ ├── ConsumeMessagePopOrderlyService.java
│ │ │ │ │ ├── ConsumeMessageService.java
│ │ │ │ │ ├── DefaultLitePullConsumerImpl.java
│ │ │ │ │ ├── DefaultMQPullConsumerImpl.java
│ │ │ │ │ ├── DefaultMQPushConsumerImpl.java
│ │ │ │ │ ├── MQConsumerInner.java
│ │ │ │ │ ├── MessageQueueLock.java
│ │ │ │ │ ├── MessageRequest.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
│ │ │ │ ├── mqclient/
│ │ │ │ │ ├── DoNothingClientRemotingProcessor.java
│ │ │ │ │ ├── MQClientAPIExt.java
│ │ │ │ │ └── MQClientAPIFactory.java
│ │ │ │ └── producer/
│ │ │ │ ├── DefaultMQProducerImpl.java
│ │ │ │ ├── MQProducerInner.java
│ │ │ │ └── TopicPublishInfo.java
│ │ │ ├── latency/
│ │ │ │ ├── LatencyFaultTolerance.java
│ │ │ │ ├── LatencyFaultToleranceImpl.java
│ │ │ │ ├── MQFaultStrategy.java
│ │ │ │ ├── Resolver.java
│ │ │ │ └── ServiceDetector.java
│ │ │ ├── lock/
│ │ │ │ └── ReadWriteCASLock.java
│ │ │ ├── producer/
│ │ │ │ ├── DefaultMQProducer.java
│ │ │ │ ├── LocalTransactionState.java
│ │ │ │ ├── MQProducer.java
│ │ │ │ ├── MessageQueueSelector.java
│ │ │ │ ├── ProduceAccumulator.java
│ │ │ │ ├── RequestCallback.java
│ │ │ │ ├── RequestFutureHolder.java
│ │ │ │ ├── RequestResponseFuture.java
│ │ │ │ ├── SendCallback.java
│ │ │ │ ├── SendResult.java
│ │ │ │ ├── SendStatus.java
│ │ │ │ ├── TransactionCheckListener.java
│ │ │ │ ├── TransactionListener.java
│ │ │ │ ├── TransactionMQProducer.java
│ │ │ │ ├── TransactionSendResult.java
│ │ │ │ └── selector/
│ │ │ │ ├── SelectMessageQueueByHash.java
│ │ │ │ ├── SelectMessageQueueByMachineRoom.java
│ │ │ │ └── SelectMessageQueueByRandom.java
│ │ │ ├── rpchook/
│ │ │ │ └── NamespaceRpcHook.java
│ │ │ ├── stat/
│ │ │ │ └── ConsumerStatsManager.java
│ │ │ ├── trace/
│ │ │ │ ├── AsyncTraceDispatcher.java
│ │ │ │ ├── TraceBean.java
│ │ │ │ ├── TraceConstants.java
│ │ │ │ ├── TraceContext.java
│ │ │ │ ├── TraceDataEncoder.java
│ │ │ │ ├── TraceDispatcher.java
│ │ │ │ ├── TraceDispatcherType.java
│ │ │ │ ├── TraceTransferBean.java
│ │ │ │ ├── TraceType.java
│ │ │ │ ├── TraceView.java
│ │ │ │ └── hook/
│ │ │ │ ├── ConsumeMessageOpenTracingHookImpl.java
│ │ │ │ ├── ConsumeMessageTraceHookImpl.java
│ │ │ │ ├── DefaultRecallMessageTraceHook.java
│ │ │ │ ├── EndTransactionOpenTracingHookImpl.java
│ │ │ │ ├── EndTransactionTraceHookImpl.java
│ │ │ │ ├── SendMessageOpenTracingHookImpl.java
│ │ │ │ └── SendMessageTraceHookImpl.java
│ │ │ └── utils/
│ │ │ └── MessageUtil.java
│ │ └── resources/
│ │ └── rmq.client.logback.xml
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ ├── acl/
│ │ │ └── common/
│ │ │ ├── AclClientRPCHookTest.java
│ │ │ ├── AclSignerTest.java
│ │ │ ├── AclUtilsTest.java
│ │ │ ├── PermissionTest.java
│ │ │ └── SessionCredentialsTest.java
│ │ └── client/
│ │ ├── ClientConfigTest.java
│ │ ├── ValidatorsTest.java
│ │ ├── common/
│ │ │ └── ThreadLocalIndexTest.java
│ │ ├── consumer/
│ │ │ ├── DefaultLitePullConsumerTest.java
│ │ │ ├── DefaultMQPullConsumerTest.java
│ │ │ ├── DefaultMQPushConsumerTest.java
│ │ │ ├── rebalance/
│ │ │ │ ├── AllocateMachineRoomNearByTest.java
│ │ │ │ ├── AllocateMessageQueueAveragelyByCircleTest.java
│ │ │ │ ├── AllocateMessageQueueAveragelyTest.java
│ │ │ │ ├── AllocateMessageQueueByConfigTest.java
│ │ │ │ ├── AllocateMessageQueueByMachineRoomTest.java
│ │ │ │ └── AllocateMessageQueueConsitentHashTest.java
│ │ │ └── store/
│ │ │ ├── ControllableOffsetTest.java
│ │ │ ├── LocalFileOffsetStoreTest.java
│ │ │ └── RemoteBrokerOffsetStoreTest.java
│ │ ├── impl/
│ │ │ ├── ClientRemotingProcessorTest.java
│ │ │ ├── MQAdminImplTest.java
│ │ │ ├── MQClientAPIImplTest.java
│ │ │ ├── admin/
│ │ │ │ └── MqClientAdminImplTest.java
│ │ │ ├── consumer/
│ │ │ │ ├── ConsumeMessageConcurrentlyServiceTest.java
│ │ │ │ ├── ConsumeMessageOrderlyServiceTest.java
│ │ │ │ ├── ConsumeMessagePopConcurrentlyServiceTest.java
│ │ │ │ ├── ConsumeMessagePopOrderlyServiceTest.java
│ │ │ │ ├── DefaultLitePullConsumerImplTest.java
│ │ │ │ ├── DefaultMQPushConsumerImplTest.java
│ │ │ │ ├── PopProcessQueueTest.java
│ │ │ │ ├── ProcessQueueTest.java
│ │ │ │ ├── PullAPIWrapperTest.java
│ │ │ │ ├── PullMessageServiceTest.java
│ │ │ │ ├── RebalanceLitePullImplTest.java
│ │ │ │ └── RebalancePushImplTest.java
│ │ │ ├── factory/
│ │ │ │ └── MQClientInstanceTest.java
│ │ │ └── mqclient/
│ │ │ ├── MQClientAPIExtTest.java
│ │ │ └── MQClientAPITest.java
│ │ ├── latency/
│ │ │ └── LatencyFaultToleranceImplTest.java
│ │ ├── producer/
│ │ │ ├── DefaultMQProducerTest.java
│ │ │ ├── ProduceAccumulatorTest.java
│ │ │ ├── RequestResponseFutureTest.java
│ │ │ ├── SendResultTest.java
│ │ │ └── selector/
│ │ │ ├── DefaultMQProducerImplTest.java
│ │ │ ├── SelectMessageQueueByHashTest.java
│ │ │ ├── SelectMessageQueueByRandomTest.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
│ └── resources/
│ ├── acl_hook/
│ │ └── plain_acl.yml
│ ├── conf/
│ │ └── plain_acl_incomplete.yml
│ ├── org/
│ │ └── powermock/
│ │ └── extensions/
│ │ └── configuration.properties
│ └── rmq.logback-test.xml
├── common/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── rocketmq/
│ │ │ └── common/
│ │ │ ├── AbortProcessException.java
│ │ │ ├── BoundaryType.java
│ │ │ ├── BrokerConfig.java
│ │ │ ├── BrokerConfigSingleton.java
│ │ │ ├── BrokerIdentity.java
│ │ │ ├── CheckRocksdbCqWriteResult.java
│ │ │ ├── ConfigManager.java
│ │ │ ├── ControllerConfig.java
│ │ │ ├── CountDownLatch2.java
│ │ │ ├── JraftConfig.java
│ │ │ ├── KeyBuilder.java
│ │ │ ├── LifecycleAwareServiceThread.java
│ │ │ ├── LockCallback.java
│ │ │ ├── MQVersion.java
│ │ │ ├── MixAll.java
│ │ │ ├── ObjectCreator.java
│ │ │ ├── OrderedConsumptionLevel.java
│ │ │ ├── Pair.java
│ │ │ ├── PopAckConstants.java
│ │ │ ├── ServiceState.java
│ │ │ ├── ServiceThread.java
│ │ │ ├── SubscriptionGroupAttributes.java
│ │ │ ├── SystemClock.java
│ │ │ ├── ThreadFactoryImpl.java
│ │ │ ├── TopicAttributes.java
│ │ │ ├── TopicConfig.java
│ │ │ ├── TopicFilterType.java
│ │ │ ├── TopicQueueId.java
│ │ │ ├── UnlockCallback.java
│ │ │ ├── UtilAll.java
│ │ │ ├── action/
│ │ │ │ ├── Action.java
│ │ │ │ └── RocketMQAction.java
│ │ │ ├── annotation/
│ │ │ │ └── ImportantField.java
│ │ │ ├── attribute/
│ │ │ │ ├── Attribute.java
│ │ │ │ ├── AttributeParser.java
│ │ │ │ ├── AttributeUtil.java
│ │ │ │ ├── BooleanAttribute.java
│ │ │ │ ├── CQType.java
│ │ │ │ ├── CleanupPolicy.java
│ │ │ │ ├── EnumAttribute.java
│ │ │ │ ├── LiteSubModel.java
│ │ │ │ ├── LongRangeAttribute.java
│ │ │ │ ├── StringAttribute.java
│ │ │ │ └── TopicMessageType.java
│ │ │ ├── chain/
│ │ │ │ ├── Handler.java
│ │ │ │ └── HandlerChain.java
│ │ │ ├── coldctr/
│ │ │ │ └── AccAndTimeStamp.java
│ │ │ ├── compression/
│ │ │ │ ├── CompressionType.java
│ │ │ │ ├── Compressor.java
│ │ │ │ ├── CompressorFactory.java
│ │ │ │ ├── Lz4Compressor.java
│ │ │ │ ├── ZlibCompressor.java
│ │ │ │ └── ZstdCompressor.java
│ │ │ ├── config/
│ │ │ │ ├── AbstractRocksDBStorage.java
│ │ │ │ ├── ConfigHelper.java
│ │ │ │ ├── ConfigManagerVersion.java
│ │ │ │ └── ConfigRocksDBStorage.java
│ │ │ ├── consistenthash/
│ │ │ │ ├── ConsistentHashRouter.java
│ │ │ │ ├── HashFunction.java
│ │ │ │ ├── Node.java
│ │ │ │ └── VirtualNode.java
│ │ │ ├── constant/
│ │ │ │ ├── CommonConstants.java
│ │ │ │ ├── ConsumeInitMode.java
│ │ │ │ ├── DBMsgConstants.java
│ │ │ │ ├── FIleReadaheadMode.java
│ │ │ │ ├── GrpcConstants.java
│ │ │ │ ├── HAProxyConstants.java
│ │ │ │ ├── LoggerName.java
│ │ │ │ └── PermName.java
│ │ │ ├── consumer/
│ │ │ │ ├── ConsumeFromWhere.java
│ │ │ │ └── ReceiptHandle.java
│ │ │ ├── entity/
│ │ │ │ ├── ClientGroup.java
│ │ │ │ └── TopicGroup.java
│ │ │ ├── fastjson/
│ │ │ │ └── GenericMapSuperclassDeserializer.java
│ │ │ ├── filter/
│ │ │ │ ├── ExpressionType.java
│ │ │ │ ├── FilterContext.java
│ │ │ │ ├── MessageFilter.java
│ │ │ │ └── impl/
│ │ │ │ ├── Op.java
│ │ │ │ ├── Operand.java
│ │ │ │ ├── Operator.java
│ │ │ │ ├── PolishExpr.java
│ │ │ │ └── Type.java
│ │ │ ├── future/
│ │ │ │ └── FutureTaskExt.java
│ │ │ ├── help/
│ │ │ │ └── FAQUrl.java
│ │ │ ├── hook/
│ │ │ │ └── FilterCheckHook.java
│ │ │ ├── lite/
│ │ │ │ ├── LiteLagInfo.java
│ │ │ │ ├── LiteSubscription.java
│ │ │ │ ├── LiteSubscriptionAction.java
│ │ │ │ ├── LiteSubscriptionDTO.java
│ │ │ │ ├── LiteUtil.java
│ │ │ │ └── OffsetOption.java
│ │ │ ├── logging/
│ │ │ │ ├── DefaultJoranConfiguratorExt.java
│ │ │ │ └── JoranConfiguratorExt.java
│ │ │ ├── message/
│ │ │ │ ├── Message.java
│ │ │ │ ├── MessageAccessor.java
│ │ │ │ ├── MessageBatch.java
│ │ │ │ ├── MessageClientExt.java
│ │ │ │ ├── MessageClientIDSetter.java
│ │ │ │ ├── MessageConst.java
│ │ │ │ ├── MessageDecoder.java
│ │ │ │ ├── MessageExt.java
│ │ │ │ ├── MessageExtBatch.java
│ │ │ │ ├── MessageExtBrokerInner.java
│ │ │ │ ├── MessageId.java
│ │ │ │ ├── MessageQueue.java
│ │ │ │ ├── MessageQueueAssignment.java
│ │ │ │ ├── MessageQueueForC.java
│ │ │ │ ├── MessageRequestMode.java
│ │ │ │ ├── MessageType.java
│ │ │ │ └── MessageVersion.java
│ │ │ ├── metrics/
│ │ │ │ ├── MetricsExporterType.java
│ │ │ │ ├── NopLongCounter.java
│ │ │ │ ├── NopLongHistogram.java
│ │ │ │ ├── NopLongUpDownCounter.java
│ │ │ │ ├── NopObservableDoubleGauge.java
│ │ │ │ └── NopObservableLongGauge.java
│ │ │ ├── namesrv/
│ │ │ │ ├── DefaultTopAddressing.java
│ │ │ │ ├── NameServerUpdateCallback.java
│ │ │ │ ├── NamesrvConfig.java
│ │ │ │ ├── NamesrvUtil.java
│ │ │ │ └── TopAddressing.java
│ │ │ ├── producer/
│ │ │ │ └── RecallMessageHandle.java
│ │ │ ├── queue/
│ │ │ │ ├── ConcurrentTreeMap.java
│ │ │ │ └── RoundQueue.java
│ │ │ ├── resource/
│ │ │ │ ├── ResourcePattern.java
│ │ │ │ ├── ResourceType.java
│ │ │ │ └── RocketMQResource.java
│ │ │ ├── running/
│ │ │ │ └── RunningStats.java
│ │ │ ├── state/
│ │ │ │ └── StateEventListener.java
│ │ │ ├── statistics/
│ │ │ │ ├── FutureHolder.java
│ │ │ │ ├── Interceptor.java
│ │ │ │ ├── StatisticsBrief.java
│ │ │ │ ├── StatisticsBriefInterceptor.java
│ │ │ │ ├── StatisticsItem.java
│ │ │ │ ├── StatisticsItemFormatter.java
│ │ │ │ ├── StatisticsItemPrinter.java
│ │ │ │ ├── StatisticsItemScheduledIncrementPrinter.java
│ │ │ │ ├── StatisticsItemScheduledPrinter.java
│ │ │ │ ├── StatisticsItemStateGetter.java
│ │ │ │ ├── StatisticsKindMeta.java
│ │ │ │ └── StatisticsManager.java
│ │ │ ├── stats/
│ │ │ │ ├── MomentStatsItem.java
│ │ │ │ ├── MomentStatsItemSet.java
│ │ │ │ ├── RTStatsItem.java
│ │ │ │ ├── Stats.java
│ │ │ │ ├── StatsItem.java
│ │ │ │ ├── StatsItemSet.java
│ │ │ │ └── StatsSnapshot.java
│ │ │ ├── sysflag/
│ │ │ │ ├── MessageSysFlag.java
│ │ │ │ ├── PullSysFlag.java
│ │ │ │ ├── SubscriptionSysFlag.java
│ │ │ │ └── TopicSysFlag.java
│ │ │ ├── thread/
│ │ │ │ ├── FutureTaskExtThreadPoolExecutor.java
│ │ │ │ ├── ThreadPoolMonitor.java
│ │ │ │ ├── ThreadPoolQueueSizeMonitor.java
│ │ │ │ ├── ThreadPoolStatusMonitor.java
│ │ │ │ └── ThreadPoolWrapper.java
│ │ │ ├── topic/
│ │ │ │ └── TopicValidator.java
│ │ │ └── utils/
│ │ │ ├── AbstractStartAndShutdown.java
│ │ │ ├── AsyncShutdownHelper.java
│ │ │ ├── BinaryUtil.java
│ │ │ ├── ChannelUtil.java
│ │ │ ├── CheckpointFile.java
│ │ │ ├── CleanupPolicyUtils.java
│ │ │ ├── ConcurrentHashMapUtils.java
│ │ │ ├── CorrelationIdUtil.java
│ │ │ ├── DataConverter.java
│ │ │ ├── ExceptionUtils.java
│ │ │ ├── FastJsonSerializer.java
│ │ │ ├── FutureUtils.java
│ │ │ ├── HttpTinyClient.java
│ │ │ ├── IOTinyUtils.java
│ │ │ ├── IPAddressUtils.java
│ │ │ ├── MessageUtils.java
│ │ │ ├── NameServerAddressUtils.java
│ │ │ ├── NetworkUtil.java
│ │ │ ├── PositiveAtomicCounter.java
│ │ │ ├── QueueTypeUtils.java
│ │ │ ├── Serializer.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── Shutdown.java
│ │ │ ├── Start.java
│ │ │ ├── StartAndShutdown.java
│ │ │ └── ThreadUtils.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── org.apache.rocketmq.logging.ch.qos.logback.classic.spi.Configurator
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── common/
│ │ ├── BrokerConfigSingletonTest.java
│ │ ├── BrokerConfigTest.java
│ │ ├── ConfigManagerTest.java
│ │ ├── CountDownLatch2Test.java
│ │ ├── KeyBuilderTest.java
│ │ ├── MQVersionTest.java
│ │ ├── MessageBatchTest.java
│ │ ├── MessageEncodeDecodeTest.java
│ │ ├── MessageExtBrokerInnerTest.java
│ │ ├── MixAllTest.java
│ │ ├── NetworkUtilTest.java
│ │ ├── ServiceThreadTest.java
│ │ ├── TopicConfigTest.java
│ │ ├── UtilAllTest.java
│ │ ├── action/
│ │ │ ├── ActionTest.java
│ │ │ └── RocketMQActionTest.java
│ │ ├── attribute/
│ │ │ ├── AttributeParserTest.java
│ │ │ ├── AttributeTest.java
│ │ │ ├── AttributeUtilTest.java
│ │ │ ├── BooleanAttributeTest.java
│ │ │ ├── CQTypeTest.java
│ │ │ ├── CleanupPolicyTest.java
│ │ │ ├── EnumAttributeTest.java
│ │ │ ├── LongRangeAttributeTest.java
│ │ │ └── TopicMessageTypeTest.java
│ │ ├── chain/
│ │ │ └── HandlerChainTest.java
│ │ ├── coldctr/
│ │ │ └── AccAndTimeStampTest.java
│ │ ├── compression/
│ │ │ ├── CompressionTest.java
│ │ │ ├── CompressionTypeTest.java
│ │ │ ├── CompressorFactoryTest.java
│ │ │ ├── Lz4CompressorTest.java
│ │ │ ├── ZlibCompressorTest.java
│ │ │ └── ZstdCompressorTest.java
│ │ ├── config/
│ │ │ └── ConfigHelperTest.java
│ │ ├── consumer/
│ │ │ └── ReceiptHandleTest.java
│ │ ├── fastjson/
│ │ │ └── GenericMapSuperclassDeserializerTest.java
│ │ ├── help/
│ │ │ └── FAQUrlTest.java
│ │ ├── message/
│ │ │ ├── MessageClientIDSetterTest.java
│ │ │ ├── MessageDecoderTest.java
│ │ │ └── MessageTest.java
│ │ ├── producer/
│ │ │ └── RecallMessageHandleTest.java
│ │ ├── stats/
│ │ │ └── StatsItemSetTest.java
│ │ ├── sysflag/
│ │ │ ├── CompressionFlagTest.java
│ │ │ └── PullSysFlagTest.java
│ │ ├── topic/
│ │ │ └── TopicValidatorTest.java
│ │ └── utils/
│ │ ├── ConcurrentHashMapUtilsTest.java
│ │ ├── IOTinyUtilsTest.java
│ │ ├── IPAddressUtilsTest.java
│ │ ├── LiteUtilTest.java
│ │ └── NameServerAddressUtilsTest.java
│ └── resources/
│ └── rmq.logback-test.xml
├── container/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── container/
│ │ ├── BrokerBootHook.java
│ │ ├── BrokerContainer.java
│ │ ├── BrokerContainerConfig.java
│ │ ├── BrokerContainerProcessor.java
│ │ ├── BrokerContainerStartup.java
│ │ ├── ContainerClientHouseKeepingService.java
│ │ ├── IBrokerContainer.java
│ │ ├── InnerBrokerController.java
│ │ └── InnerSalveBrokerController.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── container/
│ │ ├── BrokerContainerExtensibilityTest.java
│ │ ├── BrokerContainerStartupTest.java
│ │ ├── BrokerContainerTest.java
│ │ └── BrokerPreOnlineServiceTest.java
│ └── resources/
│ └── rmq.logback-test.xml
├── 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/
│ │ │ │ ├── DLedgerController.java
│ │ │ │ ├── DLedgerControllerStateMachine.java
│ │ │ │ ├── JRaftController.java
│ │ │ │ ├── JRaftControllerStateMachine.java
│ │ │ │ ├── closure/
│ │ │ │ │ └── ControllerClosure.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
│ │ │ │ ├── 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/
│ │ ├── DLedgerControllerTest.java
│ │ ├── DefaultBrokerHeartbeatManagerTest.java
│ │ ├── RaftBrokerHeartBeatManagerTest.java
│ │ ├── event/
│ │ │ ├── EventSerializerTest.java
│ │ │ └── ListEventSerializerTest.java
│ │ ├── heartbeat/
│ │ │ └── RaftBrokerHeartBeatManagerTest.java
│ │ └── manager/
│ │ ├── RaftReplicasInfoManagerTest.java
│ │ └── ReplicasInfoManagerTest.java
│ └── resources/
│ └── rmq.logback-test.xml
├── dev/
│ └── merge_rocketmq_pr.py
├── distribution/
│ ├── LICENSE-BIN
│ ├── NOTICE-BIN
│ ├── benchmark/
│ │ ├── batchproducer.sh
│ │ ├── consumer.sh
│ │ ├── producer.sh
│ │ ├── runclass.sh
│ │ ├── shutdown.sh
│ │ └── tproducer.sh
│ ├── bin/
│ │ ├── README.md
│ │ ├── cachedog.sh
│ │ ├── cleancache.sh
│ │ ├── cleancache.v1.sh
│ │ ├── controller/
│ │ │ ├── fast-try-independent-deployment.cmd
│ │ │ ├── fast-try-independent-deployment.sh
│ │ │ ├── fast-try-namesrv-plugin.cmd
│ │ │ ├── fast-try-namesrv-plugin.sh
│ │ │ ├── fast-try.cmd
│ │ │ └── fast-try.sh
│ │ ├── dledger/
│ │ │ └── fast-try.sh
│ │ ├── export.sh
│ │ ├── mqadmin
│ │ ├── mqadmin.cmd
│ │ ├── mqbroker
│ │ ├── mqbroker.cmd
│ │ ├── mqbroker.numanode0
│ │ ├── mqbroker.numanode1
│ │ ├── mqbroker.numanode2
│ │ ├── mqbroker.numanode3
│ │ ├── mqbrokercontainer
│ │ ├── mqcontroller
│ │ ├── mqcontroller.cmd
│ │ ├── mqnamesrv
│ │ ├── mqnamesrv.cmd
│ │ ├── mqproxy
│ │ ├── mqproxy.cmd
│ │ ├── mqshutdown
│ │ ├── mqshutdown.cmd
│ │ ├── os.sh
│ │ ├── play.cmd
│ │ ├── play.sh
│ │ ├── runbroker.cmd
│ │ ├── runbroker.sh
│ │ ├── runserver.cmd
│ │ ├── runserver.sh
│ │ ├── setcache.sh
│ │ ├── startfsrv.sh
│ │ ├── tools.cmd
│ │ └── tools.sh
│ ├── conf/
│ │ ├── 2m-2s-async/
│ │ │ ├── broker-a-s.properties
│ │ │ ├── broker-a.properties
│ │ │ ├── broker-b-s.properties
│ │ │ └── broker-b.properties
│ │ ├── 2m-2s-sync/
│ │ │ ├── broker-a-s.properties
│ │ │ ├── broker-a.properties
│ │ │ ├── broker-b-s.properties
│ │ │ └── broker-b.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
│ │ ├── rmq-proxy.json
│ │ └── tools.yml
│ ├── pom.xml
│ ├── release-client.xml
│ └── release.xml
├── docs/
│ ├── cn/
│ │ ├── BrokerContainer.md
│ │ ├── Configuration_System.md
│ │ ├── Configuration_TLS.md
│ │ ├── Debug_In_Idea.md
│ │ ├── Deployment.md
│ │ ├── Example_Batch.md
│ │ ├── Example_Compaction_Topic_cn.md
│ │ ├── Example_CreateTopic.md
│ │ ├── Example_Delay.md
│ │ ├── Example_LMQ.md
│ │ ├── Example_Simple_cn.md
│ │ ├── FAQ.md
│ │ ├── QuorumACK.md
│ │ ├── README.md
│ │ ├── RocketMQ_Example.md
│ │ ├── SlaveActingMasterMode.md
│ │ ├── acl/
│ │ │ ├── RocketMQ_Multiple_ACL_Files_设计.md
│ │ │ └── user_guide.md
│ │ ├── architecture.md
│ │ ├── best_practice.md
│ │ ├── client/
│ │ │ └── java/
│ │ │ ├── API_Reference_ DefaultPullConsumer.md
│ │ │ └── API_Reference_DefaultMQProducer.md
│ │ ├── concept.md
│ │ ├── controller/
│ │ │ ├── deploy.md
│ │ │ ├── design.md
│ │ │ ├── persistent_unique_broker_id.md
│ │ │ └── quick_start.md
│ │ ├── design.md
│ │ ├── dledger/
│ │ │ ├── deploy_guide.md
│ │ │ └── quick_start.md
│ │ ├── features.md
│ │ ├── msg_trace/
│ │ │ └── user_guide.md
│ │ ├── operation.md
│ │ ├── proxy/
│ │ │ └── deploy_guide.md
│ │ ├── rpc_request.md
│ │ └── statictopic/
│ │ ├── RocketMQ_Static_Topic_Logic_Queue_设计.md
│ │ └── The_Scope_Of_Static_Topic.md
│ └── en/
│ ├── CLITools.md
│ ├── Concept.md
│ ├── Configuration_Client.md
│ ├── Configuration_System.md
│ ├── Configuration_TLS.md
│ ├── Debug_In_Idea.md
│ ├── Deployment.md
│ ├── Design_Filter.md
│ ├── Design_LoadBlancing.md
│ ├── Design_Query.md
│ ├── Design_Remoting.md
│ ├── Design_Store.md
│ ├── Design_Trancation.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
│ ├── Operations_Broker.md
│ ├── Operations_Consumer.md
│ ├── Operations_Producer.md
│ ├── Operations_Trace.md
│ ├── QuorumACK.md
│ ├── README.md
│ ├── RocketMQ_Example.md
│ ├── Troubleshoopting.md
│ ├── acl/
│ │ └── Operations_ACL.md
│ ├── architecture.md
│ ├── best_practice.md
│ ├── client/
│ │ └── java/
│ │ └── API_Reference_DefaultMQProducer.md
│ ├── controller/
│ │ ├── deploy.md
│ │ ├── design.md
│ │ ├── persistent_unique_broker_id.md
│ │ └── quick_start.md
│ ├── design.md
│ ├── dledger/
│ │ ├── deploy_guide.md
│ │ └── quick_start.md
│ ├── msg_trace/
│ │ └── user_guide.md
│ ├── operation.md
│ └── proxy/
│ └── deploy_guide.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
│ │ ├── TransactionProducer.java
│ │ └── timer/
│ │ ├── TimerConsumer.java
│ │ └── TimerProducer.java
│ ├── broadcast/
│ │ └── PushConsumer.java
│ ├── filter/
│ │ ├── SqlFilterConsumer.java
│ │ ├── SqlFilterProducer.java
│ │ ├── TagFilterConsumer.java
│ │ └── TagFilterProducer.java
│ ├── lmq/
│ │ ├── LMQProducer.java
│ │ ├── LMQPullConsumer.java
│ │ ├── LMQPushConsumer.java
│ │ └── LMQPushPopConsumer.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/
│ │ ├── FilterFactory.java
│ │ ├── FilterSpi.java
│ │ ├── SqlFilter.java
│ │ ├── 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
│ │ ├── parser/
│ │ │ ├── ParseException.java
│ │ │ ├── SelectorParser.java
│ │ │ ├── SelectorParser.jj
│ │ │ ├── SelectorParserConstants.java
│ │ │ ├── SelectorParserTokenManager.java
│ │ │ ├── SimpleCharStream.java
│ │ │ ├── Token.java
│ │ │ └── TokenMgrError.java
│ │ └── util/
│ │ ├── BitsArray.java
│ │ ├── BloomFilter.java
│ │ └── BloomFilterData.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── filter/
│ │ ├── BitsArrayTest.java
│ │ ├── BloomFilterTest.java
│ │ ├── ExpressionTest.java
│ │ ├── FilterSpiTest.java
│ │ └── ParserTest.java
│ └── resources/
│ └── rmq.logback-test.xml
├── namesrv/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── rocketmq/
│ │ │ └── namesrv/
│ │ │ ├── NamesrvController.java
│ │ │ ├── NamesrvStartup.java
│ │ │ ├── kvconfig/
│ │ │ │ ├── KVConfigManager.java
│ │ │ │ └── KVConfigSerializeWrapper.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/
│ │ ├── NameServerInstanceTest.java
│ │ ├── NamesrvControllerTest.java
│ │ ├── NamesrvStartupTest.java
│ │ ├── kvconfig/
│ │ │ ├── KVConfigManagerTest.java
│ │ │ └── KVConfigSerializeWrapperTest.java
│ │ ├── processor/
│ │ │ ├── ClientRequestProcessorTest.java
│ │ │ ├── ClusterTestRequestProcessorTest.java
│ │ │ └── RequestProcessorTest.java
│ │ ├── route/
│ │ │ ├── ZoneRouteRPCHookMoreTest.java
│ │ │ └── ZoneRouteRPCHookTest.java
│ │ └── routeinfo/
│ │ ├── BrokerHousekeepingServiceTest.java
│ │ ├── GetRouteInfoBenchmark.java
│ │ ├── RegisterBrokerBenchmark.java
│ │ ├── RouteInfoManagerBrokerPermTest.java
│ │ ├── RouteInfoManagerBrokerRegisterTest.java
│ │ ├── RouteInfoManagerNewTest.java
│ │ ├── RouteInfoManagerStaticRegisterTest.java
│ │ ├── RouteInfoManagerTest.java
│ │ └── RouteInfoManagerTestBase.java
│ └── resources/
│ └── rmq.logback-test.xml
├── openmessaging/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── io/
│ │ └── openmessaging/
│ │ └── rocketmq/
│ │ ├── MessagingAccessPointImpl.java
│ │ ├── config/
│ │ │ └── ClientConfig.java
│ │ ├── consumer/
│ │ │ ├── LocalMessageCache.java
│ │ │ ├── PullConsumerImpl.java
│ │ │ └── PushConsumerImpl.java
│ │ ├── domain/
│ │ │ ├── BytesMessageImpl.java
│ │ │ ├── ConsumeRequest.java
│ │ │ ├── NonStandardKeys.java
│ │ │ ├── RocketMQConstants.java
│ │ │ └── SendResultImpl.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
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── rocketmq/
│ │ │ └── proxy/
│ │ │ ├── CommandLineArgument.java
│ │ │ ├── ProxyMode.java
│ │ │ ├── ProxyStartup.java
│ │ │ ├── auth/
│ │ │ │ ├── ProxyAuthenticationMetadataProvider.java
│ │ │ │ └── ProxyAuthorizationMetadataProvider.java
│ │ │ ├── common/
│ │ │ │ ├── AbstractCacheLoader.java
│ │ │ │ ├── Address.java
│ │ │ │ ├── ContextVariable.java
│ │ │ │ ├── MessageReceiptHandle.java
│ │ │ │ ├── ProxyContext.java
│ │ │ │ ├── ProxyException.java
│ │ │ │ ├── ProxyExceptionCode.java
│ │ │ │ ├── ReceiptHandleGroup.java
│ │ │ │ ├── ReceiptHandleGroupKey.java
│ │ │ │ ├── RenewEvent.java
│ │ │ │ ├── RenewStrategyPolicy.java
│ │ │ │ ├── channel/
│ │ │ │ │ └── ChannelHelper.java
│ │ │ │ └── utils/
│ │ │ │ ├── FilterUtils.java
│ │ │ │ ├── GrpcUtils.java
│ │ │ │ └── ProxyUtils.java
│ │ │ ├── config/
│ │ │ │ ├── ConfigFile.java
│ │ │ │ ├── Configuration.java
│ │ │ │ ├── ConfigurationManager.java
│ │ │ │ ├── MetricCollectorMode.java
│ │ │ │ └── ProxyConfig.java
│ │ │ ├── grpc/
│ │ │ │ ├── GrpcServer.java
│ │ │ │ ├── GrpcServerBuilder.java
│ │ │ │ ├── ProxyAndTlsProtocolNegotiator.java
│ │ │ │ ├── constant/
│ │ │ │ │ └── AttributeKeys.java
│ │ │ │ ├── interceptor/
│ │ │ │ │ ├── ContextInterceptor.java
│ │ │ │ │ ├── GlobalExceptionInterceptor.java
│ │ │ │ │ ├── HeaderInterceptor.java
│ │ │ │ │ └── RequestMapping.java
│ │ │ │ ├── pipeline/
│ │ │ │ │ ├── AuthenticationPipeline.java
│ │ │ │ │ ├── AuthorizationPipeline.java
│ │ │ │ │ ├── ContextInitPipeline.java
│ │ │ │ │ └── RequestPipeline.java
│ │ │ │ └── v2/
│ │ │ │ ├── AbstractMessagingActivity.java
│ │ │ │ ├── ContextStreamObserver.java
│ │ │ │ ├── DefaultGrpcMessagingActivity.java
│ │ │ │ ├── GrpcMessagingActivity.java
│ │ │ │ ├── GrpcMessagingApplication.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
│ │ │ │ ├── producer/
│ │ │ │ │ ├── ForwardMessageToDLQActivity.java
│ │ │ │ │ ├── RecallMessageActivity.java
│ │ │ │ │ └── SendMessageActivity.java
│ │ │ │ ├── route/
│ │ │ │ │ └── RouteActivity.java
│ │ │ │ └── transaction/
│ │ │ │ └── EndTransactionActivity.java
│ │ │ ├── metrics/
│ │ │ │ ├── ProxyMetricsConstant.java
│ │ │ │ └── ProxyMetricsManager.java
│ │ │ ├── processor/
│ │ │ │ ├── AbstractProcessor.java
│ │ │ │ ├── BatchAckResult.java
│ │ │ │ ├── ClientProcessor.java
│ │ │ │ ├── ConsumerProcessor.java
│ │ │ │ ├── DefaultMessagingProcessor.java
│ │ │ │ ├── MessagingProcessor.java
│ │ │ │ ├── PopMessageResultFilter.java
│ │ │ │ ├── ProducerProcessor.java
│ │ │ │ ├── QueueSelector.java
│ │ │ │ ├── ReceiptHandleProcessor.java
│ │ │ │ ├── RequestBrokerProcessor.java
│ │ │ │ ├── TransactionProcessor.java
│ │ │ │ ├── TransactionStatus.java
│ │ │ │ ├── channel/
│ │ │ │ │ ├── ChannelExtendAttributeGetter.java
│ │ │ │ │ ├── ChannelProtocolType.java
│ │ │ │ │ ├── RemoteChannel.java
│ │ │ │ │ ├── RemoteChannelConverter.java
│ │ │ │ │ └── RemoteChannelSerializer.java
│ │ │ │ └── validator/
│ │ │ │ ├── DefaultTopicMessageTypeValidator.java
│ │ │ │ └── TopicMessageTypeValidator.java
│ │ │ ├── remoting/
│ │ │ │ ├── ClientHousekeepingService.java
│ │ │ │ ├── MultiProtocolRemotingServer.java
│ │ │ │ ├── MultiProtocolTlsHelper.java
│ │ │ │ ├── RemotingProtocolServer.java
│ │ │ │ ├── RemotingProxyOutClient.java
│ │ │ │ ├── activity/
│ │ │ │ │ ├── AbstractRemotingActivity.java
│ │ │ │ │ ├── AckMessageActivity.java
│ │ │ │ │ ├── ChangeInvisibleTimeActivity.java
│ │ │ │ │ ├── ClientManagerActivity.java
│ │ │ │ │ ├── ConsumerManagerActivity.java
│ │ │ │ │ ├── GetTopicRouteActivity.java
│ │ │ │ │ ├── PopMessageActivity.java
│ │ │ │ │ ├── PullMessageActivity.java
│ │ │ │ │ ├── RecallMessageActivity.java
│ │ │ │ │ ├── SendMessageActivity.java
│ │ │ │ │ └── TransactionActivity.java
│ │ │ │ ├── channel/
│ │ │ │ │ ├── RemotingChannel.java
│ │ │ │ │ └── RemotingChannelManager.java
│ │ │ │ ├── common/
│ │ │ │ │ └── RemotingConverter.java
│ │ │ │ ├── pipeline/
│ │ │ │ │ ├── AuthenticationPipeline.java
│ │ │ │ │ ├── AuthorizationPipeline.java
│ │ │ │ │ ├── ContextInitPipeline.java
│ │ │ │ │ └── RequestPipeline.java
│ │ │ │ └── protocol/
│ │ │ │ ├── ProtocolHandler.java
│ │ │ │ ├── ProtocolNegotiationHandler.java
│ │ │ │ ├── http2proxy/
│ │ │ │ │ ├── HAProxyMessageForwarder.java
│ │ │ │ │ ├── Http2ProtocolProxyHandler.java
│ │ │ │ │ ├── Http2ProxyBackendHandler.java
│ │ │ │ │ └── Http2ProxyFrontendHandler.java
│ │ │ │ └── remoting/
│ │ │ │ └── RemotingProtocolHandler.java
│ │ │ └── service/
│ │ │ ├── ClusterServiceManager.java
│ │ │ ├── LocalServiceManager.java
│ │ │ ├── ServiceManager.java
│ │ │ ├── ServiceManagerFactory.java
│ │ │ ├── admin/
│ │ │ │ ├── AdminService.java
│ │ │ │ └── DefaultAdminService.java
│ │ │ ├── cert/
│ │ │ │ └── TlsCertificateManager.java
│ │ │ ├── channel/
│ │ │ │ ├── ChannelManager.java
│ │ │ │ ├── InvocationChannel.java
│ │ │ │ ├── InvocationContext.java
│ │ │ │ ├── InvocationContextInterface.java
│ │ │ │ ├── SimpleChannel.java
│ │ │ │ └── SimpleChannelHandlerContext.java
│ │ │ ├── client/
│ │ │ │ ├── ClusterConsumerManager.java
│ │ │ │ └── ProxyClientRemotingProcessor.java
│ │ │ ├── lite/
│ │ │ │ └── LiteSubscriptionService.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
│ │ │ │ ├── DefaultMessageQueuePriorityProvider.java
│ │ │ │ ├── LocalTopicRouteService.java
│ │ │ │ ├── MessageQueuePenalizer.java
│ │ │ │ ├── MessageQueuePriorityProvider.java
│ │ │ │ ├── MessageQueueSelector.java
│ │ │ │ ├── MessageQueueView.java
│ │ │ │ ├── ProxyTopicRouteData.java
│ │ │ │ ├── TopicRouteHelper.java
│ │ │ │ ├── TopicRouteService.java
│ │ │ │ └── TopicRouteWrapper.java
│ │ │ ├── sysmessage/
│ │ │ │ ├── AbstractSystemMessageSyncer.java
│ │ │ │ ├── HeartbeatSyncer.java
│ │ │ │ ├── HeartbeatSyncerData.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/
│ │ ├── ProxyStartupTest.java
│ │ ├── common/
│ │ │ ├── AddressTest.java
│ │ │ ├── ReceiptHandleGroupTest.java
│ │ │ ├── RenewStrategyPolicyTest.java
│ │ │ └── utils/
│ │ │ └── FilterUtilTest.java
│ │ ├── config/
│ │ │ ├── ConfigurationManagerTest.java
│ │ │ ├── ConfigurationTest.java
│ │ │ ├── InitConfigTest.java
│ │ │ └── MetricCollectorModeTest.java
│ │ ├── grpc/
│ │ │ ├── ProxyAndTlsProtocolNegotiatorTest.java
│ │ │ └── v2/
│ │ │ ├── AbstractMessagingActivityTest.java
│ │ │ ├── BaseActivityTest.java
│ │ │ ├── GrpcMessagingApplicationTest.java
│ │ │ ├── channel/
│ │ │ │ └── GrpcClientChannelTest.java
│ │ │ ├── client/
│ │ │ │ └── ClientActivityTest.java
│ │ │ ├── common/
│ │ │ │ ├── GrpcClientSettingsManagerTest.java
│ │ │ │ ├── GrpcConverterTest.java
│ │ │ │ └── GrpcValidatorTest.java
│ │ │ ├── consumer/
│ │ │ │ ├── AckMessageActivityTest.java
│ │ │ │ ├── ChangeInvisibleDurationActivityTest.java
│ │ │ │ ├── ReceiveMessageActivityTest.java
│ │ │ │ └── ReceiveMessageResponseStreamWriterTest.java
│ │ │ ├── producer/
│ │ │ │ ├── ForwardMessageToDLQActivityTest.java
│ │ │ │ ├── RecallMessageActivityTest.java
│ │ │ │ └── SendMessageActivityTest.java
│ │ │ ├── route/
│ │ │ │ └── RouteActivityTest.java
│ │ │ └── transaction/
│ │ │ └── EndTransactionActivityTest.java
│ │ ├── processor/
│ │ │ ├── BaseProcessorTest.java
│ │ │ ├── ClientProcessorTest.java
│ │ │ ├── ConsumerProcessorTest.java
│ │ │ ├── ProducerProcessorTest.java
│ │ │ ├── ReceiptHandleProcessorTest.java
│ │ │ ├── TransactionProcessorTest.java
│ │ │ └── channel/
│ │ │ └── RemoteChannelTest.java
│ │ ├── remoting/
│ │ │ ├── activity/
│ │ │ │ ├── AbstractRemotingActivityTest.java
│ │ │ │ ├── GetTopicRouteActivityTest.java
│ │ │ │ ├── PullMessageActivityTest.java
│ │ │ │ ├── RecallMessageActivityTest.java
│ │ │ │ └── SendMessageActivityTest.java
│ │ │ ├── channel/
│ │ │ │ ├── RemotingChannelManagerTest.java
│ │ │ │ └── RemotingChannelTest.java
│ │ │ └── protocol/
│ │ │ └── http2proxy/
│ │ │ ├── HAProxyMessageForwarderTest.java
│ │ │ └── Http2ProtocolProxyHandlerTest.java
│ │ └── service/
│ │ ├── BaseServiceTest.java
│ │ ├── admin/
│ │ │ └── DefaultAdminServiceTest.java
│ │ ├── cert/
│ │ │ └── TlsCertificateManagerTest.java
│ │ ├── lite/
│ │ │ └── LiteSubscriptionServiceTest.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
│ │ │ ├── MessageQueuePenalizerTest.java
│ │ │ ├── MessageQueuePriorityProviderTest.java
│ │ │ └── MessageQueueSelectorTest.java
│ │ ├── sysmessage/
│ │ │ └── HeartbeatSyncerTest.java
│ │ └── transaction/
│ │ ├── AbstractTransactionServiceTest.java
│ │ ├── ClusterTransactionServiceTest.java
│ │ └── TransactionDataManagerTest.java
│ └── resources/
│ ├── certs/
│ │ ├── client.key
│ │ ├── client.pem
│ │ ├── server.key
│ │ └── server.pem
│ ├── mockito-extensions/
│ │ └── org.mockito.plugins.MockMaker
│ ├── rmq-proxy-home/
│ │ └── conf/
│ │ ├── broker.conf
│ │ ├── logback_proxy.xml
│ │ └── rmq-proxy.json
│ └── rmq.logback-test.xml
├── remoting/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── remoting/
│ │ ├── ChannelEventListener.java
│ │ ├── CommandCallback.java
│ │ ├── CommandCustomHeader.java
│ │ ├── Configuration.java
│ │ ├── InvokeCallback.java
│ │ ├── RPCHook.java
│ │ ├── RemotingClient.java
│ │ ├── RemotingServer.java
│ │ ├── RemotingService.java
│ │ ├── annotation/
│ │ │ ├── CFNotNull.java
│ │ │ └── CFNullable.java
│ │ ├── common/
│ │ │ ├── HeartbeatV2Result.java
│ │ │ ├── RemotingHelper.java
│ │ │ ├── SemaphoreReleaseOnlyOnce.java
│ │ │ ├── ServiceThread.java
│ │ │ └── TlsMode.java
│ │ ├── exception/
│ │ │ ├── RemotingCommandException.java
│ │ │ ├── RemotingConnectException.java
│ │ │ ├── RemotingException.java
│ │ │ ├── RemotingSendRequestException.java
│ │ │ ├── RemotingTimeoutException.java
│ │ │ └── RemotingTooMuchRequestException.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
│ │ ├── pipeline/
│ │ │ └── RequestPipeline.java
│ │ ├── protocol/
│ │ │ ├── BitSetSerializerDeserializer.java
│ │ │ ├── BrokerSyncInfo.java
│ │ │ ├── DataVersion.java
│ │ │ ├── EpochEntry.java
│ │ │ ├── FastCodesHeader.java
│ │ │ ├── ForbiddenType.java
│ │ │ ├── LanguageCode.java
│ │ │ ├── MQProtosHelper.java
│ │ │ ├── NamespaceUtil.java
│ │ │ ├── RemotingCommand.java
│ │ │ ├── RemotingCommandType.java
│ │ │ ├── RemotingSerializable.java
│ │ │ ├── RemotingSysResponseCode.java
│ │ │ ├── RequestCode.java
│ │ │ ├── RequestHeaderRegistry.java
│ │ │ ├── RequestSource.java
│ │ │ ├── RequestType.java
│ │ │ ├── ResponseCode.java
│ │ │ ├── RocketMQSerializable.java
│ │ │ ├── SerializeType.java
│ │ │ ├── admin/
│ │ │ │ ├── ConsumeStats.java
│ │ │ │ ├── OffsetWrapper.java
│ │ │ │ ├── RollbackStats.java
│ │ │ │ ├── TopicOffset.java
│ │ │ │ └── TopicStatsTable.java
│ │ │ ├── body/
│ │ │ │ ├── AclInfo.java
│ │ │ │ ├── BatchAck.java
│ │ │ │ ├── BatchAckMessageRequestBody.java
│ │ │ │ ├── BrokerMemberGroup.java
│ │ │ │ ├── BrokerReplicasInfo.java
│ │ │ │ ├── BrokerStatsData.java
│ │ │ │ ├── BrokerStatsItem.java
│ │ │ │ ├── CMResult.java
│ │ │ │ ├── CheckClientRequestBody.java
│ │ │ │ ├── ClusterInfo.java
│ │ │ │ ├── Connection.java
│ │ │ │ ├── ConsumeByWho.java
│ │ │ │ ├── ConsumeMessageDirectlyResult.java
│ │ │ │ ├── ConsumeQueueData.java
│ │ │ │ ├── ConsumeStatsList.java
│ │ │ │ ├── ConsumeStatus.java
│ │ │ │ ├── ConsumerConnection.java
│ │ │ │ ├── ConsumerOffsetSerializeWrapper.java
│ │ │ │ ├── ConsumerRunningInfo.java
│ │ │ │ ├── CreateTopicListRequestBody.java
│ │ │ │ ├── ElectMasterResponseBody.java
│ │ │ │ ├── EpochEntryCache.java
│ │ │ │ ├── GetBrokerLiteInfoResponseBody.java
│ │ │ │ ├── GetBrokerMemberGroupResponseBody.java
│ │ │ │ ├── GetConsumerStatusBody.java
│ │ │ │ ├── GetLiteClientInfoResponseBody.java
│ │ │ │ ├── GetLiteGroupInfoResponseBody.java
│ │ │ │ ├── GetLiteTopicInfoResponseBody.java
│ │ │ │ ├── GetParentTopicInfoResponseBody.java
│ │ │ │ ├── GroupList.java
│ │ │ │ ├── HARuntimeInfo.java
│ │ │ │ ├── KVTable.java
│ │ │ │ ├── LiteSubscriptionCtlRequestBody.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
│ │ │ │ ├── ResetOffsetBody.java
│ │ │ │ ├── ResetOffsetBodyForC.java
│ │ │ │ ├── RoleChangeNotifyEntry.java
│ │ │ │ ├── SetMessageRequestModeRequestBody.java
│ │ │ │ ├── SubscriptionGroupList.java
│ │ │ │ ├── SubscriptionGroupWrapper.java
│ │ │ │ ├── SyncStateSet.java
│ │ │ │ ├── TopicConfigAndMappingSerializeWrapper.java
│ │ │ │ ├── TopicConfigSerializeWrapper.java
│ │ │ │ ├── TopicList.java
│ │ │ │ ├── TopicQueueMappingSerializeWrapper.java
│ │ │ │ ├── UnlockBatchRequestBody.java
│ │ │ │ └── UserInfo.java
│ │ │ ├── filter/
│ │ │ │ └── FilterAPI.java
│ │ │ ├── header/
│ │ │ │ ├── AckMessageRequestHeader.java
│ │ │ │ ├── AddBrokerRequestHeader.java
│ │ │ │ ├── ChangeInvisibleTimeRequestHeader.java
│ │ │ │ ├── ChangeInvisibleTimeResponseHeader.java
│ │ │ │ ├── CheckRocksdbCqWriteProgressRequestHeader.java
│ │ │ │ ├── CheckTransactionStateRequestHeader.java
│ │ │ │ ├── CheckTransactionStateResponseHeader.java
│ │ │ │ ├── CloneGroupOffsetRequestHeader.java
│ │ │ │ ├── ConsumeMessageDirectlyResultRequestHeader.java
│ │ │ │ ├── ConsumerSendMsgBackRequestHeader.java
│ │ │ │ ├── CreateAclRequestHeader.java
│ │ │ │ ├── CreateTopicListRequestHeader.java
│ │ │ │ ├── CreateTopicRequestHeader.java
│ │ │ │ ├── CreateUserRequestHeader.java
│ │ │ │ ├── DeleteAclRequestHeader.java
│ │ │ │ ├── DeleteSubscriptionGroupRequestHeader.java
│ │ │ │ ├── DeleteTopicRequestHeader.java
│ │ │ │ ├── DeleteUserRequestHeader.java
│ │ │ │ ├── EndTransactionRequestHeader.java
│ │ │ │ ├── EndTransactionResponseHeader.java
│ │ │ │ ├── ExchangeHAInfoRequestHeader.java
│ │ │ │ ├── ExchangeHAInfoResponseHeader.java
│ │ │ │ ├── ExportRocksDBConfigToJsonRequestHeader.java
│ │ │ │ ├── ExtraInfoUtil.java
│ │ │ │ ├── GetAclRequestHeader.java
│ │ │ │ ├── GetAllProducerInfoRequestHeader.java
│ │ │ │ ├── GetAllSubscriptionGroupRequestHeader.java
│ │ │ │ ├── GetAllSubscriptionGroupResponseHeader.java
│ │ │ │ ├── GetAllTopicConfigRequestHeader.java
│ │ │ │ ├── GetAllTopicConfigResponseHeader.java
│ │ │ │ ├── GetBrokerConfigResponseHeader.java
│ │ │ │ ├── GetBrokerMemberGroupRequestHeader.java
│ │ │ │ ├── GetConsumeStatsInBrokerHeader.java
│ │ │ │ ├── GetConsumeStatsRequestHeader.java
│ │ │ │ ├── GetConsumerConnectionListRequestHeader.java
│ │ │ │ ├── GetConsumerListByGroupRequestHeader.java
│ │ │ │ ├── GetConsumerListByGroupResponseBody.java
│ │ │ │ ├── GetConsumerListByGroupResponseHeader.java
│ │ │ │ ├── GetConsumerRunningInfoRequestHeader.java
│ │ │ │ ├── GetConsumerStatusRequestHeader.java
│ │ │ │ ├── GetEarliestMsgStoretimeRequestHeader.java
│ │ │ │ ├── GetEarliestMsgStoretimeResponseHeader.java
│ │ │ │ ├── GetLiteClientInfoRequestHeader.java
│ │ │ │ ├── GetLiteGroupInfoRequestHeader.java
│ │ │ │ ├── GetLiteTopicInfoRequestHeader.java
│ │ │ │ ├── GetMaxOffsetRequestHeader.java
│ │ │ │ ├── GetMaxOffsetResponseHeader.java
│ │ │ │ ├── GetMinOffsetRequestHeader.java
│ │ │ │ ├── GetMinOffsetResponseHeader.java
│ │ │ │ ├── GetParentTopicInfoRequestHeader.java
│ │ │ │ ├── GetProducerConnectionListRequestHeader.java
│ │ │ │ ├── GetSubscriptionGroupConfigRequestHeader.java
│ │ │ │ ├── GetTopicConfigRequestHeader.java
│ │ │ │ ├── GetTopicStatsInfoRequestHeader.java
│ │ │ │ ├── GetTopicsByClusterRequestHeader.java
│ │ │ │ ├── GetUserRequestHeader.java
│ │ │ │ ├── HeartbeatRequestHeader.java
│ │ │ │ ├── InitConsumerOffsetRequestHeader.java
│ │ │ │ ├── ListAclsRequestHeader.java
│ │ │ │ ├── ListUsersRequestHeader.java
│ │ │ │ ├── LiteSubscriptionCtlRequestHeader.java
│ │ │ │ ├── LockBatchMqRequestHeader.java
│ │ │ │ ├── NotificationRequestHeader.java
│ │ │ │ ├── NotificationResponseHeader.java
│ │ │ │ ├── NotifyBrokerRoleChangedRequestHeader.java
│ │ │ │ ├── NotifyConsumerIdsChangedRequestHeader.java
│ │ │ │ ├── NotifyMinBrokerIdChangeRequestHeader.java
│ │ │ │ ├── NotifyUnsubscribeLiteRequestHeader.java
│ │ │ │ ├── PeekMessageRequestHeader.java
│ │ │ │ ├── PollingInfoRequestHeader.java
│ │ │ │ ├── PollingInfoResponseHeader.java
│ │ │ │ ├── PopLiteMessageRequestHeader.java
│ │ │ │ ├── PopLiteMessageResponseHeader.java
│ │ │ │ ├── PopMessageRequestHeader.java
│ │ │ │ ├── PopMessageResponseHeader.java
│ │ │ │ ├── PullMessageRequestHeader.java
│ │ │ │ ├── PullMessageResponseHeader.java
│ │ │ │ ├── QueryConsumeQueueRequestHeader.java
│ │ │ │ ├── QueryConsumeTimeSpanRequestHeader.java
│ │ │ │ ├── QueryConsumerOffsetRequestHeader.java
│ │ │ │ ├── QueryConsumerOffsetResponseHeader.java
│ │ │ │ ├── QueryCorrectionOffsetHeader.java
│ │ │ │ ├── QueryMessageRequestHeader.java
│ │ │ │ ├── QueryMessageResponseHeader.java
│ │ │ │ ├── QuerySubscriptionByConsumerRequestHeader.java
│ │ │ │ ├── QueryTopicConsumeByWhoRequestHeader.java
│ │ │ │ ├── QueryTopicsByConsumerRequestHeader.java
│ │ │ │ ├── RecallMessageRequestHeader.java
│ │ │ │ ├── RecallMessageResponseHeader.java
│ │ │ │ ├── RemoveBrokerRequestHeader.java
│ │ │ │ ├── ReplyMessageRequestHeader.java
│ │ │ │ ├── ResetMasterFlushOffsetHeader.java
│ │ │ │ ├── ResetOffsetRequestHeader.java
│ │ │ │ ├── ResumeCheckHalfMessageRequestHeader.java
│ │ │ │ ├── SearchOffsetRequestHeader.java
│ │ │ │ ├── SearchOffsetResponseHeader.java
│ │ │ │ ├── SendMessageRequestHeader.java
│ │ │ │ ├── SendMessageRequestHeaderV2.java
│ │ │ │ ├── SendMessageResponseHeader.java
│ │ │ │ ├── StatisticsMessagesRequestHeader.java
│ │ │ │ ├── TriggerLiteDispatchRequestHeader.java
│ │ │ │ ├── UnlockBatchMqRequestHeader.java
│ │ │ │ ├── UnregisterClientRequestHeader.java
│ │ │ │ ├── UnregisterClientResponseHeader.java
│ │ │ │ ├── UpdateAclRequestHeader.java
│ │ │ │ ├── UpdateConsumerOffsetRequestHeader.java
│ │ │ │ ├── UpdateConsumerOffsetResponseHeader.java
│ │ │ │ ├── UpdateGroupForbiddenRequestHeader.java
│ │ │ │ ├── UpdateUserRequestHeader.java
│ │ │ │ ├── ViewBrokerStatsDataRequestHeader.java
│ │ │ │ ├── ViewMessageRequestHeader.java
│ │ │ │ ├── ViewMessageResponseHeader.java
│ │ │ │ ├── controller/
│ │ │ │ │ ├── AlterSyncStateSetRequestHeader.java
│ │ │ │ │ ├── AlterSyncStateSetResponseHeader.java
│ │ │ │ │ ├── ElectMasterRequestHeader.java
│ │ │ │ │ ├── ElectMasterResponseHeader.java
│ │ │ │ │ ├── GetMetaDataResponseHeader.java
│ │ │ │ │ ├── GetReplicaInfoRequestHeader.java
│ │ │ │ │ ├── GetReplicaInfoResponseHeader.java
│ │ │ │ │ ├── admin/
│ │ │ │ │ │ └── CleanControllerBrokerDataRequestHeader.java
│ │ │ │ │ └── register/
│ │ │ │ │ ├── ApplyBrokerIdRequestHeader.java
│ │ │ │ │ ├── ApplyBrokerIdResponseHeader.java
│ │ │ │ │ ├── GetNextBrokerIdRequestHeader.java
│ │ │ │ │ ├── GetNextBrokerIdResponseHeader.java
│ │ │ │ │ ├── RegisterBrokerToControllerRequestHeader.java
│ │ │ │ │ └── RegisterBrokerToControllerResponseHeader.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
│ │ │ ├── heartbeat/
│ │ │ │ ├── ConsumeType.java
│ │ │ │ ├── ConsumerData.java
│ │ │ │ ├── HeartbeatData.java
│ │ │ │ ├── MessageModel.java
│ │ │ │ ├── ProducerData.java
│ │ │ │ └── SubscriptionData.java
│ │ │ ├── namesrv/
│ │ │ │ └── RegisterBrokerResult.java
│ │ │ ├── route/
│ │ │ │ ├── BrokerData.java
│ │ │ │ ├── MessageQueueRouteState.java
│ │ │ │ ├── QueueData.java
│ │ │ │ └── TopicRouteData.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
│ │ ├── rpc/
│ │ │ ├── ClientMetadata.java
│ │ │ ├── RequestBuilder.java
│ │ │ ├── RpcClient.java
│ │ │ ├── RpcClientHook.java
│ │ │ ├── RpcClientImpl.java
│ │ │ ├── RpcClientUtils.java
│ │ │ ├── RpcException.java
│ │ │ ├── RpcRequest.java
│ │ │ ├── RpcRequestHeader.java
│ │ │ ├── RpcResponse.java
│ │ │ ├── TopicQueueRequestHeader.java
│ │ │ └── TopicRequestHeader.java
│ │ └── rpchook/
│ │ ├── DynamicalExtFieldRPCHook.java
│ │ └── StreamTypeRPCHook.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── remoting/
│ │ ├── ProxyProtocolTest.java
│ │ ├── RemotingServerTest.java
│ │ ├── SubRemotingServerTest.java
│ │ ├── TlsTest.java
│ │ ├── netty/
│ │ │ ├── FileRegionEncoderTest.java
│ │ │ ├── MockChannel.java
│ │ │ ├── MockChannelPromise.java
│ │ │ ├── NettyClientConfigTest.java
│ │ │ ├── NettyRemotingAbstractTest.java
│ │ │ ├── NettyRemotingClientTest.java
│ │ │ ├── NettyRemotingServerTest.java
│ │ │ ├── NettyServerConfigTest.java
│ │ │ └── RemotingCodeDistributionHandlerTest.java
│ │ ├── protocol/
│ │ │ ├── CheckpointFileTest.java
│ │ │ ├── ClusterInfoTest.java
│ │ │ ├── ConsumeStatusTest.java
│ │ │ ├── DataVersionTest.java
│ │ │ ├── GroupListTest.java
│ │ │ ├── LanguageCodeTest.java
│ │ │ ├── NamespaceUtilTest.java
│ │ │ ├── QueryConsumeTimeSpanBodyTest.java
│ │ │ ├── RegisterBrokerBodyTest.java
│ │ │ ├── RemotingCommandTest.java
│ │ │ ├── RemotingSerializableCompatTest.java
│ │ │ ├── RemotingSerializableTest.java
│ │ │ ├── RequestSourceTest.java
│ │ │ ├── RequestTypeTest.java
│ │ │ ├── RocketMQSerializableTest.java
│ │ │ ├── admin/
│ │ │ │ ├── ConsumeStatsTest.java
│ │ │ │ └── TopicStatsTableTest.java
│ │ │ ├── body/
│ │ │ │ ├── BatchAckTest.java
│ │ │ │ ├── BrokerStatsDataTest.java
│ │ │ │ ├── CheckClientRequestBodyTest.java
│ │ │ │ ├── ConsumeMessageDirectlyResultTest.java
│ │ │ │ ├── ConsumeStatsListTest.java
│ │ │ │ ├── ConsumerConnectionTest.java
│ │ │ │ ├── ConsumerRunningInfoTest.java
│ │ │ │ ├── KVTableTest.java
│ │ │ │ ├── MessageRequestModeSerializeWrapperTest.java
│ │ │ │ ├── QueryConsumeQueueResponseBodyTest.java
│ │ │ │ ├── QueryCorrectionOffsetBodyTest.java
│ │ │ │ ├── ResetOffsetBodyTest.java
│ │ │ │ └── SubscriptionGroupWrapperTest.java
│ │ │ ├── filter/
│ │ │ │ └── FilterAPITest.java
│ │ │ ├── header/
│ │ │ │ ├── ExportRocksDBConfigToJsonRequestHeaderTest.java
│ │ │ │ ├── ExtraInfoUtilTest.java
│ │ │ │ ├── FastCodesHeaderTest.java
│ │ │ │ ├── GetConsumeStatsRequestHeaderTest.java
│ │ │ │ └── SendMessageRequestHeaderV2Test.java
│ │ │ ├── heartbeat/
│ │ │ │ └── SubscriptionDataTest.java
│ │ │ ├── route/
│ │ │ │ └── TopicRouteDataTest.java
│ │ │ ├── statictopic/
│ │ │ │ ├── TopicQueueMappingTest.java
│ │ │ │ └── TopicQueueMappingUtilsTest.java
│ │ │ ├── subscription/
│ │ │ │ ├── CustomizedRetryPolicyTest.java
│ │ │ │ ├── ExponentialRetryPolicyTest.java
│ │ │ │ ├── GroupRetryPolicyTest.java
│ │ │ │ └── SimpleSubscriptionDataTest.java
│ │ │ └── topic/
│ │ │ └── OffsetMovedEventTest.java
│ │ └── rpc/
│ │ ├── ClientMetadataTest.java
│ │ ├── RpcClientImplTest.java
│ │ └── RpcRequestHeaderTest.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/
│ │ ├── 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
│ │ ├── CommitLog.java
│ │ ├── CommitLogDispatchStore.java
│ │ ├── CommitLogDispatcher.java
│ │ ├── CompactionAppendMsgCallback.java
│ │ ├── ConsumeQueue.java
│ │ ├── ConsumeQueueExt.java
│ │ ├── DefaultMessageFilter.java
│ │ ├── DefaultMessageStore.java
│ │ ├── DispatchRequest.java
│ │ ├── FileQueueSnapshot.java
│ │ ├── FlushDiskWatcher.java
│ │ ├── FlushManager.java
│ │ ├── GetMessageResult.java
│ │ ├── GetMessageStatus.java
│ │ ├── LmqDispatch.java
│ │ ├── MappedFileQueue.java
│ │ ├── MessageArrivingListener.java
│ │ ├── MessageExtEncoder.java
│ │ ├── MessageFilter.java
│ │ ├── MessageStore.java
│ │ ├── MessageStoreStateMachine.java
│ │ ├── MultiPathMappedFileQueue.java
│ │ ├── PutMessageContext.java
│ │ ├── PutMessageLock.java
│ │ ├── PutMessageReentrantLock.java
│ │ ├── PutMessageResult.java
│ │ ├── PutMessageSpinLock.java
│ │ ├── PutMessageStatus.java
│ │ ├── QueryMessageResult.java
│ │ ├── ReferenceResource.java
│ │ ├── RocksDBMessageStore.java
│ │ ├── RunningFlags.java
│ │ ├── SelectMappedBufferResult.java
│ │ ├── SelectMappedFileResult.java
│ │ ├── StoreCheckpoint.java
│ │ ├── StoreStatsService.java
│ │ ├── StoreType.java
│ │ ├── StoreUtil.java
│ │ ├── Swappable.java
│ │ ├── TopicQueueLock.java
│ │ ├── TransientStorePool.java
│ │ ├── config/
│ │ │ ├── BrokerRole.java
│ │ │ ├── FlushDiskType.java
│ │ │ ├── MessageStoreConfig.java
│ │ │ └── StorePathConfigHelper.java
│ │ ├── dledger/
│ │ │ └── DLedgerCommitLog.java
│ │ ├── exception/
│ │ │ ├── ConsumeQueueException.java
│ │ │ └── StoreException.java
│ │ ├── ha/
│ │ │ ├── DefaultHAClient.java
│ │ │ ├── DefaultHAConnection.java
│ │ │ ├── DefaultHAService.java
│ │ │ ├── FlowMonitor.java
│ │ │ ├── GroupTransferService.java
│ │ │ ├── HAClient.java
│ │ │ ├── HAConnection.java
│ │ │ ├── HAConnectionState.java
│ │ │ ├── HAConnectionStateNotificationRequest.java
│ │ │ ├── HAConnectionStateNotificationService.java
│ │ │ ├── HAService.java
│ │ │ ├── WaitNotifyObject.java
│ │ │ ├── autoswitch/
│ │ │ │ ├── AutoSwitchHAClient.java
│ │ │ │ ├── AutoSwitchHAConnection.java
│ │ │ │ ├── AutoSwitchHAService.java
│ │ │ │ ├── BrokerMetadata.java
│ │ │ │ ├── EpochFileCache.java
│ │ │ │ ├── MetadataFile.java
│ │ │ │ └── TempBrokerMetadata.java
│ │ │ └── io/
│ │ │ ├── AbstractHAReader.java
│ │ │ ├── HAReadHook.java
│ │ │ ├── HAWriteHook.java
│ │ │ └── HAWriter.java
│ │ ├── hook/
│ │ │ ├── PutMessageHook.java
│ │ │ └── SendMessageBackHook.java
│ │ ├── index/
│ │ │ ├── IndexFile.java
│ │ │ ├── IndexHeader.java
│ │ │ ├── IndexService.java
│ │ │ ├── QueryOffsetResult.java
│ │ │ └── rocksdb/
│ │ │ ├── IndexRocksDBRecord.java
│ │ │ └── IndexRocksDBStore.java
│ │ ├── kv/
│ │ │ ├── CommitLogDispatcherCompaction.java
│ │ │ ├── CompactionLog.java
│ │ │ ├── CompactionPositionMgr.java
│ │ │ ├── CompactionService.java
│ │ │ ├── CompactionStore.java
│ │ │ └── MessageFetcher.java
│ │ ├── lock/
│ │ │ ├── AdaptiveBackOffSpinLock.java
│ │ │ ├── AdaptiveBackOffSpinLockImpl.java
│ │ │ ├── BackOffReentrantLock.java
│ │ │ └── BackOffSpinLock.java
│ │ ├── logfile/
│ │ │ ├── AbstractMappedFile.java
│ │ │ ├── DefaultMappedFile.java
│ │ │ ├── MappedFile.java
│ │ │ └── SharedByteBufferManager.java
│ │ ├── metrics/
│ │ │ ├── DefaultStoreMetricsConstant.java
│ │ │ ├── DefaultStoreMetricsManager.java
│ │ │ ├── RocksDBStoreMetricsManager.java
│ │ │ └── StoreMetricsManager.java
│ │ ├── plugin/
│ │ │ ├── AbstractPluginMessageStore.java
│ │ │ ├── MessageStoreFactory.java
│ │ │ └── MessageStorePluginContext.java
│ │ ├── pop/
│ │ │ ├── AckMsg.java
│ │ │ ├── BatchAckMsg.java
│ │ │ └── PopCheckPoint.java
│ │ ├── queue/
│ │ │ ├── AbstractConsumeQueueStore.java
│ │ │ ├── BatchConsumeQueue.java
│ │ │ ├── BatchOffsetIndex.java
│ │ │ ├── CombineConsumeQueueStore.java
│ │ │ ├── ConsumeQueueInterface.java
│ │ │ ├── ConsumeQueueStore.java
│ │ │ ├── ConsumeQueueStoreInterface.java
│ │ │ ├── CqUnit.java
│ │ │ ├── DispatchEntry.java
│ │ │ ├── FileQueueLifeCycle.java
│ │ │ ├── MultiDispatchUtils.java
│ │ │ ├── OffsetInitializer.java
│ │ │ ├── OffsetInitializerRocksDBImpl.java
│ │ │ ├── QueueOffsetOperator.java
│ │ │ ├── ReferredIterator.java
│ │ │ ├── RocksDBConsumeQueue.java
│ │ │ ├── RocksDBConsumeQueueOffsetTable.java
│ │ │ ├── RocksDBConsumeQueueStore.java
│ │ │ ├── RocksDBConsumeQueueTable.java
│ │ │ ├── RocksGroupCommitService.java
│ │ │ ├── SparseConsumeQueue.java
│ │ │ └── offset/
│ │ │ ├── OffsetEntry.java
│ │ │ └── OffsetEntryType.java
│ │ ├── rocksdb/
│ │ │ ├── ConsumeQueueCompactionFilterFactory.java
│ │ │ ├── ConsumeQueueRocksDBStorage.java
│ │ │ ├── MessageRocksDBStorage.java
│ │ │ └── RocksDBOptionsFactory.java
│ │ ├── stats/
│ │ │ ├── BrokerStats.java
│ │ │ ├── BrokerStatsManager.java
│ │ │ └── LmqBrokerStatsManager.java
│ │ ├── timer/
│ │ │ ├── Slot.java
│ │ │ ├── TimerCheckpoint.java
│ │ │ ├── TimerLog.java
│ │ │ ├── TimerMessageStore.java
│ │ │ ├── TimerMetrics.java
│ │ │ ├── TimerRequest.java
│ │ │ ├── TimerWheel.java
│ │ │ └── rocksdb/
│ │ │ ├── Timeline.java
│ │ │ ├── TimerMessageRocksDBStore.java
│ │ │ └── TimerRocksDBRecord.java
│ │ ├── transaction/
│ │ │ ├── TransMessageRocksDBStore.java
│ │ │ └── TransRocksDBRecord.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
│ │ ├── FlushDiskWatcherTest.java
│ │ ├── GetMessageResultTest.java
│ │ ├── HATest.java
│ │ ├── MappedFileQueueTest.java
│ │ ├── MappedFileTest.java
│ │ ├── MessageExtBrokerInnerTest.java
│ │ ├── MessageStoreStateMachineTest.java
│ │ ├── MultiPathMappedFileQueueTest.java
│ │ ├── ReputMessageServiceTest.java
│ │ ├── RocksDBMessageStoreTest.java
│ │ ├── StoreCheckpointTest.java
│ │ ├── StoreStatsServiceTest.java
│ │ ├── StoreTestBase.java
│ │ ├── StoreTestUtil.java
│ │ ├── dledger/
│ │ │ ├── DLedgerCommitlogTest.java
│ │ │ ├── DLedgerMultiPathTest.java
│ │ │ ├── MessageStoreTestBase.java
│ │ │ └── MixCommitlogTest.java
│ │ ├── ha/
│ │ │ ├── FlowMonitorTest.java
│ │ │ ├── HAClientTest.java
│ │ │ ├── HAServerTest.java
│ │ │ ├── WaitNotifyObjectTest.java
│ │ │ └── autoswitch/
│ │ │ ├── AutoSwitchHATest.java
│ │ │ └── EpochFileCacheTest.java
│ │ ├── index/
│ │ │ ├── IndexFileTest.java
│ │ │ └── IndexServiceTest.java
│ │ ├── kv/
│ │ │ ├── CompactionLogTest.java
│ │ │ ├── CompactionPositionMgrTest.java
│ │ │ └── OffsetMapTest.java
│ │ ├── lock/
│ │ │ ├── AdaptiveBackOffSpinLockImplTest.java
│ │ │ └── AdaptiveLockTest.java
│ │ ├── logfile/
│ │ │ ├── DefaultMappedFileConcurrencyTest.java
│ │ │ ├── DefaultMappedFileErrorHandlingTest.java
│ │ │ ├── DefaultMappedFilePerformanceTest.java
│ │ │ ├── DefaultMappedFileTest.java
│ │ │ └── DefaultMappedFileWriteWithoutMmapTest.java
│ │ ├── pop/
│ │ │ ├── AckMsgTest.java
│ │ │ └── BatchAckMsgTest.java
│ │ ├── queue/
│ │ │ ├── BatchConsumeMessageTest.java
│ │ │ ├── BatchConsumeQueueTest.java
│ │ │ ├── CombineConsumeQueueStoreTest.java
│ │ │ ├── ConsumeQueueStoreTest.java
│ │ │ ├── ConsumeQueueTest.java
│ │ │ ├── QueueTestBase.java
│ │ │ ├── RocksDBConsumeQueueOffsetTableTest.java
│ │ │ ├── RocksDBConsumeQueueTableTest.java
│ │ │ ├── RocksDBConsumeQueueTest.java
│ │ │ └── SparseConsumeQueueTest.java
│ │ ├── rocksdb/
│ │ │ └── RocksDBOptionsFactoryTest.java
│ │ ├── stats/
│ │ │ └── BrokerStatsManagerTest.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
│ │ │ ├── MQMessageFactory.java
│ │ │ ├── MessageFactory.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
│ │ ├── DuplicateMessageInfo.java
│ │ ├── FileUtil.java
│ │ ├── MQAdminTestUtils.java
│ │ ├── MQRandomUtils.java
│ │ ├── MQWait.java
│ │ ├── RandomUtil.java
│ │ ├── RandomUtils.java
│ │ ├── StatUtil.java
│ │ ├── TestUtil.java
│ │ ├── TestUtils.java
│ │ ├── VerifyUtils.java
│ │ ├── data/
│ │ │ └── collect/
│ │ │ ├── DataCollector.java
│ │ │ ├── DataCollectorManager.java
│ │ │ ├── DataFilter.java
│ │ │ └── impl/
│ │ │ ├── ListDataCollectorImpl.java
│ │ │ └── MapDataCollectorImpl.java
│ │ └── parallel/
│ │ ├── ParallelTask.java
│ │ ├── ParallelTaskExecutor.java
│ │ └── Task4Test.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
│ │ │ │ │ ├── PopPriorityIT.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
│ │ │ ├── ScheduleSlaveActingMasterIT.java
│ │ │ ├── ScheduledMessageIT.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
│ │ ├── recall/
│ │ │ ├── RecallWithTraceIT.java
│ │ │ └── SendAndRecallDelayMessageIT.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-proxy-home/
│ │ └── conf/
│ │ ├── broker.conf
│ │ ├── logback_proxy.xml
│ │ └── rmq-proxy.json
│ ├── rmq.logback-test.xml
│ └── schema/
│ ├── api/
│ │ ├── client.consumer.AllocateMessageQueueStrategy.schema
│ │ ├── client.consumer.DefaultLitePullConsumer.schema
│ │ ├── client.consumer.DefaultMQPullConsumer.schema
│ │ ├── client.consumer.DefaultMQPushConsumer.schema
│ │ ├── client.consumer.PullCallback.schema
│ │ ├── client.consumer.PullResult.schema
│ │ ├── client.consumer.PullStatus.schema
│ │ ├── client.consumer.listener.ConsumeConcurrentlyContext.schema
│ │ ├── client.consumer.listener.ConsumeConcurrentlyStatus.schema
│ │ ├── client.consumer.listener.ConsumeOrderlyContext.schema
│ │ ├── client.consumer.listener.ConsumeOrderlyStatus.schema
│ │ ├── client.consumer.listener.MessageListener.schema
│ │ ├── client.consumer.listener.MessageListenerConcurrently.schema
│ │ ├── client.consumer.listener.MessageListenerOrderly.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.Message.schema
│ │ ├── common.message.MessageExt.schema
│ │ ├── common.message.MessageQueue.schema
│ │ ├── remoting.RPCHook.schema
│ │ └── tools.admin.DefaultMQAdminExt.schema
│ └── protocol/
│ ├── common.protocol.RequestCode.schema
│ ├── 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.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.GetConsumeStatsInBrokerHeader.schema
│ ├── common.protocol.header.GetConsumeStatsRequestHeader.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.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.GetTopicStatsInfoRequestHeader.schema
│ ├── common.protocol.header.GetTopicsByClusterRequestHeader.schema
│ ├── common.protocol.header.NotifyConsumerIdsChangedRequestHeader.schema
│ ├── common.protocol.header.PullMessageRequestHeader.schema
│ ├── common.protocol.header.PullMessageResponseHeader.schema
│ ├── common.protocol.header.QueryConsumeQueueRequestHeader.schema
│ ├── common.protocol.header.QueryConsumeTimeSpanRequestHeader.schema
│ ├── common.protocol.header.QueryConsumerOffsetRequestHeader.schema
│ ├── common.protocol.header.QueryConsumerOffsetResponseHeader.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.header.filtersrv.RegisterFilterServerRequestHeader.schema
│ ├── common.protocol.header.filtersrv.RegisterFilterServerResponseHeader.schema
│ ├── common.protocol.header.filtersrv.RegisterMessageFilterClassRequestHeader.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
├── tieredstore/
│ ├── BUILD.bazel
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── tieredstore/
│ │ ├── MessageStoreConfig.java
│ │ ├── MessageStoreExecutor.java
│ │ ├── TieredMessageStore.java
│ │ ├── common/
│ │ │ ├── AppendResult.java
│ │ │ ├── FileSegmentType.java
│ │ │ ├── GetMessageResultExt.java
│ │ │ ├── GroupCommitContext.java
│ │ │ └── SelectBufferResult.java
│ │ ├── core/
│ │ │ ├── MessageStoreDispatcher.java
│ │ │ ├── MessageStoreDispatcherImpl.java
│ │ │ ├── MessageStoreFetcher.java
│ │ │ ├── MessageStoreFetcherImpl.java
│ │ │ ├── MessageStoreFilter.java
│ │ │ └── MessageStoreTopicFilter.java
│ │ ├── exception/
│ │ │ ├── TieredStoreErrorCode.java
│ │ │ └── TieredStoreException.java
│ │ ├── file/
│ │ │ ├── FlatAppendFile.java
│ │ │ ├── FlatCommitLogFile.java
│ │ │ ├── FlatConsumeQueueFile.java
│ │ │ ├── FlatFileFactory.java
│ │ │ ├── FlatFileInterface.java
│ │ │ ├── FlatFileStore.java
│ │ │ └── FlatMessageFile.java
│ │ ├── index/
│ │ │ ├── IndexFile.java
│ │ │ ├── IndexItem.java
│ │ │ ├── IndexService.java
│ │ │ ├── IndexStoreFile.java
│ │ │ └── IndexStoreService.java
│ │ ├── metadata/
│ │ │ ├── DefaultMetadataStore.java
│ │ │ ├── MetadataStore.java
│ │ │ └── entity/
│ │ │ ├── FileSegmentMetadata.java
│ │ │ ├── QueueMetadata.java
│ │ │ └── TopicMetadata.java
│ │ ├── metrics/
│ │ │ ├── TieredStoreMetricsConstant.java
│ │ │ └── TieredStoreMetricsManager.java
│ │ ├── provider/
│ │ │ ├── FileSegment.java
│ │ │ ├── FileSegmentFactory.java
│ │ │ ├── FileSegmentProvider.java
│ │ │ ├── MemoryFileSegment.java
│ │ │ └── PosixFileSegment.java
│ │ ├── stream/
│ │ │ ├── CommitLogInputStream.java
│ │ │ ├── FileSegmentInputStream.java
│ │ │ └── FileSegmentInputStreamFactory.java
│ │ └── util/
│ │ ├── MessageFormatUtil.java
│ │ └── MessageStoreUtil.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── tieredstore/
│ │ ├── TieredMessageStoreTest.java
│ │ ├── common/
│ │ │ ├── FileSegmentTypeTest.java
│ │ │ ├── GetMessageResultExtTest.java
│ │ │ ├── GroupCommitContextTest.java
│ │ │ └── SelectBufferResultTest.java
│ │ ├── core/
│ │ │ ├── MessageStoreDispatcherImplTest.java
│ │ │ ├── MessageStoreFetcherImplTest.java
│ │ │ └── MessageStoreTopicFilterTest.java
│ │ ├── exception/
│ │ │ └── TieredStoreExceptionTest.java
│ │ ├── file/
│ │ │ ├── FlatAppendFileTest.java
│ │ │ ├── FlatCommitLogFileTest.java
│ │ │ ├── FlatFileFactoryTest.java
│ │ │ ├── FlatFileStoreTest.java
│ │ │ └── FlatMessageFileTest.java
│ │ ├── index/
│ │ │ ├── IndexItemTest.java
│ │ │ ├── IndexStoreFileTest.java
│ │ │ ├── IndexStoreServiceBenchTest.java
│ │ │ └── IndexStoreServiceTest.java
│ │ ├── metadata/
│ │ │ └── DefaultMetadataStoreTest.java
│ │ ├── metrics/
│ │ │ └── TieredStoreMetricsManagerTest.java
│ │ ├── provider/
│ │ │ ├── FileSegmentFactoryTest.java
│ │ │ ├── FileSegmentTest.java
│ │ │ └── MemoryFileSegmentTest.java
│ │ ├── stream/
│ │ │ └── FileSegmentInputStreamTest.java
│ │ └── util/
│ │ ├── MessageFormatUtilTest.java
│ │ └── MessageStoreUtilTest.java
│ └── resources/
│ └── rmq.logback-test.xml
└── tools/
├── BUILD.bazel
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── tools/
│ │ ├── admin/
│ │ │ ├── DefaultMQAdminExt.java
│ │ │ ├── DefaultMQAdminExtImpl.java
│ │ │ ├── MQAdminExt.java
│ │ │ ├── MQAdminUtils.java
│ │ │ ├── api/
│ │ │ │ ├── BrokerOperatorResult.java
│ │ │ │ ├── MessageTrack.java
│ │ │ │ └── TrackType.java
│ │ │ └── common/
│ │ │ ├── AdminToolHandler.java
│ │ │ ├── AdminToolResult.java
│ │ │ └── AdminToolsResultCodeEnum.java
│ │ ├── command/
│ │ │ ├── CommandUtil.java
│ │ │ ├── MQAdminStartup.java
│ │ │ ├── SubCommand.java
│ │ │ ├── SubCommandException.java
│ │ │ ├── auth/
│ │ │ │ ├── CopyAclsSubCommand.java
│ │ │ │ ├── CopyUsersSubCommand.java
│ │ │ │ ├── CreateAclSubCommand.java
│ │ │ │ ├── CreateUserSubCommand.java
│ │ │ │ ├── DeleteAclSubCommand.java
│ │ │ │ ├── DeleteUserSubCommand.java
│ │ │ │ ├── GetAclSubCommand.java
│ │ │ │ ├── GetUserSubCommand.java
│ │ │ │ ├── ListAclSubCommand.java
│ │ │ │ ├── ListUserSubCommand.java
│ │ │ │ ├── UpdateAclSubCommand.java
│ │ │ │ └── UpdateUserSubCommand.java
│ │ │ ├── broker/
│ │ │ │ ├── BrokerConsumeStatsSubCommand.java
│ │ │ │ ├── BrokerStatusSubCommand.java
│ │ │ │ ├── CleanExpiredCQSubCommand.java
│ │ │ │ ├── CleanUnusedTopicCommand.java
│ │ │ │ ├── CommitLogSetReadAheadSubCommand.java
│ │ │ │ ├── DeleteExpiredCommitLogSubCommand.java
│ │ │ │ ├── GetBrokerConfigCommand.java
│ │ │ │ ├── GetBrokerEpochSubCommand.java
│ │ │ │ ├── GetColdDataFlowCtrInfoSubCommand.java
│ │ │ │ ├── RemoveColdDataFlowCtrGroupConfigSubCommand.java
│ │ │ │ ├── ResetMasterFlushOffsetSubCommand.java
│ │ │ │ ├── SendMsgStatusCommand.java
│ │ │ │ ├── SwitchTimerEngineSubCommand.java
│ │ │ │ ├── UpdateBrokerConfigSubCommand.java
│ │ │ │ └── UpdateColdDataFlowCtrGroupConfigSubCommand.java
│ │ │ ├── cluster/
│ │ │ │ ├── CLusterSendMsgRTCommand.java
│ │ │ │ └── ClusterListSubCommand.java
│ │ │ ├── connection/
│ │ │ │ ├── ConsumerConnectionSubCommand.java
│ │ │ │ └── ProducerConnectionSubCommand.java
│ │ │ ├── consumer/
│ │ │ │ ├── ConsumerProgressSubCommand.java
│ │ │ │ ├── ConsumerStatusSubCommand.java
│ │ │ │ ├── ConsumerSubCommand.java
│ │ │ │ ├── DeleteSubscriptionGroupCommand.java
│ │ │ │ ├── GetConsumerConfigSubCommand.java
│ │ │ │ ├── SetConsumeModeSubCommand.java
│ │ │ │ ├── StartMonitoringSubCommand.java
│ │ │ │ ├── UpdateSubGroupListSubCommand.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
│ │ │ │ └── ExportPopRecordCommand.java
│ │ │ ├── ha/
│ │ │ │ ├── GetSyncStateSetSubCommand.java
│ │ │ │ └── HAStatusSubCommand.java
│ │ │ ├── lite/
│ │ │ │ ├── GetBrokerLiteInfoSubCommand.java
│ │ │ │ ├── GetLiteClientInfoSubCommand.java
│ │ │ │ ├── GetLiteGroupInfoSubCommand.java
│ │ │ │ ├── GetLiteTopicInfoSubCommand.java
│ │ │ │ ├── GetParentTopicInfoSubCommand.java
│ │ │ │ └── TriggerLiteDispatchSubCommand.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
│ │ │ ├── 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/
│ │ │ │ ├── CheckRocksdbCqWriteProgressCommand.java
│ │ │ │ └── QueryConsumeQueueCommand.java
│ │ │ ├── stats/
│ │ │ │ └── StatsAllSubCommand.java
│ │ │ └── topic/
│ │ │ ├── AllocateMQSubCommand.java
│ │ │ ├── DeleteTopicSubCommand.java
│ │ │ ├── RebalanceResult.java
│ │ │ ├── RemappingStaticTopicSubCommand.java
│ │ │ ├── TopicClusterSubCommand.java
│ │ │ ├── TopicListSubCommand.java
│ │ │ ├── TopicRouteSubCommand.java
│ │ │ ├── TopicStatusSubCommand.java
│ │ │ ├── UpdateOrderConfCommand.java
│ │ │ ├── UpdateStaticTopicSubCommand.java
│ │ │ ├── UpdateTopicListSubCommand.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/
│ │ ├── DefaultMQAdminExtImplTest.java
│ │ └── DefaultMQAdminExtTest.java
│ ├── command/
│ │ ├── CommandUtilTest.java
│ │ ├── broker/
│ │ │ ├── BrokerConsumeStatsSubCommandTest.java
│ │ │ ├── BrokerStatusSubCommandTest.java
│ │ │ ├── CleanExpiredCQSubCommandTest.java
│ │ │ ├── CleanUnusedTopicCommandTest.java
│ │ │ ├── DeleteExpiredCommitLogSubCommandTest.java
│ │ │ ├── GetBrokerConfigCommandTest.java
│ │ │ ├── SendMsgStatusCommandTest.java
│ │ │ ├── SwitchTimerEngineSubCommandTest.java
│ │ │ └── UpdateBrokerConfigSubCommandTest.java
│ │ ├── connection/
│ │ │ ├── ConsumerConnectionSubCommandTest.java
│ │ │ └── ProducerConnectionSubCommandTest.java
│ │ ├── consumer/
│ │ │ ├── ConsumerProgressSubCommandTest.java
│ │ │ ├── ConsumerStatusSubCommandTest.java
│ │ │ ├── GetConsumerConfigSubCommandTest.java
│ │ │ └── UpdateSubGroupListSubCommandTest.java
│ │ ├── lite/
│ │ │ ├── GetBrokerLiteInfoSubCommandTest.java
│ │ │ └── GetLiteClientInfoSubCommandTest.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/
│ │
================================================
FILE CONTENTS
================================================
================================================
FILE: .asf.yaml
================================================
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
github:
description: "Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications."
homepage: https://rocketmq.apache.org/
labels:
- messaging
- streaming
- eventing
- cloud-native
- rocketmq
- java
- hacktoberfest
enabled_merge_buttons:
# Enable squash button
squash: true
# Disable merge button
merge: false
# Disable rebase button
rebase: false
protected_branches:
master: {}
develop:
required_pull_request_reviews:
dismiss_stale_reviews: true
require_code_owner_reviews: false
required_approving_review_count: 1
required_status_checks:
contexts:
- misspell-check
- check-license
- maven-compile (ubuntu-latest, JDK-8)
- maven-compile (windows-latest, JDK-8)
- maven-compile (macos-latest, JDK-8)
notifications:
commits: commits@rocketmq.apache.org
issues: commits@rocketmq.apache.org
pullrequests: commits@rocketmq.apache.org
jobs: commits@rocketmq.apache.org
discussions: dev@rocketmq.apache.org
================================================
FILE: .bazelrc
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
startup --host_jvm_args=-Xmx2g
run --color=yes
build --color=yes
build --enable_platform_specific_config
test --action_env=TEST_TMPDIR=/tmp
test --experimental_strict_java_deps=warn
test --experimental_ui_max_stdouterr_bytes=10485760
build --experimental_strict_java_deps=warn
test --test_output=errors
# This .bazelrc file contains all of the flags required for the provided
# toolchain with Remote Build Execution.
# Note your WORKSPACE must contain an rbe_autoconfig target with
# name="rbe_default" to use these flags as-is.
# Depending on how many machines are in the remote execution instance, setting
# this higher can make builds faster by allowing more jobs to run in parallel.
# Setting it too high can result in jobs that timeout, however, while waiting
# for a remote machine to execute them.
build:remote --jobs=150
build:remote --remote_executor=grpcs://remote.buildbuddy.io
build:remote --host_platform=@buildbuddy_toolchain//:platform
build:remote --platforms=@buildbuddy_toolchain//:platform
build:remote --extra_execution_platforms=@buildbuddy_toolchain//:platform
build:remote --crosstool_top=@buildbuddy_toolchain//:toolchain
build:remote --extra_toolchains=@buildbuddy_toolchain//:cc_toolchain
build:remote --java_language_version=8
build:remote --java_runtime_version=8
build:remote --define=EXECUTOR=remote
# Enable remote execution so actions are performed on the remote systems.
build:remote --remote_executor=grpcs://remote.buildbuddy.io
# Enforce stricter environment rules, which eliminates some non-hermetic
# behavior and therefore improves both the remote cache hit rate and the
# correctness and repeatability of the build.
build:remote --incompatible_strict_action_env=true
# Set a higher timeout value, just in case.
build:remote --remote_timeout=3600
# Use a pre-configured account, such that we may have pull-request replacing pull-request-target
build:remote --remote_header=x-buildbuddy-api-key=FD819nUEY7WjvqmoufsU
test:remote --remote_header=x-buildbuddy-api-key=FD819nUEY7WjvqmoufsU
================================================
FILE: .bazelversion
================================================
6.5.0
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Bug Report
title: "[Bug] Bug title "
description: Create a report to help us identify any unintended flaws, errors, or faults.
body:
- type: checkboxes
attributes:
label: Before Creating the Bug Report
options:
- label: >
I found a bug, not just asking a question, which should be created in [GitHub Discussions](https://github.com/apache/rocketmq/discussions).
required: true
- label: >
I have searched the [GitHub Issues](https://github.com/apache/rocketmq/issues) and [GitHub Discussions](https://github.com/apache/rocketmq/discussions) of this repository and believe that this is not a duplicate.
required: true
- label: >
I have confirmed that this bug belongs to the current repository, not other repositories of RocketMQ.
required: true
- type: textarea
attributes:
label: Runtime platform environment
description: Describe the runtime platform environment.
placeholder: >
OS: (e.g., "Ubuntu 20.04")
OS: (e.g., "Windows Server 2019")
validations:
required: true
- type: textarea
attributes:
label: RocketMQ version
description: Describe the RocketMQ version.
placeholder: >
branch: (e.g develop|4.9.x)
version: (e.g. 5.1.0|4.9.5)
Git commit id: (e.g. c88b5cfa72e204962929eea105687647146112c6)
validations:
required: true
- type: textarea
attributes:
label: JDK Version
description: Run or Compiler version.
placeholder: >
Compiler: (e.g., "Oracle JDK 11.0.17")
OS: (e.g., "Ubuntu 20.04")
Runtime (if different from JDK above): (e.g., "Oracle JRE 8u251")
OS (if different from OS compiled on): (e.g., "Windows Server 2019")
validations:
required: false
- type: textarea
attributes:
label: Describe the Bug
description: Describe what happened.
placeholder: >
A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
attributes:
label: Steps to Reproduce
description: Describe the steps to reproduce the bug here.
placeholder: >
If possible, provide a recipe for reproducing the error.
validations:
required: true
- type: textarea
attributes:
label: What Did You Expect to See?
description: You expect to see result.
placeholder: >
A clear and concise description of what you expected to see.
validations:
required: true
- type: textarea
attributes:
label: What Did You See Instead?
description: You instead to see result.
placeholder: >
A clear and concise description of what you saw instead.
validations:
required: true
- type: textarea
attributes:
label: Additional Context
description: Additional context.
placeholder: >
Add any other context about the problem here.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
blank_issues_enabled: false
contact_links:
- name: Ask Question
url: https://github.com/apache/rocketmq/discussions
about: Please go to GitHub Disccusions to ask questions
================================================
FILE: .github/ISSUE_TEMPLATE/doc.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Documentation Related
title: "[Doc] Documentation Related "
description: I find some issues related to the documentation.
labels: [ "module/doc" ]
body:
- type: checkboxes
attributes:
label: Search before creation
description: >
Please make sure to search in the [issues](https://github.com/apache/rocketmq/issues)
first to see whether the same issue was reported already.
options:
- label: >
I had searched in the [issues](https://github.com/apache/rocketmq/issues) and found
no similar issues.
required: true
- type: textarea
attributes:
label: Documentation Related
description: Describe the suggestion about document.
placeholder: >
e.g There is a typo
validations:
required: true
- type: checkboxes
attributes:
label: Are you willing to submit PR?
description: >
This is absolutely not required, but we are happy to guide you in the contribution process
especially if you already have a good understanding of how to implement the fix.
options:
- label: Yes I am willing to submit a PR!
- type: markdown
attributes:
value: "Thanks for completing our form!"
================================================
FILE: .github/ISSUE_TEMPLATE/enhancement_request.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Enhancement Request
title: "[Enhancement] Enhancement title"
description: Suggest an enhancement for this project
labels: [ "type/enhancement" ]
body:
- type: checkboxes
attributes:
label: Before Creating the Enhancement Request
description: >
Most of issues should be classified as bug or feature request. An issue should be considered as an enhancement when it proposes improvements to
existing functionality or user experience, without necessarily introducing new features or fixing existing bugs.
options:
- label: >
I have confirmed that this should be classified as an enhancement rather than a bug/feature.
required: true
- type: textarea
attributes:
label: Summary
placeholder: >
A clear and concise description of the enhancement you would like to see in the project.
validations:
required: true
- type: textarea
attributes:
label: Motivation
placeholder: >
Explain why you believe this enhancement is necessary, and how it benefits the project and community.
Include any specific use cases that you have in mind.
validations:
required: true
- type: textarea
attributes:
label: Describe the Solution You'd Like
placeholder: >
Describe the enhancement you propose, detailing the change and implementation steps involved.
If you have multiple solutions, please list them separately.
validations:
required: true
- type: textarea
attributes:
label: Describe Alternatives You've Considered
placeholder: >
List any alternative enhancements or implementations you have considered, and explain why they may not be as effective or appropriate.
validations:
required: true
- type: textarea
attributes:
label: Additional Context
placeholder: >
Add any relevant context, screenshots, prototypes, or other supplementary information to help illustrate the enhancement.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Feature Request
title: "[Feature] New feature title"
description: Suggest an idea for this project.
labels: [ "type/new feature" ]
body:
- type: textarea
attributes:
label: Is Your Feature Request Related to a Problem?
description: Please Describe It.
placeholder: >
A clear and concise description of what the problem is.
validations:
required: true
- type: textarea
attributes:
label: Describe the Solution You'd Like
description: Describe how you solved it.
placeholder: >
A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Describe Alternatives You've Considered
description: Describe your solution
placeholder: >
A clear and concise description of any alternative solutions or features you've considered.
validations:
required: true
- type: textarea
attributes:
label: Additional Context
description: Additional context.
placeholder: >
Add any other context about the problem here.
validations:
required: false
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- Please make sure the target branch is right. In most case, the target branch should be `develop`. -->
### Which Issue(s) This PR Fixes
<!-- Please ensure that the related issue has already been created, and [link this pull request to that issue using keywords](<https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword>) to ensure automatic closure. -->
- Fixes #issue_id
### Brief Description
<!-- Write a brief description for your pull request to help the maintainer understand the reasons behind your changes. -->
### How Did You Test This Change?
<!-- In order to ensure the code quality of Apache RocketMQ, we expect every pull request to have undergone thorough testing. -->
================================================
FILE: .github/asf-deploy-settings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
~ this work for additional information regarding copyright ownership.
~ The ASF licenses this file to You under the Apache License, Version 2.0
~ (the "License"); you may not use this file except in compliance with
~ the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>apache.snapshots.https</id>
<username>${env.NEXUS_DEPLOY_USERNAME}</username>
<password>${env.NEXUS_DEPLOY_PASSWORD}</password>
<configuration>
<snapshotRepository>
<maxUniqueSnapshots>60</maxUniqueSnapshots>
</snapshotRepository>
</configuration>
</server>
</servers>
</settings>
================================================
FILE: .github/workflows/bazel.yml
================================================
name: Build and Run Tests by Bazel
on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches:
- master
- develop
- bazel
jobs:
build:
name: "bazel-compile (${{ matrix.os }})"
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v2
- name: Build
run: bazel build --config=remote //...
- name: Run Tests
run: bazel test --config=remote //...
================================================
FILE: .github/workflows/codeql_analysis.yml
================================================
name: CodeQL Analysis
on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches:
- master
jobs:
CodeQL-Build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: java
- name: Autobuild
uses: github/codeql-action/autobuild@v2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
================================================
FILE: .github/workflows/coverage.yml
================================================
name: Coverage
on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches: [master, develop]
jobs:
calculate-coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: "8"
distribution: "corretto"
cache: "maven"
- name: Generate coverage report
run: mvn -B test -T 2C --file pom.xml
- name: Upload to Codecov
uses: codecov/codecov-action@v3
with:
fail_ci_if_error: true
verbose: true
token: cf0cba0a-22f8-4580-89ab-4f1dec3bda6f
================================================
FILE: .github/workflows/integration-test.yml
================================================
name: Run Integration Tests
on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches: [master, develop]
jobs:
it-test:
name: "maven-compile (${{ matrix.os }}, JDK-${{ matrix.jdk }})"
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
jdk: [8]
steps:
- name: Cache Maven Repos
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Checkout
uses: actions/checkout@v2
- name: Set up JDK ${{ matrix.jdk }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.jdk }}
distribution: "corretto"
cache: "maven"
- name: Run integration tests with Maven
run: mvn clean verify -Pit-test -Pskip-unit-tests
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: always()
with:
report_paths: 'test/target/failsafe-reports/TEST-*.xml'
annotate_only: true
include_passed: true
detailed_summary: true
================================================
FILE: .github/workflows/license-checker.yaml
================================================
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: License checker
on:
pull_request:
branches:
- develop
- master
jobs:
check-license:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check License Header
uses: apache/skywalking-eyes@v0.2.0
with:
log: info
config: .licenserc.yaml
================================================
FILE: .github/workflows/maven.yaml
================================================
name: Build and Run Tests by Maven
on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches: [master, develop, bazel]
jobs:
java_build:
name: "maven-compile (${{ matrix.os }}, JDK-${{ matrix.jdk }})"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# see https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
os: [ubuntu-latest, windows-latest, macos-latest]
jdk: [8]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up JDK ${{ matrix.jdk }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.jdk }}
# See https://github.com/actions/setup-java?tab=readme-ov-file#supported-distributions
# AdoptOpenJDK got moved to Eclipse Temurin and won't be updated anymore.
distribution: "corretto"
cache: "maven"
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Upload Auth JVM crash logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: jvm-crash-logs
path: /Users/runner/work/rocketmq/rocketmq/auth/hs_err_pid*.log
retention-days: 1
- name: Upload broker JVM crash logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: jvm-crash-logs
path: /Users/runner/work/rocketmq/rocketmq/broker/hs_err_pid*.log
retention-days: 1
================================================
FILE: .github/workflows/misspell_check.yml
================================================
name: Misspell Check
on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches: [master, develop]
jobs:
misspell-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install misspell
run: |
curl -L -o ./install-misspell.sh https://git.io/misspell
sh ./install-misspell.sh
- name: Run misspell
run: find . -type f -print0 | xargs -0 bin/misspell -error -i transfered,derivate
================================================
FILE: .github/workflows/pr-ci.yml
================================================
name: PR-CI
on:
pull_request:
types: [opened, reopened, synchronize]
jobs:
dist-tar:
name: Build distribution tar
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-java@v3
with:
distribution: "temurin"
java-version: "8"
cache: "maven"
- name: Build distribution tar
run: |
mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U
- uses: actions/upload-artifact@v4
name: Upload distribution tar
with:
name: rocketmq
path: distribution/target/rocketmq*/rocketmq*
- name: Save PR number
run: |
mkdir -p ./pr
echo ${{ github.event.number }} > ./pr/NR
- uses: actions/upload-artifact@v4
with:
name: pr
path: pr/
================================================
FILE: .github/workflows/pr-e2e-test.yml
================================================
name: E2E test for pull request
# read-write repo token
# access to secrets
on:
workflow_run:
workflows: ["PR-CI"]
types:
- completed
env:
DOCKER_REPO: apache/rocketmq-ci
jobs:
docker:
if: >
github.repository == 'apache/rocketmq' &&
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
matrix:
base-image: ["ubuntu"]
java-version: ["8"]
steps:
- name: 'Download artifact'
uses: actions/github-script@v6
with:
script: |
let artifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id }},
});
let matchArtifactRmq = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "rocketmq"
})[0];
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifactRmq.id,
archive_format: 'zip',
});
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/rocketmq.zip', Buffer.from(download.data));
- run: |
unzip rocketmq.zip
mkdir rocketmq
cp -r rocketmq-* rocketmq/
ls
- uses: actions/checkout@v3
with:
repository: apache/rocketmq-docker.git
ref: master
path: rocketmq-docker
- name: docker-login
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and save docker images
id: build-images
run: |
cd rocketmq-docker/image-build-ci
version=${{ github.event.pull_request.number || github.ref_name }}-$(uuidgen)
mkdir versionlist
touch versionlist/"${version}-`echo ${{ matrix.base-image }} | sed -e "s/:/-/g"`"
sh ./build-image-local.sh ${version} ${{ matrix.base-image }} ${{ matrix.java-version }} ${DOCKER_REPO}
- uses: actions/upload-artifact@v4
name: Upload distribution tar
with:
name: versionlist
path: rocketmq-docker/image-build-ci/versionlist/*
list-version:
if: >
github.repository == 'apache/rocketmq' &&
always()
name: List version
needs: [docker]
runs-on: ubuntu-latest
timeout-minutes: 30
outputs:
version-json: ${{ steps.show_versions.outputs.version-json }}
steps:
- uses: actions/download-artifact@v4
name: Download versionlist
with:
name: versionlist
path: versionlist
- name: Show versions
id: show_versions
run: |
a=(`ls versionlist`)
printf '%s\n' "${a[@]}" | jq -R . | jq -s .
echo version-json=`printf '%s\n' "${a[@]}" | jq -R . | jq -s .` >> $GITHUB_OUTPUT
deploy:
if: ${{ success() }}
name: Deploy RocketMQ
needs: [list-version,docker]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: Deploy rocketmq
with:
action: "deploy"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
chart-git: "https://ghproxy.com/https://github.com/apache/rocketmq-docker.git"
chart-branch: "master"
chart-path: "./rocketmq-k8s-helm"
job-id: ${{ strategy.job-index }}
helm-values: |
nameserver:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
broker:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
proxy:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
test-e2e-grpc-java:
if: ${{ success() }}
name: Test E2E grpc java
needs: [list-version, deploy]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: e2e test
with:
action: "test"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
test-code-git: "https://ghproxy.com/https://github.com/apache/rocketmq-e2e"
test-code-branch: "master"
test-code-path: java/e2e
test-cmd: "mvn -B test"
job-id: 0
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: always() # always run even if the previous step fails
with:
report_paths: '**/test_report/TEST-*.xml'
annotate_only: true
include_passed: true
detailed_summary: true
- uses: actions/upload-artifact@v4
if: always()
name: Upload test log
with:
name: test-e2e-grpc-java-log.txt
path: testlog.txt
test-e2e-golang:
if: ${{ success() }}
name: Test E2E golang
needs: [list-version, deploy]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: e2e test
with:
action: "test"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
test-code-git: "https://ghproxy.com/https://github.com/apache/rocketmq-e2e"
test-code-branch: "master"
test-code-path: golang
test-cmd: |
cd ../common && mvn -Prelease -DskipTests clean package -U
cd ../rocketmq-admintools && source bin/env.sh
LATEST_GO_VERSION=$(curl -s https://go.dev/VERSION?m=text | awk 'NR==1')
wget "https://go.dev/dl/${LATEST_GO_VERSION}.linux-amd64.tar.gz" && \
rm -rf /usr/local/go && tar -C /usr/local -xzf ${LATEST_GO_VERSION}.linux-amd64.tar.gz
cd ../golang && go get -u github.com/apache/rocketmq-clients/golang && gotestsum --junitfile ./target/surefire-reports/TEST-report.xml ./mqgotest/... -timeout 2m -v
job-id: 0
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: always() # always run even if the previous step fails
with:
report_paths: '**/test_report/TEST-*.xml'
annotate_only: true
include_passed: true
detailed_summary: true
- uses: actions/upload-artifact@v4
if: always()
name: Upload test log
with:
name: test-e2e-golang-log.txt
path: testlog.txt
test-e2e-remoting-java:
if: ${{ success() }}
name: Test E2E remoting java
needs: [ list-version, deploy ]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: e2e test
with:
action: "test"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
test-code-git: "https://ghproxy.com/https://github.com/apache/rocketmq-e2e"
test-code-branch: "master"
test-code-path: java/e2e-v4
test-cmd: "mvn -B test"
job-id: 0
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: always() # always run even if the previous step fails
with:
report_paths: '**/test_report/TEST-*.xml'
annotate_only: true
include_passed: true
detailed_summary: true
- uses: actions/upload-artifact@v4
if: always()
name: Upload test log
with:
name: test-e2e-remoting-java-log.txt
path: testlog.txt
clean:
if: always()
name: Clean
needs: [list-version, test-e2e-grpc-java, test-e2e-golang, test-e2e-remoting-java]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: clean
with:
action: "clean"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
job-id: ${{ strategy.job-index }}
================================================
FILE: .github/workflows/push-ci.yml
================================================
name: PUSH-CI
on:
push:
branches: [master, develop]
#schedule:
# - cron: "0 18 * * *" # TimeZone: UTC 0
concurrency:
group: rocketmq-${{ github.ref }}
env:
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
DOCKER_REPO: apache/rocketmq-ci
jobs:
dist-tar:
if: github.repository == 'apache/rocketmq'
name: Build dist tar
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-java@v3
with:
distribution: "temurin"
java-version: "8"
cache: "maven"
- name: Build distribution tar
run: |
mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U
- uses: actions/upload-artifact@v4
name: Upload distribution tar
with:
name: rocketmq
path: distribution/target/rocketmq*/rocketmq*
docker:
if: ${{ success() }}
name: Docker images
needs: [dist-tar]
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
matrix:
base-image: ["ubuntu"]
java-version: ["8"]
steps:
- uses: actions/checkout@v3
with:
repository: apache/rocketmq-docker.git
ref: master
path: rocketmq-docker
- uses: actions/download-artifact@v4
name: Download distribution tar
with:
name: rocketmq
path: rocketmq
- name: docker-login
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and save docker images
id: build-images
run: |
cd rocketmq-docker/image-build-ci
version=${{ github.event.pull_request.number || github.ref_name }}-$(uuidgen)
mkdir versionlist
touch versionlist/"${version}-`echo ${{ matrix.base-image }} | sed -e "s/:/-/g"`"
sh ./build-image-local.sh ${version} ${{ matrix.base-image }} ${{ matrix.java-version }} ${DOCKER_REPO}
- uses: actions/upload-artifact@v4
name: Upload distribution tar
with:
name: versionlist
path: rocketmq-docker/image-build-ci/versionlist/*
list-version:
if: >
github.repository == 'apache/rocketmq' &&
always()
name: List version
needs: [docker]
runs-on: ubuntu-latest
timeout-minutes: 30
outputs:
version-json: ${{ steps.show_versions.outputs.version-json }}
steps:
- uses: actions/download-artifact@v4
name: Download versionlist
with:
name: versionlist
path: versionlist
- name: Show versions
id: show_versions
run: |
a=(`ls versionlist`)
printf '%s\n' "${a[@]}" | jq -R . | jq -s .
echo version-json=`printf '%s\n' "${a[@]}" | jq -R . | jq -s .` >> $GITHUB_OUTPUT
deploy-e2e:
if: ${{ success() }}
name: Deploy RocketMQ For E2E
needs: [list-version,docker]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: Deploy rocketmq
with:
action: "deploy"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
chart-git: "https://ghproxy.com/https://github.com/apache/rocketmq-docker.git"
chart-branch: "master"
chart-path: "./rocketmq-k8s-helm"
job-id: ${{ strategy.job-index }}
helm-values: |
nameserver:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
broker:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
proxy:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
deploy-benchmark:
if: ${{ success() }}
name: Deploy RocketMQ For Benchmarking
needs: [list-version,docker]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: Deploy rocketmq
with:
action: "deploy"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
chart-git: "https://ghproxy.com/https://github.com/apache/rocketmq-docker.git"
chart-branch: "master"
chart-path: "./rocketmq-k8s-helm"
job-id: "001-${{ strategy.job-index }}"
helm-values: |
nameserver:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
broker:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
proxy:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
test-e2e-grpc-java:
if: ${{ success() }}
name: Test E2E grpc java
needs: [list-version, deploy-e2e]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: e2e test
with:
action: "test"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
test-code-git: "https://ghproxy.com/https://github.com/apache/rocketmq-e2e"
test-code-branch: "master"
test-code-path: java/e2e
test-cmd: "mvn -B test"
job-id: 0
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: always() # always run even if the previous step fails
with:
report_paths: '**/test_report/TEST-*.xml'
annotate_only: true
include_passed: true
detailed_summary: true
- uses: actions/upload-artifact@v4
if: always()
name: Upload test log
with:
name: test-e2e-grpc-java-log.txt
path: testlog.txt
test-e2e-golang:
if: ${{ success() }}
name: Test E2E golang
needs: [list-version, deploy-e2e]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: e2e test
with:
action: "test"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
test-code-git: "https://ghproxy.com/https://github.com/apache/rocketmq-e2e"
test-code-branch: "master"
test-code-path: golang
test-cmd: |
cd ../common && mvn -Prelease -DskipTests clean package -U
cd ../rocketmq-admintools && source bin/env.sh
LATEST_GO_VERSION=$(curl -s https://go.dev/VERSION?m=text | awk 'NR==1')
wget "https://go.dev/dl/${LATEST_GO_VERSION}.linux-amd64.tar.gz" && \
rm -rf /usr/local/go && tar -C /usr/local -xzf ${LATEST_GO_VERSION}.linux-amd64.tar.gz
cd ../golang && go get -u github.com/apache/rocketmq-clients/golang && gotestsum --junitfile ./target/surefire-reports/TEST-report.xml ./mqgotest/... -timeout 2m -v
job-id: 0
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: always() # always run even if the previous step fails
with:
report_paths: '**/test_report/TEST-*.xml'
annotate_only: true
include_passed: true
detailed_summary: true
- uses: actions/upload-artifact@v4
if: always()
name: Upload test log
with:
name: test-e2e-golang-log.txt
path: testlog.txt
test-e2e-remoting-java:
if: ${{ success() }}
name: Test E2E remoting java
needs: [ list-version, deploy-e2e ]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: e2e test
with:
action: "test"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
test-code-git: "https://ghproxy.com/https://github.com/apache/rocketmq-e2e"
test-code-branch: "master"
test-code-path: java/e2e-v4
test-cmd: "mvn -B test"
job-id: 0
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: always() # always run even if the previous step fails
with:
report_paths: '**/test_report/TEST-*.xml'
annotate_only: true
include_passed: true
detailed_summary: true
- uses: actions/upload-artifact@v4
if: always()
name: Upload test log
with:
name: test-e2e-remoting-java-log.txt
path: testlog.txt
benchmark-test:
if: ${{ success() }}
runs-on: ubuntu-latest
name: Performance benchmark test
needs: [ list-version, deploy-benchmark ]
timeout-minutes: 60
steps:
- uses: apache/rocketmq-test-tool/benchmark-runner@ce372e5f3906ca1891e4918b05be14608eae608e
name: Performance benchmark
with:
action: "performance-benchmark"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
job-id: "001-${{ strategy.job-index }}"
# The time to run the test, 15 minutes
test-time: "900"
# Some thresholds set in advance
min-send-tps-threshold: "12000"
max-rt-ms-threshold: "500"
avg-rt-ms-threshold: "10"
max-2c-rt-ms-threshold: "150"
avg-2c-rt-ms-threshold: "10"
- name: Upload test report
if: always()
uses: actions/upload-artifact@v4
with:
name: benchmark-report
path: benchmark/
clean-e2e:
if: always()
name: Clean E2E
needs: [ list-version, test-e2e-grpc-java, test-e2e-golang, test-e2e-remoting-java ]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: clean
with:
action: "clean"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
job-id: ${{ strategy.job-index }}
clean-benchmark:
if: always()
name: Clean Benchmarking
needs: [ list-version, benchmark-test ]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288
name: clean
with:
action: "clean"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
job-id: "001-${{ strategy.job-index }}"
================================================
FILE: .github/workflows/rerun-workflow.yml
================================================
name: Rerun workflow
on:
workflow_run:
workflows: ["Build and Run Tests by Maven" , "Build and Run Tests by Bazel"]
types:
- completed
permissions:
actions: write
jobs:
rerun:
if: github.event.workflow_run.conclusion == 'failure' && fromJSON(github.event.workflow_run.run_attempt) < 3
runs-on: ubuntu-latest
steps:
- name: rerun ${{ github.event.workflow_run.id }}
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh run watch ${{ github.event.workflow_run.id }} > /dev/null 2>&1
gh run rerun ${{ github.event.workflow_run.id }} --failed
================================================
FILE: .github/workflows/snapshot-automation.yml
================================================
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Snapshot Daily Release Automation
on:
schedule: # schedule the job to run at 12 a.m. daily
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
branch:
description: 'The branch to trigger the workflow, The default branch is "develop" when both branch and commit_id are empty'
required: false
commit_id:
description: 'The commit id to trigger the workflow. Do not set branch and commit_id together'
required: false
rocketmq_version:
description: 'Name of the SNAPSHOT version to be generated. The default version is "$VERSION-stable-SNAPSHOT"'
required: false
env:
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
DOCKER_REPO: apache/rocketmq-ci
jobs:
dist-tar:
if: github.repository == 'apache/rocketmq'
name: Build dist tar
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout develop
if: github.event.inputs.branch == '' && github.event.inputs.commit_id == ''
uses: actions/checkout@v3
with:
ref: develop
- name: Checkout specific commit
if: github.event.inputs.branch == '' && github.event.inputs.commit_id != ''
uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.commit_id }}
- name: Checkout specific branch
if: github.event.inputs.branch != '' && github.event.inputs.commit_id == ''
uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.branch }}
- uses: actions/setup-java@v4
with:
distribution: "corretto"
java-version: "8"
cache: "maven"
- name: Build distribution tar
env:
MAVEN_SETTINGS: ${{ github.workspace }}/.github/asf-deploy-settings.xml
run: |
mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U
- uses: actions/upload-artifact@v4
name: Upload distribution tar
with:
name: rocketmq
path: distribution/target/rocketmq*/rocketmq*
docker-build:
if: ${{ success() }}
name: Docker images
needs: [ dist-tar ]
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
matrix:
base-image: [ "ubuntu" ]
java-version: [ "8" ]
steps:
- uses: actions/checkout@v3
with:
repository: apache/rocketmq-docker.git
ref: master
path: rocketmq-docker
- uses: actions/download-artifact@v4
name: Download distribution tar
with:
name: rocketmq
path: rocketmq
- name: docker-login
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and save docker images
id: build-images
run: |
cd rocketmq-docker/image-build-ci
version=${{ github.event.pull_request.number || github.ref_name }}-$(uuidgen)
mkdir versionlist
touch versionlist/"${version}-`echo ${{ matrix.base-image }} | sed -e "s/:/-/g"`"
sh ./build-image-local.sh ${version} ${{ matrix.base-image }} ${{ matrix.java-version }} ${DOCKER_REPO}
- uses: actions/upload-artifact@v4
name: Upload distribution tar
with:
name: versionlist
path: rocketmq-docker/image-build-ci/versionlist/*
list-version:
if: >
github.repository == 'apache/rocketmq' &&
always()
name: List version
needs: [ docker-build ]
runs-on: ubuntu-latest
timeout-minutes: 30
outputs:
version-json: ${{ steps.show_versions.outputs.version-json }}
steps:
- uses: actions/download-artifact@v4
name: Download versionlist
with:
name: versionlist
path: versionlist
- name: Show versions
id: show_versions
run: |
a=(`ls versionlist`)
printf '%s\n' "${a[@]}" | jq -R . | jq -s .
echo version-json=`printf '%s\n' "${a[@]}" | jq -R . | jq -s .` >> $GITHUB_OUTPUT
deploy-rocketmq:
if: ${{ success() }}
name: Deploy RocketMQ
needs: [ list-version,docker-build ]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@1a646589accad17070423eabf0f54925e52b0666
name: Deploy rocketmq
with:
action: "deploy"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
chart-git: "https://github.com/apache/rocketmq-docker.git"
chart-branch: "master"
chart-path: "./rocketmq-k8s-helm"
job-id: ${{ strategy.job-index }}
helm-values: |
nameserver:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
broker:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
proxy:
image:
repository: ${{env.DOCKER_REPO}}
tag: ${{ matrix.version }}
java-grpc-e2e-test:
if: ${{ success() }}
name: E2E Test
needs: [ list-version, deploy-rocketmq ]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@1a646589accad17070423eabf0f54925e52b0666
name: e2e test
with:
action: "test"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
test-code-git: "https://github.com/apache/rocketmq-e2e.git"
test-code-branch: "master"
test-code-path: java/e2e
test-cmd: "mvn -B test"
job-id: ${{ strategy.job-index }}
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: always() # always run even if the previous step fails
with:
report_paths: '**/test_report/TEST-*.xml'
annotate_only: true
include_passed: true
detailed_summary: true
- uses: actions/upload-artifact@v4
if: always()
name: Upload test log
with:
name: testlog.txt
path: testlog.txt
clean:
if: always()
name: Clean
needs: [ list-version, java-grpc-e2e-test ]
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
version: ${{ fromJSON(needs.list-version.outputs.version-json) }}
steps:
- uses: apache/rocketmq-test-tool@1a646589accad17070423eabf0f54925e52b0666
name: clean
with:
action: "clean"
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
test-version: "${{ matrix.version }}"
job-id: ${{ strategy.job-index }}
snapshot:
runs-on: ubuntu-latest
needs: [ java-grpc-e2e-test ]
env:
NEXUS_DEPLOY_USERNAME: ${{ secrets.NEXUS_USER }}
NEXUS_DEPLOY_PASSWORD: ${{ secrets.NEXUS_PW }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: develop
persist-credentials: false
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 8
distribution: "corretto"
cache: "maven"
- name: Update default pom version
if: github.event.inputs.rocketmq_version == ''
run: |
VERSION=$(mvn -q -Dexec.executable='echo' -Dexec.args='${project.version}' --non-recursive exec:exec)
VERSION=$(echo $VERSION | awk -F '-SNAPSHOT' '{print $1}')
VERSION=$VERSION-stable-SNAPSHOT
mvn versions:set -DnewVersion=$VERSION
- name: Update User-defined pom version
if: github.event.inputs.rocketmq_version != ''
run: |
mvn versions:set -DnewVersion=${{ github.event.inputs.rocketmq_version }}
- name: Deploy to ASF Snapshots Repository
timeout-minutes: 40
run: mvn clean deploy -DskipTests=true --settings .github/asf-deploy-settings.xml
================================================
FILE: .github/workflows/stale.yml
================================================
name: Close Stale Issues/PRs
permissions:
issues: write
pull-requests: write
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v5
with:
operations-per-run: 128
days-before-issue-stale: 365
days-before-issue-close: 3
exempt-issue-labels: "no stale"
stale-issue-label: "stale"
stale-issue-message: "This issue is stale because it has been open for 365 days with no activity. It will be closed in 3 days if no further activity occurs."
close-issue-message: "This issue was closed because it has been inactive for 3 days since being marked as stale."
remove-issue-stale-when-updated: true
days-before-pr-stale: 365
days-before-pr-close: 3
exempt-pr-labels: "no stale"
stale-pr-label: "stale"
stale-pr-message: "This PR is stale because it has been open for 365 days with no activity. It will be closed in 3 days if no further activity occurs. If you wish not to mark it as stale, please leave a comment in this PR."
close-pr-message: "This PR was closed because it has been inactive for 3 days since being marked as stale."
remove-pr-stale-when-updated: true
================================================
FILE: .gitignore
================================================
*dependency-reduced-pom.xml
.classpath
.project
.settings/
target/
devenv
*.log.*
*.iml
.idea/
*.versionsBackup
!NOTICE-BIN
!LICENSE-BIN
.DS_Store
localbin
nohup.out
bazel-out
bazel-bin
bazel-rocketmq
bazel-testlogs
.vscode
MODULE.bazel.lock
*.flattened-pom.xml
================================================
FILE: .licenserc.yaml
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
header:
license:
spdx-id: Apache-2.0
copyright-owner: Apache Software Foundation
paths-ignore:
- '.gitignore'
- '.travis.yml'
- 'CONTRIBUTING.md'
- 'LICENSE'
- 'NOTICE'
- '**/*.md'
- 'BUILDING'
- '.github/**'
- '*/src/test/resources/certs/*'
- 'src/test/**/*.log'
- '*/src/test/resources/META-INF/service/*'
- '*/src/main/resources/META-INF/service/*'
- '*/src/test/resources/rmq-proxy-home/conf/rmq-proxy.json'
- '*/src/test/resources/mockito-extensions/*'
- '**/target/**'
- '**/*.iml'
- 'docs/**'
- 'localbin/**'
- 'distribution/LICENSE-BIN'
- 'distribution/NOTICE-BIN'
- 'distribution/conf/rmq-proxy.json'
- '.bazelversion'
- 'common/src/main/resources/META-INF/services/org.apache.rocketmq.logging.ch.qos.logback.classic.spi.Configurator'
comment: on-failure
================================================
FILE: BUILD.bazel
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
java_library(
name = "test_deps",
visibility = ["//visibility:public"],
exports = [
"@maven//:junit_junit",
"@maven//:org_assertj_assertj_core",
"@maven//:org_hamcrest_hamcrest_library",
"@maven//:org_mockito_mockito_core",
"@maven//:org_powermock_powermock_module_junit4",
"@maven//:org_powermock_powermock_api_mockito2",
"@maven//:org_hamcrest_hamcrest_core",
"@maven//:ch_qos_logback_logback_classic",
"@maven//:org_awaitility_awaitility",
"@maven//:org_openjdk_jmh_jmh_core",
"@maven//:org_openjdk_jmh_jmh_generator_annprocess",
"@maven//:org_mockito_mockito_junit_jupiter",
],
)
================================================
FILE: BUILDING
================================================
Build Instructions for Apache RocketMQ
====================================================
(1) Prerequisites
JDK 1.8+ is required in order to compile and run RocketMQ.
RocketMQ utilizes Maven as a distribution management and packaging tool. Version 3.0.3 or later is required.
Maven installation and configuration instructions can be found here:
http://maven.apache.org/run-maven/index.html
(2) Run test cases
Execute the following command in order to compile and run test cases of each components:
$ mvn test
(3) Import projects to Eclipse IDE
First, generate eclipse project files:
$ mvn -U eclipse:eclipse
Then, import to eclipse by specifying the root directory of the project via:
[File] > [Import] > [Existing Projects into Workspace].
(4) Build distribution packages
Execute the following command in order to build the tar.gz packages and install JAR into local repository:
$ mvn -Prelease-all -DskipTests clean install -U
================================================
FILE: CONTRIBUTING.md
================================================
## How To Contribute
We are always very happy to have contributions, whether for trivial cleanups or big new features.
We want to have high quality, well documented codes for each programming language, as well as the surrounding [ecosystem](https://github.com/apache/rocketmq-externals) of integration tools that people use with RocketMQ.
Nor is code the only way to contribute to the project. We strongly value documentation, integration with other projects, and gladly accept improvements for these aspects.
Recommend reading:
* [Contributors Tech Guide](http://www.apache.org/dev/contributors)
* [Get involved!](http://www.apache.org/foundation/getinvolved.html)
## Contributing code
To submit a change for inclusion, please do the following:
#### If the change is non-trivial please include some unit tests that cover the new functionality.
#### If you are introducing a completely new feature or API it is a good idea to start a [RIP](https://github.com/apache/rocketmq/wiki/RocketMQ-Improvement-Proposal) and get consensus on the basic design first.
#### It is our job to follow up on patches in a timely fashion. Nag us if we aren't doing our job (sometimes we drop things).
### Squash commits
If you have a pull request on GitHub, and updated more than once, it's better to squash all commits.
1. Identify how many commits you made since you began: ``git log``.
2. Squash these commits by N: ``git rebase -i HEAD~N`` .
3. Leave "pick" tag in the first line.
4. Change all other commits from "pick" to "fixup".
5. Then do "force push" to overwrite remote history: ``git push -u origin ROCKETMQ-9999 --force``
6. All your changes are now in a single commit, that would be much better for review.
More details of squash can be found at [stackoverflow](https://stackoverflow.com/questions/5189560/squash-my-last-x-commits-together-using-git).
## Becoming a Committer
We are always interested in adding new contributors. What we look for are series of contributions, good taste and ongoing interest in the project. If you are interested in becoming a committer, please let one of the existing committers know and they can help you walk through the process.
Nowadays, we have several important contribution points:
#### Wiki & JavaDoc
#### RocketMQ SDK(C++\.Net\Php\Python\Go\Node.js)
#### RocketMQ Connectors
##### Prerequisites
If you want to contribute to the above listed points, you must abide by the following prerequisites:
###### Readability - API must have Javadoc, and some very important methods must also have Javadoc
###### Testability - Above 80% unit test coverage for the main process
###### Maintainability - Comply with our [checkstyle spec](style/rmq_checkstyle.xml), and at least a 3-month update frequency
###### Deployability - We encourage you to deploy into [maven repository](http://search.maven.org/)
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: MODULE.bazel
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
###############################################################################
# Bazel now uses Bzlmod by default to manage external dependencies.
# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
#
# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
###############################################################################
================================================
FILE: NOTICE
================================================
Apache RocketMQ
Copyright 2016-2026 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
================================================
FILE: README.md
================================================
## Apache RocketMQ
[![Build Status][maven-build-image]][maven-build-url]
[![CodeCov][codecov-image]][codecov-url]
[![Maven Central][maven-central-image]][maven-central-url]
[![Release][release-image]][release-url]
[![License][license-image]][license-url]
[![Average Time to Resolve An Issue][average-time-to-resolve-an-issue-image]][average-time-to-resolve-an-issue-url]
[![Percentage of Issues Still Open][percentage-of-issues-still-open-image]][percentage-of-issues-still-open-url]
[![Twitter Follow][twitter-follow-image]][twitter-follow-url]
**[Apache RocketMQ](https://rocketmq.apache.org) is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability.**
It offers a variety of features:
* Messaging patterns including publish/subscribe, request/reply and streaming
* Financial grade transactional message
* Built-in fault tolerance and high availability configuration options based on [DLedger Controller](docs/en/controller/quick_start.md)
* Built-in message tracing capability, also supports opentracing
* Versatile big-data and streaming ecosystem integration
* Message retroactivity by time or offset
* Reliable FIFO and strict ordered messaging in the same queue
* Efficient pull and push consumption model
* Million-level message accumulation capacity in a single queue
* Multiple messaging protocols like gRPC, MQTT, JMS and OpenMessaging
* Flexible distributed scale-out deployment architecture
* Lightning-fast batch message exchange system
* Various message filter mechanics such as SQL and Tag
* Docker images for isolated testing and cloud isolated clusters
* Feature-rich administrative dashboard for configuration, metrics and monitoring
* Authentication and authorization
* Free open source connectors, for both sources and sinks
* Lightweight real-time computing
----------
## Quick Start
This paragraph guides you through steps of installing RocketMQ in different ways.
For local development and testing, only one instance will be created for each component.
### Run RocketMQ locally
RocketMQ runs on all major operating systems and requires only a Java JDK version 8 or higher to be installed.
To check, run `java -version`:
```shell
$ java -version
java version "1.8.0_121"
```
For Windows users, click [here](https://dist.apache.org/repos/dist/release/rocketmq/5.4.0/rocketmq-all-5.4.0-bin-release.zip) to download the 5.4.0 RocketMQ binary release,
unpack it to your local disk, such as `D:\rocketmq`.
For macOS and Linux users, execute following commands:
```shell
# Download release from the Apache mirror
$ wget https://dist.apache.org/repos/dist/release/rocketmq/5.4.0/rocketmq-all-5.4.0-bin-release.zip
# Unpack the release
$ unzip rocketmq-all-5.4.0-bin-release.zip
```
Prepare a terminal and change to the extracted `bin` directory:
```shell
$ cd rocketmq-all-5.4.0-bin-release/bin
```
**1) Start NameServer**
NameServer will be listening at `0.0.0.0:9876`, make sure that the port is not used by others on the local machine, and then do as follows.
For macOS and Linux users:
```shell
### start Name Server
$ nohup sh mqnamesrv &
### check whether Name Server is successfully started
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
```
For Windows users, you need to set environment variables first:
- From the desktop, right click the Computer icon.
- Choose Properties from the context menu.
- Click the Advanced system settings link.
- Click Environment Variables.
- Add Environment `ROCKETMQ_HOME="D:\rocketmq"`.
Then change directory to rocketmq, type and run:
```shell
$ mqnamesrv.cmd
The Name Server boot success...
```
**2) Start Broker**
For macOS and Linux users:
```shell
### start Broker
$ nohup sh mqbroker -n localhost:9876 &
### check whether Broker is successfully started, eg: Broker's IP is 192.168.1.2, Broker's name is broker-a
$ tail -f ~/logs/rocketmqlogs/broker.log
The broker[broker-a, 192.168.1.2:10911] boot success...
```
For Windows users:
```shell
$ mqbroker.cmd -n localhost:9876
The broker[broker-a, 192.168.1.2:10911] boot success...
```
### Run RocketMQ in Docker
You can run RocketMQ on your own machine within Docker containers,
`host` network will be used to expose listening port in the container.
**1) Start NameServer**
```shell
$ docker run -it --net=host apache/rocketmq ./mqnamesrv
```
**2) Start Broker**
```shell
$ docker run -it --net=host --mount type=bind,source=/tmp/store,target=/home/rocketmq/store apache/rocketmq ./mqbroker -n localhost:9876
```
### Run RocketMQ in Kubernetes
You can also run a RocketMQ cluster within a Kubernetes cluster using [RocketMQ Operator](https://github.com/apache/rocketmq-operator).
Before your operations, make sure that `kubectl` and related kubeconfig file installed on your machine.
**1) Install CRDs**
```shell
### install CRDs
$ git clone https://github.com/apache/rocketmq-operator
$ cd rocketmq-operator && make deploy
### check whether CRDs are successfully installed
$ kubectl get crd | grep rocketmq.apache.org
brokers.rocketmq.apache.org 2022-05-12T09:23:18Z
consoles.rocketmq.apache.org 2022-05-12T09:23:19Z
nameservices.rocketmq.apache.org 2022-05-12T09:23:18Z
topictransfers.rocketmq.apache.org 2022-05-12T09:23:19Z
### check whether operator is running
$ kubectl get pods | grep rocketmq-operator
rocketmq-operator-6f65c77c49-8hwmj 1/1 Running 0 93s
```
**2) Create Cluster Instance**
```shell
### create RocketMQ cluster resource
$ cd example && kubectl create -f rocketmq_v1alpha1_rocketmq_cluster.yaml
### check whether cluster resources are running
$ kubectl get sts
NAME READY AGE
broker-0-master 1/1 107m
broker-0-replica-1 1/1 107m
name-service 1/1 107m
```
---
## Apache RocketMQ Community
* [RocketMQ Streams](https://github.com/apache/rocketmq-streams): A lightweight stream computing engine based on Apache RocketMQ.
* [RocketMQ Flink](https://github.com/apache/rocketmq-flink): The Apache RocketMQ connector of Apache Flink that supports source and sink connector in data stream and Table.
* [RocketMQ APIs](https://github.com/apache/rocketmq-apis): RocketMQ protobuf protocol.
* [RocketMQ Clients](https://github.com/apache/rocketmq-clients): gRPC/protobuf-based RocketMQ clients.
* RocketMQ Remoting-based Clients
- [RocketMQ Client CPP](https://github.com/apache/rocketmq-client-cpp)
- [RocketMQ Client Go](https://github.com/apache/rocketmq-client-go)
- [RocketMQ Client Python](https://github.com/apache/rocketmq-client-python)
- [RocketMQ Client Nodejs](https://github.com/apache/rocketmq-client-nodejs)
* [RocketMQ Spring](https://github.com/apache/rocketmq-spring): A project which helps developers quickly integrate Apache RocketMQ with Spring Boot.
* [RocketMQ Exporter](https://github.com/apache/rocketmq-exporter): An Apache RocketMQ exporter for Prometheus.
* [RocketMQ Operator](https://github.com/apache/rocketmq-operator): Providing a way to run an Apache RocketMQ cluster on Kubernetes.
* [RocketMQ Docker](https://github.com/apache/rocketmq-docker): The Git repo of the Docker Image for Apache RocketMQ.
* [RocketMQ Dashboard](https://github.com/apache/rocketmq-dashboard): Operation and maintenance console of Apache RocketMQ.
* [RocketMQ Connect](https://github.com/apache/rocketmq-connect): A tool for scalably and reliably streaming data between Apache RocketMQ and other systems.
* [RocketMQ MQTT](https://github.com/apache/rocketmq-mqtt): A new MQTT protocol architecture model, based on which Apache RocketMQ can better support messages from terminals such as IoT devices and Mobile APP.
* [RocketMQ EventBridge](https://github.com/apache/rocketmq-eventbridge): EventBridge makes it easier to build an event-driven application.
* [RocketMQ Incubating Community Projects](https://github.com/apache/rocketmq-externals): Incubator community projects of Apache RocketMQ, including [logappender](https://github.com/apache/rocketmq-externals/tree/master/logappender), [rocketmq-ansible](https://github.com/apache/rocketmq-externals/tree/master/rocketmq-ansible), [rocketmq-beats-integration](https://github.com/apache/rocketmq-externals/tree/master/rocketmq-beats-integration), [rocketmq-cloudevents-binding](https://github.com/apache/rocketmq-externals/tree/master/rocketmq-cloudevents-binding), etc.
* [RocketMQ Site](https://github.com/apache/rocketmq-site): The repository for Apache RocketMQ website.
* [RocketMQ E2E](https://github.com/apache/rocketmq-e2e): A project for testing Apache RocketMQ, including end-to-end, performance, compatibility tests.
----------
## Learn it & Contact us
* Mailing Lists: <https://rocketmq.apache.org/about/contact/>
* Home: <https://rocketmq.apache.org>
* Docs: <https://rocketmq.apache.org/docs/quick-start/>
* Issues: <https://github.com/apache/rocketmq/issues>
* Rips: <https://github.com/apache/rocketmq/wiki/RocketMQ-Improvement-Proposal>
* Ask: <https://stackoverflow.com/questions/tagged/rocketmq>
* Slack: <https://rocketmq-invite-automation.herokuapp.com/>
----------
## Contributing
We always welcome new contributions, whether for trivial cleanups, [big new features](https://github.com/apache/rocketmq/wiki/RocketMQ-Improvement-Proposal) or other material rewards, more details see [here](http://rocketmq.apache.org/docs/how-to-contribute/).
----------
## License
[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation
----------
## Export Control Notice
This distribution includes cryptographic software. The country in which you currently reside may have
restrictions on the import, possession, use, and/or re-export to another country, of encryption software.
BEFORE using any encryption software, please check your country's laws, regulations and policies concerning
the import, possession, or use, and re-export of encryption software, to see if this is permitted. See
<http://www.wassenaar.org/> for more information.
The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this
software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software
using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache
Software Foundation distribution makes it eligible for export under the License Exception ENC Technology
Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for
both object code and source code.
The following provides more details on the included cryptographic software:
This software uses Apache Commons Crypto (https://commons.apache.org/proper/commons-crypto/) to
support authentication, and encryption and decryption of data sent across the network between
services.
[maven-build-image]: https://github.com/apache/rocketmq/actions/workflows/maven.yaml/badge.svg
[maven-build-url]: https://github.com/apache/rocketmq/actions/workflows/maven.yaml
[codecov-image]: https://codecov.io/gh/apache/rocketmq/branch/master/graph/badge.svg
[codecov-url]: https://codecov.io/gh/apache/rocketmq
[maven-central-image]: https://maven-badges.herokuapp.com/maven-central/org.apache.rocketmq/rocketmq-all/badge.svg
[maven-central-url]: http://search.maven.org/#search%7Cga%7C1%7Corg.apache.rocketmq
[release-image]: https://img.shields.io/badge/release-download-orange.svg
[release-url]: https://rocketmq.apache.org/download/
[license-image]: https://img.shields.io/badge/license-Apache%202-4EB1BA.svg
[license-url]: https://www.apache.org/licenses/LICENSE-2.0.html
[average-time-to-resolve-an-issue-image]: http://isitmaintained.com/badge/resolution/apache/rocketmq.svg
[average-time-to-resolve-an-issue-url]: http://isitmaintained.com/project/apache/rocketmq
[percentage-of-issues-still-open-image]: http://isitmaintained.com/badge/open/apache/rocketmq.svg
[percentage-of-issues-still-open-url]: http://isitmaintained.com/project/apache/rocketmq
[twitter-follow-image]: https://img.shields.io/twitter/follow/ApacheRocketMQ?style=social
[twitter-follow-url]: https://twitter.com/intent/follow?screen_name=ApacheRocketMQ
================================================
FILE: WORKSPACE
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
RULES_JVM_EXTERNAL_TAG = "4.2"
RULES_JVM_EXTERNAL_SHA = "cd1a77b7b02e8e008439ca76fd34f5b07aecb8c752961f9640dea15e9e5ba1ca"
http_archive(
name = "rules_jvm_external",
sha256 = RULES_JVM_EXTERNAL_SHA,
strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
)
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
rules_jvm_external_deps()
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
rules_jvm_external_setup()
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
artifacts = [
"junit:junit:4.13.2",
"com.alibaba:fastjson:1.2.76",
"com.alibaba.fastjson2:fastjson2:2.0.59",
"org.hamcrest:hamcrest-library:1.3",
"io.netty:netty-all:4.1.65.Final",
"org.assertj:assertj-core:3.22.0",
"org.mockito:mockito-core:3.10.0",
"org.powermock:powermock-module-junit4:2.0.9",
"org.powermock:powermock-api-mockito2:2.0.9",
"org.powermock:powermock-core:2.0.9",
"com.github.luben:zstd-jni:1.5.2-2",
"org.lz4:lz4-java:1.8.0",
"commons-validator:commons-validator:1.7",
"org.apache.commons:commons-lang3:3.12.0",
"org.hamcrest:hamcrest-core:1.3",
"io.openmessaging.storage:dledger:0.3.2",
"net.java.dev.jna:jna:4.2.2",
"ch.qos.logback:logback-classic:1.2.10",
"ch.qos.logback:logback-core:1.2.10",
"io.opentracing:opentracing-api:0.33.0",
"io.opentracing:opentracing-mock:0.33.0",
"commons-collections:commons-collections:3.2.2",
"org.awaitility:awaitility:4.1.0",
"commons-cli:commons-cli:1.5.0",
"com.google.guava:guava:31.0.1-jre",
"org.yaml:snakeyaml:2.0",
"commons-codec:commons-codec:1.13",
"commons-io:commons-io:2.7",
"com.google.truth:truth:0.30",
"org.bouncycastle:bcpkix-jdk15on:1.69",
"com.google.code.gson:gson:2.8.9",
"com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2",
"org.apache.rocketmq:rocketmq-proto:2.1.1",
"com.google.protobuf:protobuf-java:3.20.1",
"com.google.protobuf:protobuf-java-util:3.20.1",
"com.conversantmedia:disruptor:1.2.10",
"org.apache.tomcat:annotations-api:6.0.53",
"com.google.code.findbugs:jsr305:3.0.2",
"org.checkerframework:checker-qual:3.12.0",
"org.reflections:reflections:0.9.11",
"org.openjdk.jmh:jmh-core:1.19",
"org.openjdk.jmh:jmh-generator-annprocess:1.19",
"com.github.ben-manes.caffeine:caffeine:2.9.3",
"io.grpc:grpc-services:1.47.0",
"io.grpc:grpc-netty-shaded:1.47.0",
"io.grpc:grpc-context:1.47.0",
"io.grpc:grpc-stub:1.47.0",
"io.grpc:grpc-api:1.47.0",
"io.grpc:grpc-testing:1.47.0",
"org.springframework:spring-core:5.3.26",
"io.opentelemetry:opentelemetry-exporter-otlp:1.29.0",
"io.opentelemetry:opentelemetry-exporter-prometheus:1.29.0-alpha",
"io.opentelemetry:opentelemetry-exporter-logging:1.29.0",
"io.opentelemetry:opentelemetry-sdk:1.29.0",
"io.opentelemetry:opentelemetry-exporter-logging-otlp:1.29.0",
"com.squareup.okio:okio-jvm:3.0.0",
"io.opentelemetry:opentelemetry-api:1.29.0",
"io.opentelemetry:opentelemetry-sdk-metrics:1.29.0",
"io.opentelemetry:opentelemetry-sdk-common:1.29.0",
"io.github.aliyunmq:rocketmq-slf4j-api:1.0.0",
"io.github.aliyunmq:rocketmq-logback-classic:1.0.0",
"org.slf4j:jul-to-slf4j:2.0.6",
"org.jetbrains:annotations:23.1.0",
"io.github.aliyunmq:rocketmq-shaded-slf4j-api-bridge:1.0.0",
"software.amazon.awssdk:s3:2.20.29",
"com.fasterxml.jackson.core:jackson-databind:2.13.4.2",
"com.adobe.testing:s3mock-junit4:2.11.0",
"io.github.aliyunmq:rocketmq-grpc-netty-codec-haproxy:1.0.0",
"org.apache.rocketmq:rocketmq-rocksdb:1.0.6",
"com.alipay.sofa:jraft-core:1.3.14",
"com.alipay.sofa:hessian:3.3.6",
"io.netty:netty-tcnative-boringssl-static:2.0.48.Final",
"org.mockito:mockito-junit-jupiter:4.11.0",
"com.alibaba.fastjson2:fastjson2:2.0.59",
"org.junit.jupiter:junit-jupiter-api:5.9.1",
],
fetch_sources = True,
repositories = [
# Private repositories are supported through HTTP Basic auth
"https://repo1.maven.org/maven2",
],
)
http_archive(
name = "io_buildbuddy_buildbuddy_toolchain",
sha256 = "b12273608db627eb14051eb75f8a2134590172cd69392086d392e25f3954ea6e",
strip_prefix = "buildbuddy-toolchain-8d5d18373adfca9d8e33b4812915abc9b132f1ee",
urls = ["https://github.com/buildbuddy-io/buildbuddy-toolchain/archive/8d5d18373adfca9d8e33b4812915abc9b132f1ee.tar.gz"],
)
load("@io_buildbuddy_buildbuddy_toolchain//:deps.bzl", "buildbuddy_deps")
buildbuddy_deps()
load("@io_buildbuddy_buildbuddy_toolchain//:rules.bzl", "buildbuddy")
buildbuddy(name = "buildbuddy_toolchain")
http_archive(
name = "bazel_skylib",
sha256 = "51b5105a760b353773f904d2bbc5e664d0987fbaf22265164de65d43e910d8ac",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.8.1/bazel-skylib-1.8.1.tar.gz",
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.8.1/bazel-skylib-1.8.1.tar.gz",
],
)
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
bazel_skylib_workspace()
http_archive(
name = "rules_java",
urls = [
"https://github.com/bazelbuild/rules_java/releases/download/7.12.5/rules_java-7.12.5.tar.gz",
],
sha256 = "17b18cb4f92ab7b94aa343ce78531b73960b1bed2ba166e5b02c9fdf0b0ac270",
)
load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains")
rules_java_dependencies()
rules_java_toolchains()
load("@rules_java//toolchains:local_java_repository.bzl", "local_java_repository")
local_java_repository(
name = "jdk8",
version = "8",
java_home = "/usr/lib/jvm/java-8-openjdk-amd64",
)
================================================
FILE: auth/BUILD.bazel
================================================
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
load("//bazel:GenTestRules.bzl", "GenTestRules")
java_library(
name = "auth",
srcs = glob(["src/main/java/**/*.java"]),
visibility = ["//visibility:public"],
deps = [
"//common",
"//remoting",
"//client",
"@maven//:commons_codec_commons_codec",
"@maven//:org_apache_commons_commons_lang3",
"@maven//:commons_collections_commons_collections",
"@maven//:com_alibaba_fastjson2_fastjson2",
"@maven//:org_apache_rocketmq_rocketmq_proto",
"@maven//:org_slf4j_slf4j_api",
"@maven//:com_github_ben_manes_caffeine_caffeine",
"@maven//:io_grpc_grpc_api",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:com_google_protobuf_protobuf_java_util",
"@maven//:io_netty_netty_all",
"@maven//:com_google_guava_guava",
"@maven//:org_apache_rocketmq_rocketmq_rocksdb",
],
)
java_library(
name = "tests",
srcs = glob(["src/test/java/**/*.java"]),
resources = glob(["src/test/resources/**/*.yml"]),
visibility = ["//visibility:public"],
deps = [
":auth",
"//:test_deps",
"//common",
"//remoting",
"//client",
"@maven//:commons_codec_commons_codec",
"@maven//:org_apache_commons_commons_lang3",
"@maven//:commons_collections_commons_collections",
"@maven//:com_alibaba_fastjson2_fastjson2",
"@maven//:org_apache_rocketmq_rocketmq_proto",
"@maven//:org_slf4j_slf4j_api",
"@maven//:com_github_ben_manes_caffeine_caffeine",
"@maven//:io_grpc_grpc_api",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:com_google_protobuf_protobuf_java_util",
"@maven//:io_netty_netty_all",
"@maven//:com_google_guava_guava",
"@maven//:org_apache_rocketmq_rocketmq_rocksdb",
],
)
GenTestRules(
name = "GeneratedTestRules",
test_files = glob(["src/test/java/**/*Test.java"]),
deps = [
":tests",
],
)
================================================
FILE: auth/pom.xml
================================================
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for additional
information regarding copyright ownership. The ASF licenses this file to
You under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of
the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
by applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY KIND, either express or implied. See the License for the specific
language governing permissions and limitations under the License. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-all</artifactId>
<version>${revision}</version>
</parent>
<artifactId>rocketmq-auth</artifactId>
<name>rocketmq-auth ${project.version}</name>
<properties>
<project.root>${basedir}/..</project.root>
</properties>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>rocketmq-proto</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>rocketmq-client</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<exclusions>
<exclusion>
<groupId>org.checkerframework</groupId>
<artifactId>checker-qual</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
</configuration>
</plugin>
</plugins>
</build>
</project>
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/AuthenticationEvaluator.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication;
import java.util.function.Supplier;
import org.apache.rocketmq.auth.authentication.context.AuthenticationContext;
import org.apache.rocketmq.auth.authentication.factory.AuthenticationFactory;
import org.apache.rocketmq.auth.authentication.strategy.AuthenticationStrategy;
import org.apache.rocketmq.auth.config.AuthConfig;
public class AuthenticationEvaluator {
private final AuthenticationStrategy authenticationStrategy;
public AuthenticationEvaluator(AuthConfig authConfig) {
this(authConfig, null);
}
public AuthenticationEvaluator(AuthConfig authConfig, Supplier<?> metadataService) {
this.authenticationStrategy = AuthenticationFactory.getStrategy(authConfig, metadataService);
}
public void evaluate(AuthenticationContext context) {
if (context == null) {
return;
}
this.authenticationStrategy.evaluate(context);
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/AuthenticationContextBuilder.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.builder;
import com.google.protobuf.GeneratedMessageV3;
import io.grpc.Metadata;
import io.netty.channel.ChannelHandlerContext;
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
public interface AuthenticationContextBuilder<AuthenticationContext> {
AuthenticationContext build(Metadata metadata, GeneratedMessageV3 request);
AuthenticationContext build(ChannelHandlerContext context, RemotingCommand request);
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/DefaultAuthenticationContextBuilder.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.builder;
import com.google.protobuf.GeneratedMessageV3;
import io.grpc.Metadata;
import io.netty.channel.ChannelHandlerContext;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.acl.common.AclUtils;
import org.apache.rocketmq.acl.common.SessionCredentials;
import org.apache.rocketmq.auth.authentication.context.DefaultAuthenticationContext;
import org.apache.rocketmq.auth.authentication.exception.AuthenticationException;
import org.apache.rocketmq.common.MQVersion;
import org.apache.rocketmq.common.MixAll;
import org.apache.rocketmq.common.constant.CommonConstants;
import org.apache.rocketmq.common.constant.GrpcConstants;
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
public class DefaultAuthenticationContextBuilder implements AuthenticationContextBuilder<DefaultAuthenticationContext> {
private static final String CREDENTIAL = "Credential";
private static final String SIGNATURE = "Signature";
@Override
public DefaultAuthenticationContext build(Metadata metadata, GeneratedMessageV3 request) {
try {
DefaultAuthenticationContext context = new DefaultAuthenticationContext();
context.setChannelId(metadata.get(GrpcConstants.CHANNEL_ID));
context.setRpcCode(request.getDescriptorForType().getFullName());
String authorization = metadata.get(GrpcConstants.AUTHORIZATION);
if (StringUtils.isEmpty(authorization)) {
return context;
}
String datetime = metadata.get(GrpcConstants.DATE_TIME);
if (StringUtils.isEmpty(datetime)) {
throw new AuthenticationException("datetime is null.");
}
String[] result = authorization.split(CommonConstants.SPACE, 2);
if (result.length != 2) {
throw new AuthenticationException("authentication header is incorrect.");
}
String[] keyValues = result[1].split(CommonConstants.COMMA);
for (String keyValue : keyValues) {
String[] kv = keyValue.trim().split(CommonConstants.EQUAL, 2);
int kvLength = kv.length;
if (kv.length != 2) {
throw new AuthenticationException("authentication keyValues length is incorrect, actual length={}.", kvLength);
}
String authItem = kv[0];
if (CREDENTIAL.equals(authItem)) {
String[] credential = kv[1].split(CommonConstants.SLASH);
int credentialActualLength = credential.length;
if (credentialActualLength == 0) {
throw new AuthenticationException("authentication credential length is incorrect, actual length={}.", credentialActualLength);
}
context.setUsername(credential[0]);
continue;
}
if (SIGNATURE.equals(authItem)) {
context.setSignature(this.hexToBase64(kv[1]));
}
}
context.setContent(datetime.getBytes(StandardCharsets.UTF_8));
return context;
} catch (AuthenticationException e) {
throw e;
} catch (Throwable e) {
throw new AuthenticationException("create authentication context error.", e);
}
}
@Override
public DefaultAuthenticationContext build(ChannelHandlerContext context, RemotingCommand request) {
HashMap<String, String> fields = request.getExtFields();
DefaultAuthenticationContext result = new DefaultAuthenticationContext();
result.setChannelId(context.channel().id().asLongText());
result.setRpcCode(String.valueOf(request.getCode()));
if (MapUtils.isEmpty(fields)) {
return result;
}
if (!fields.containsKey(SessionCredentials.ACCESS_KEY)) {
return result;
}
result.setUsername(fields.get(SessionCredentials.ACCESS_KEY));
result.setSignature(fields.get(SessionCredentials.SIGNATURE));
// Content
SortedMap<String, String> map = new TreeMap<>();
for (Map.Entry<String, String> entry : fields.entrySet()) {
if (request.getVersion() <= MQVersion.Version.V4_9_3.ordinal() &&
MixAll.UNIQUE_MSG_QUERY_FLAG.equals(entry.getKey())) {
continue;
}
if (!SessionCredentials.SIGNATURE.equals(entry.getKey())) {
map.put(entry.getKey(), entry.getValue());
}
}
result.setContent(AclUtils.combineRequestContent(request, map));
return result;
}
public String hexToBase64(String input) throws DecoderException {
byte[] bytes = Hex.decodeHex(input);
return Base64.encodeBase64String(bytes);
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/chain/DefaultAuthenticationHandler.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.chain;
import java.security.MessageDigest;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.acl.common.AclSigner;
import org.apache.rocketmq.auth.authentication.context.DefaultAuthenticationContext;
import org.apache.rocketmq.auth.authentication.enums.UserStatus;
import org.apache.rocketmq.auth.authentication.exception.AuthenticationException;
import org.apache.rocketmq.auth.authentication.factory.AuthenticationFactory;
import org.apache.rocketmq.auth.authentication.model.User;
import org.apache.rocketmq.auth.authentication.provider.AuthenticationMetadataProvider;
import org.apache.rocketmq.auth.config.AuthConfig;
import org.apache.rocketmq.common.chain.Handler;
import org.apache.rocketmq.common.chain.HandlerChain;
public class DefaultAuthenticationHandler implements Handler<DefaultAuthenticationContext, CompletableFuture<Void>> {
private final AuthenticationMetadataProvider authenticationMetadataProvider;
public DefaultAuthenticationHandler(AuthConfig config, Supplier<?> metadataService) {
this.authenticationMetadataProvider = AuthenticationFactory.getMetadataProvider(config, metadataService);
}
@Override
public CompletableFuture<Void> handle(DefaultAuthenticationContext context,
HandlerChain<DefaultAuthenticationContext, CompletableFuture<Void>> chain) {
return getUser(context).thenAccept(user -> doAuthenticate(context, user));
}
protected CompletableFuture<User> getUser(DefaultAuthenticationContext context) {
if (this.authenticationMetadataProvider == null) {
throw new AuthenticationException("The authenticationMetadataProvider is not configured");
}
if (StringUtils.isEmpty(context.getUsername())) {
throw new AuthenticationException("username cannot be null.");
}
return this.authenticationMetadataProvider.getUser(context.getUsername());
}
protected void doAuthenticate(DefaultAuthenticationContext context, User user) {
if (user == null) {
throw new AuthenticationException("User:{} is not found.", context.getUsername());
}
if (user.getUserStatus() == UserStatus.DISABLE) {
throw new AuthenticationException("User:{} is disabled.", context.getUsername());
}
String signature = AclSigner.calSignature(context.getContent(), user.getPassword());
if (context.getSignature() == null
|| !MessageDigest.isEqual(signature.getBytes(AclSigner.DEFAULT_CHARSET), context.getSignature().getBytes(AclSigner.DEFAULT_CHARSET))) {
throw new AuthenticationException("check signature failed.");
}
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/context/AuthenticationContext.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.context;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
public abstract class AuthenticationContext {
private String channelId;
private String rpcCode;
private Map<String, Object> extInfo;
public String getChannelId() {
return channelId;
}
public void setChannelId(String channelId) {
this.channelId = channelId;
}
public String getRpcCode() {
return rpcCode;
}
public void setRpcCode(String rpcCode) {
this.rpcCode = rpcCode;
}
@SuppressWarnings("unchecked")
public <T> T getExtInfo(String key) {
if (StringUtils.isBlank(key)) {
return null;
}
if (this.extInfo == null) {
return null;
}
Object value = this.extInfo.get(key);
if (value == null) {
return null;
}
return (T) value;
}
public void setExtInfo(String key, Object value) {
if (StringUtils.isBlank(key) || value == null) {
return;
}
if (this.extInfo == null) {
this.extInfo = new HashMap<>();
}
this.extInfo.put(key, value);
}
public boolean hasExtInfo(String key) {
Object value = getExtInfo(key);
return value != null;
}
public Map<String, Object> getExtInfo() {
return extInfo;
}
public void setExtInfo(Map<String, Object> extInfo) {
this.extInfo = extInfo;
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/context/DefaultAuthenticationContext.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.context;
public class DefaultAuthenticationContext extends AuthenticationContext {
private String username;
private byte[] content;
private String signature;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public byte[] getContent() {
return content;
}
public void setContent(byte[] content) {
this.content = content;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/enums/SubjectType.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.enums;
import com.alibaba.fastjson2.annotation.JSONField;
import org.apache.commons.lang3.StringUtils;
public enum SubjectType {
USER((byte) 1, "User");
@JSONField(value = true)
private final byte code;
private final String name;
SubjectType(byte code, String name) {
this.code = code;
this.name = name;
}
public static SubjectType getByName(String name) {
for (SubjectType subjectType : SubjectType.values()) {
if (StringUtils.equalsIgnoreCase(subjectType.getName(), name)) {
return subjectType;
}
}
return null;
}
public byte getCode() {
return code;
}
public String getName() {
return name;
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/enums/UserStatus.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.enums;
import com.alibaba.fastjson2.annotation.JSONField;
import org.apache.commons.lang3.StringUtils;
public enum UserStatus {
ENABLE((byte) 1, "enable"),
DISABLE((byte) 2, "disable");
@JSONField(value = true)
private final byte code;
private final String name;
UserStatus(byte code, String name) {
this.code = code;
this.name = name;
}
public static UserStatus getByName(String name) {
for (UserStatus subjectType : UserStatus.values()) {
if (StringUtils.equalsIgnoreCase(subjectType.getName(), name)) {
return subjectType;
}
}
return null;
}
public byte getCode() {
return code;
}
public String getName() {
return name;
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/enums/UserType.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.enums;
import com.alibaba.fastjson2.annotation.JSONField;
import org.apache.commons.lang3.StringUtils;
public enum UserType {
SUPER((byte) 1, "Super"),
NORMAL((byte) 2, "Normal");
@JSONField(value = true)
private final byte code;
private final String name;
UserType(byte code, String name) {
this.code = code;
this.name = name;
}
public static UserType getByName(String name) {
for (UserType subjectType : UserType.values()) {
if (StringUtils.equalsIgnoreCase(subjectType.getName(), name)) {
return subjectType;
}
}
return null;
}
public byte getCode() {
return code;
}
public String getName() {
return name;
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/exception/AuthenticationException.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.exception;
import org.slf4j.helpers.MessageFormatter;
public class AuthenticationException extends RuntimeException {
public AuthenticationException(String message) {
super(message);
}
public AuthenticationException(String message, Throwable cause) {
super(message, cause);
}
public AuthenticationException(String messagePattern, Object... argArray) {
super(MessageFormatter.arrayFormat(messagePattern, argArray).getMessage());
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/factory/AuthenticationFactory.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.factory;
import com.google.protobuf.GeneratedMessageV3;
import io.grpc.Metadata;
import io.netty.channel.ChannelHandlerContext;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import java.util.function.Supplier;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.auth.authentication.AuthenticationEvaluator;
import org.apache.rocketmq.auth.authentication.context.AuthenticationContext;
import org.apache.rocketmq.auth.authentication.manager.AuthenticationMetadataManager;
import org.apache.rocketmq.auth.authentication.manager.AuthenticationMetadataManagerImpl;
import org.apache.rocketmq.auth.authentication.provider.AuthenticationMetadataProvider;
import org.apache.rocketmq.auth.authentication.provider.AuthenticationProvider;
import org.apache.rocketmq.auth.authentication.provider.DefaultAuthenticationProvider;
import org.apache.rocketmq.auth.authentication.strategy.AuthenticationStrategy;
import org.apache.rocketmq.auth.authentication.strategy.StatelessAuthenticationStrategy;
import org.apache.rocketmq.auth.config.AuthConfig;
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
public class AuthenticationFactory {
private static final Map<String, Object> INSTANCE_MAP = new HashMap<>();
private static final String PROVIDER_PREFIX = "PROVIDER_";
private static final String METADATA_PROVIDER_PREFIX = "METADATA_PROVIDER_";
private static final String EVALUATOR_PREFIX = "EVALUATOR_";
@SuppressWarnings("unchecked")
public static AuthenticationProvider<AuthenticationContext> getProvider(AuthConfig config) {
if (config == null) {
return null;
}
return computeIfAbsent(PROVIDER_PREFIX + config.getConfigName(), key -> {
try {
Class<? extends AuthenticationProvider<? extends AuthenticationContext>> clazz =
DefaultAuthenticationProvider.class;
if (StringUtils.isNotBlank(config.getAuthenticationProvider())) {
clazz = (Class<? extends AuthenticationProvider<? extends AuthenticationContext>>) Class.forName(config.getAuthenticationProvider());
}
return (AuthenticationProvider<AuthenticationContext>) clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new RuntimeException("Failed to load the authentication provider.", e);
}
});
}
public static AuthenticationMetadataProvider getMetadataProvider(AuthConfig config) {
return getMetadataProvider(config, null);
}
public static AuthenticationMetadataManager getMetadataManager(AuthConfig config) {
return new AuthenticationMetadataManagerImpl(config);
}
@SuppressWarnings("unchecked")
public static AuthenticationMetadataProvider getMetadataProvider(AuthConfig config, Supplier<?> metadataService) {
if (config == null) {
return null;
}
return computeIfAbsent(METADATA_PROVIDER_PREFIX + config.getConfigName(), key -> {
try {
if (StringUtils.isBlank(config.getAuthenticationMetadataProvider())) {
return null;
}
Class<? extends AuthenticationMetadataProvider> clazz = (Class<? extends AuthenticationMetadataProvider>)
Class.forName(config.getAuthenticationMetadataProvider());
AuthenticationMetadataProvider result = clazz.getDeclaredConstructor().newInstance();
result.initialize(config, metadataService);
return result;
} catch (Exception e) {
throw new RuntimeException("Failed to load the authentication metadata provider", e);
}
});
}
public static AuthenticationEvaluator getEvaluator(AuthConfig config) {
return computeIfAbsent(EVALUATOR_PREFIX + config.getConfigName(), key -> new AuthenticationEvaluator(config));
}
public static AuthenticationEvaluator getEvaluator(AuthConfig config, Supplier<?> metadataService) {
return computeIfAbsent(EVALUATOR_PREFIX + config.getConfigName(), key -> new AuthenticationEvaluator(config, metadataService));
}
@SuppressWarnings("unchecked")
public static AuthenticationStrategy getStrategy(AuthConfig config, Supplier<?> metadataService) {
try {
Class<? extends AuthenticationStrategy> clazz = StatelessAuthenticationStrategy.class;
if (StringUtils.isNotBlank(config.getAuthenticationStrategy())) {
clazz = (Class<? extends AuthenticationStrategy>) Class.forName(config.getAuthenticationStrategy());
}
return clazz.getDeclaredConstructor(AuthConfig.class, Supplier.class).newInstance(config, metadataService);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static AuthenticationContext newContext(AuthConfig config, Metadata metadata, GeneratedMessageV3 request) {
AuthenticationProvider<AuthenticationContext> authenticationProvider = getProvider(config);
if (authenticationProvider == null) {
return null;
}
return authenticationProvider.newContext(metadata, request);
}
public static AuthenticationContext newContext(AuthConfig config, ChannelHandlerContext context,
RemotingCommand command) {
AuthenticationProvider<AuthenticationContext> authenticationProvider = getProvider(config);
if (authenticationProvider == null) {
return null;
}
return authenticationProvider.newContext(context, command);
}
@SuppressWarnings("unchecked")
private static <V> V computeIfAbsent(String key, Function<String, ? extends V> function) {
Object result = null;
if (INSTANCE_MAP.containsKey(key)) {
result = INSTANCE_MAP.get(key);
}
if (result == null) {
synchronized (INSTANCE_MAP) {
if (INSTANCE_MAP.containsKey(key)) {
result = INSTANCE_MAP.get(key);
}
if (result == null) {
result = function.apply(key);
if (result != null) {
INSTANCE_MAP.put(key, result);
}
}
}
}
return result != null ? (V) result : null;
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/manager/AuthenticationMetadataManager.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.manager;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import org.apache.rocketmq.auth.authentication.model.User;
import org.apache.rocketmq.auth.config.AuthConfig;
public interface AuthenticationMetadataManager {
void shutdown();
void initUser(AuthConfig authConfig);
CompletableFuture<Void> createUser(User user);
CompletableFuture<Void> updateUser(User user);
CompletableFuture<Void> deleteUser(String username);
CompletableFuture<User> getUser(String username);
CompletableFuture<List<User>> listUser(String filter);
CompletableFuture<Boolean> isSuperUser(String username);
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/manager/AuthenticationMetadataManagerImpl.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.manager;
import com.alibaba.fastjson2.JSON;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.acl.common.SessionCredentials;
import org.apache.rocketmq.auth.authentication.enums.UserStatus;
import org.apache.rocketmq.auth.authentication.enums.UserType;
import org.apache.rocketmq.auth.authentication.exception.AuthenticationException;
import org.apache.rocketmq.auth.authentication.factory.AuthenticationFactory;
import org.apache.rocketmq.auth.authentication.model.User;
import org.apache.rocketmq.auth.authentication.provider.AuthenticationMetadataProvider;
import org.apache.rocketmq.auth.authorization.factory.AuthorizationFactory;
import org.apache.rocketmq.auth.authorization.provider.AuthorizationMetadataProvider;
import org.apache.rocketmq.auth.config.AuthConfig;
import org.apache.rocketmq.common.utils.ExceptionUtils;
public class AuthenticationMetadataManagerImpl implements AuthenticationMetadataManager {
private final AuthenticationMetadataProvider authenticationMetadataProvider;
private final AuthorizationMetadataProvider authorizationMetadataProvider;
public AuthenticationMetadataManagerImpl(AuthConfig authConfig) {
this.authenticationMetadataProvider = AuthenticationFactory.getMetadataProvider(authConfig);
this.authorizationMetadataProvider = AuthorizationFactory.getMetadataProvider(authConfig);
this.initUser(authConfig);
}
@Override
public void shutdown() {
if (this.authenticationMetadataProvider != null) {
this.authenticationMetadataProvider.shutdown();
}
if (this.authorizationMetadataProvider != null) {
this.authorizationMetadataProvider.shutdown();
}
}
@Override
public void initUser(AuthConfig authConfig) {
if (authConfig == null) {
return;
}
if (StringUtils.isNotBlank(authConfig.getInitAuthenticationUser())) {
try {
User initUser = JSON.parseObject(authConfig.getInitAuthenticationUser(), User.class);
initUser.setUserType(UserType.SUPER);
this.getUser(initUser.getUsername()).thenCompose(user -> {
if (user != null) {
return CompletableFuture.completedFuture(null);
}
return this.createUser(initUser);
}).join();
} catch (Exception e) {
throw new AuthenticationException("Init authentication user error.", e);
}
}
if (StringUtils.isNotBlank(authConfig.getInnerClientAuthenticationCredentials())) {
try {
SessionCredentials credentials = JSON.parseObject(authConfig.getInnerClientAuthenticationCredentials(), SessionCredentials.class);
User innerUser = User.of(credentials.getAccessKey(), credentials.getSecretKey(), UserType.SUPER);
this.getUser(innerUser.getUsername()).thenCompose(user -> {
if (user != null) {
return CompletableFuture.completedFuture(null);
}
return this.createUser(innerUser);
}).join();
} catch (Exception e) {
throw new AuthenticationException("Init inner client authentication credentials error", e);
}
}
}
@Override
public CompletableFuture<Void> createUser(User user) {
CompletableFuture<Void> result = new CompletableFuture<>();
try {
this.validate(user, true);
if (user.getUserType() == null) {
user.setUserType(UserType.NORMAL);
}
if (user.getUserStatus() == null) {
user.setUserStatus(UserStatus.ENABLE);
}
result = this.getAuthenticationMetadataProvider().getUser(user.getUsername()).thenCompose(old -> {
if (old != null) {
throw new AuthenticationException("The user is existed");
}
return this.getAuthenticationMetadataProvider().createUser(user);
});
} catch (Exception e) {
this.handleException(e, result);
}
return result;
}
@Override
public CompletableFuture<Void> updateUser(User user) {
CompletableFuture<Void> result = new CompletableFuture<>();
try {
this.validate(user, false);
result = this.getAuthenticationMetadataProvider().getUser(user.getUsername()).thenCompose(old -> {
if (old == null) {
throw new AuthenticationException("The user is not exist");
}
if (StringUtils.isNotBlank(user.getPassword())) {
old.setPassword(user.getPassword());
}
if (user.getUserType() != null) {
old.setUserType(user.getUserType());
}
if (user.getUserStatus() != null) {
old.setUserStatus(user.getUserStatus());
}
return this.getAuthenticationMetadataProvider().updateUser(old);
});
} catch (Exception e) {
this.handleException(e, result);
}
return result;
}
@Override
public CompletableFuture<Void> deleteUser(String username) {
CompletableFuture<Void> result = new CompletableFuture<>();
try {
if (StringUtils.isBlank(username)) {
throw new AuthenticationException("username can not be blank");
}
CompletableFuture<Void> deleteUser = this.getAuthenticationMetadataProvider().deleteUser(username);
CompletableFuture<Void> deleteAcl = this.getAuthorizationMetadataProvider().deleteAcl(User.of(username));
return CompletableFuture.allOf(deleteUser, deleteAcl);
} catch (Exception e) {
this.handleException(e, result);
}
return result;
}
@Override
public CompletableFuture<User> getUser(String username) {
CompletableFuture<User> result = new CompletableFuture<>();
try {
if (StringUtils.isBlank(username)) {
throw new AuthenticationException("username can not be blank");
}
result = this.getAuthenticationMetadataProvider().getUser(username);
} catch (Exception e) {
this.handleException(e, result);
}
return result;
}
@Override
public CompletableFuture<List<User>> listUser(String filter) {
CompletableFuture<List<User>> result = new CompletableFuture<>();
try {
result = this.getAuthenticationMetadataProvider().listUser(filter);
} catch (Exception e) {
this.handleException(e, result);
}
return result;
}
@Override
public CompletableFuture<Boolean> isSuperUser(String username) {
return this.getUser(username).thenApply(user -> {
if (user == null) {
throw new AuthenticationException("User:{} is not found", username);
}
return user.getUserType() == UserType.SUPER;
});
}
private void validate(User user, boolean isCreate) {
if (user == null) {
throw new AuthenticationException("user can not be null");
}
if (StringUtils.isBlank(user.getUsername())) {
throw new AuthenticationException("username can not be blank");
}
if (isCreate && StringUtils.isBlank(user.getPassword())) {
throw new AuthenticationException("password can not be blank");
}
}
private void handleException(Exception e, CompletableFuture<?> result) {
Throwable throwable = ExceptionUtils.getRealException(e);
result.completeExceptionally(throwable);
}
private AuthenticationMetadataProvider getAuthenticationMetadataProvider() {
if (authenticationMetadataProvider == null) {
throw new IllegalStateException("The authenticationMetadataProvider is not configured.");
}
return authenticationMetadataProvider;
}
private AuthorizationMetadataProvider getAuthorizationMetadataProvider() {
if (authorizationMetadataProvider == null) {
throw new IllegalStateException("The authorizationMetadataProvider is not configured.");
}
return authorizationMetadataProvider;
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/model/Subject.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.model;
import com.alibaba.fastjson2.annotation.JSONField;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.auth.authentication.enums.SubjectType;
import org.apache.rocketmq.common.constant.CommonConstants;
public interface Subject {
@JSONField(serialize = false)
String getSubjectKey();
SubjectType getSubjectType();
default boolean isSubject(SubjectType subjectType) {
return subjectType == this.getSubjectType();
}
@SuppressWarnings("unchecked")
static <T extends Subject> T of(String subjectKey) {
String type = StringUtils.substringBefore(subjectKey, CommonConstants.COLON);
SubjectType subjectType = SubjectType.getByName(type);
if (subjectType == null) {
return null;
}
if (subjectType == SubjectType.USER) {
return (T) User.of(StringUtils.substringAfter(subjectKey, CommonConstants.COLON));
}
return null;
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/model/User.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.model;
import org.apache.rocketmq.auth.authentication.enums.SubjectType;
import org.apache.rocketmq.auth.authentication.enums.UserStatus;
import org.apache.rocketmq.auth.authentication.enums.UserType;
import org.apache.rocketmq.common.constant.CommonConstants;
public class User implements Subject {
private String username;
private String password;
private UserType userType;
private UserStatus userStatus;
public static User of(String username) {
User user = new User();
user.setUsername(username);
return user;
}
public static User of(String username, String password) {
User user = new User();
user.setUsername(username);
user.setPassword(password);
return user;
}
public static User of(String username, String password, UserType userType) {
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setUserType(userType);
return user;
}
@Override
public String getSubjectKey() {
return this.getSubjectType().getName() + CommonConstants.COLON + this.username;
}
@Override
public SubjectType getSubjectType() {
return SubjectType.USER;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public UserType getUserType() {
return userType;
}
public void setUserType(UserType userType) {
this.userType = userType;
}
public UserStatus getUserStatus() {
return userStatus;
}
public void setUserStatus(UserStatus userStatus) {
this.userStatus = userStatus;
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/AuthenticationMetadataProvider.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.provider;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
import org.apache.rocketmq.auth.authentication.model.User;
import org.apache.rocketmq.auth.config.AuthConfig;
public interface AuthenticationMetadataProvider {
void initialize(AuthConfig authConfig, Supplier<?> metadataService);
void shutdown();
CompletableFuture<Void> createUser(User user);
CompletableFuture<Void> deleteUser(String username);
CompletableFuture<Void> updateUser(User user);
CompletableFuture<User> getUser(String username);
CompletableFuture<List<User>> listUser(String filter);
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/AuthenticationProvider.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.provider;
import com.google.protobuf.GeneratedMessageV3;
import io.grpc.Metadata;
import io.netty.channel.ChannelHandlerContext;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
import org.apache.rocketmq.auth.config.AuthConfig;
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
public interface AuthenticationProvider<AuthenticationContext> {
void initialize(AuthConfig config, Supplier<?> metadataService);
CompletableFuture<Void> authenticate(AuthenticationContext context);
AuthenticationContext newContext(Metadata metadata, GeneratedMessageV3 request);
AuthenticationContext newContext(ChannelHandlerContext context, RemotingCommand command);
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/DefaultAuthenticationProvider.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.provider;
import com.google.protobuf.GeneratedMessageV3;
import io.grpc.Metadata;
import io.netty.channel.ChannelHandlerContext;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.auth.authentication.builder.AuthenticationContextBuilder;
import org.apache.rocketmq.auth.authentication.builder.DefaultAuthenticationContextBuilder;
import org.apache.rocketmq.auth.authentication.context.DefaultAuthenticationContext;
import org.apache.rocketmq.auth.authentication.chain.DefaultAuthenticationHandler;
import org.apache.rocketmq.auth.config.AuthConfig;
import org.apache.rocketmq.common.chain.HandlerChain;
import org.apache.rocketmq.common.constant.LoggerName;
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DefaultAuthenticationProvider implements AuthenticationProvider<DefaultAuthenticationContext> {
protected final Logger log = LoggerFactory.getLogger(LoggerName.ROCKETMQ_AUTH_AUDIT_LOGGER_NAME);
protected AuthConfig authConfig;
protected Supplier<?> metadataService;
protected AuthenticationContextBuilder<DefaultAuthenticationContext> authenticationContextBuilder;
@Override
public void initialize(AuthConfig config, Supplier<?> metadataService) {
this.authConfig = config;
this.metadataService = metadataService;
this.authenticationContextBuilder = new DefaultAuthenticationContextBuilder();
}
@Override
public CompletableFuture<Void> authenticate(DefaultAuthenticationContext context) {
return this.newHandlerChain().handle(context)
.whenComplete((nil, ex) -> doAuditLog(context, ex));
}
@Override
public DefaultAuthenticationContext newContext(Metadata metadata, GeneratedMessageV3 request) {
return this.authenticationContextBuilder.build(metadata, request);
}
@Override
public DefaultAuthenticationContext newContext(ChannelHandlerContext context, RemotingCommand command) {
return this.authenticationContextBuilder.build(context, command);
}
protected HandlerChain<DefaultAuthenticationContext, CompletableFuture<Void>> newHandlerChain() {
return HandlerChain.<DefaultAuthenticationContext, CompletableFuture<Void>>create()
.addNext(new DefaultAuthenticationHandler(this.authConfig, metadataService));
}
protected void doAuditLog(DefaultAuthenticationContext context, Throwable ex) {
if (StringUtils.isBlank(context.getUsername())) {
return;
}
if (ex != null) {
log.info("[AUTHENTICATION] User:{} is authenticated failed with Signature = {}.", context.getUsername(), context.getSignature());
} else {
log.debug("[AUTHENTICATION] User:{} is authenticated success with Signature = {}.", context.getUsername(), context.getSignature());
}
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/LocalAuthenticationMetadataProvider.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.provider;
import com.alibaba.fastjson2.JSON;
import com.github.benmanes.caffeine.cache.CacheLoader;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.auth.authentication.exception.AuthenticationException;
import org.apache.rocketmq.auth.authentication.model.User;
import org.apache.rocketmq.auth.config.AuthConfig;
import org.apache.rocketmq.common.config.ConfigRocksDBStorage;
import org.apache.rocketmq.common.thread.ThreadPoolMonitor;
import org.rocksdb.RocksDB;
public class LocalAuthenticationMetadataProvider implements AuthenticationMetadataProvider {
private final static String AUTH_METADATA_COLUMN_FAMILY = new String(RocksDB.DEFAULT_COLUMN_FAMILY,
StandardCharsets.UTF_8);
private ConfigRocksDBStorage storage;
private LoadingCache<String, User> userCache;
protected ThreadPoolExecutor cacheRefreshExecutor;
@Override
public void initialize(AuthConfig authConfig, Supplier<?> metadataService) {
this.storage = ConfigRocksDBStorage.getStore(authConfig.getAuthConfigPath() + File.separator + "users", false);
if (!this.storage.start()) {
throw new RuntimeException("Failed to load rocksdb for auth_user, please check whether it is occupied");
}
this.cacheRefreshExecutor = ThreadPoolMonitor.createAndMonitor(
1,
1,
1000 * 60,
TimeUnit.MILLISECONDS,
"UserCacheRefresh",
100000
);
this.userCache = Caffeine.newBuilder()
.maximumSize(authConfig.getUserCacheMaxNum())
.expireAfterAccess(authConfig.getUserCacheExpiredSecond(), TimeUnit.SECONDS)
.refreshAfterWrite(authConfig.getUserCacheRefreshSecond(), TimeUnit.SECONDS)
.executor(cacheRefreshExecutor)
.build(new UserCacheLoader(this.storage));
}
@Override
public CompletableFuture<Void> createUser(User user) {
try {
byte[] keyBytes = user.getUsername().getBytes(StandardCharsets.UTF_8);
byte[] valueBytes = JSON.toJSONBytes(user);
this.storage.put(AUTH_METADATA_COLUMN_FAMILY, keyBytes, keyBytes.length, valueBytes);
this.storage.flushWAL();
this.userCache.invalidate(user.getUsername());
} catch (Exception e) {
throw new AuthenticationException("create user to RocksDB failed", e);
}
return CompletableFuture.completedFuture(null);
}
@Override
public CompletableFuture<Void> deleteUser(String username) {
try {
this.storage.delete(AUTH_METADATA_COLUMN_FAMILY, username.getBytes(StandardCharsets.UTF_8));
this.storage.flushWAL();
this.userCache.invalidate(username);
} catch (Exception e) {
throw new AuthenticationException("delete user from RocksDB failed", e);
}
return CompletableFuture.completedFuture(null);
}
@Override
public CompletableFuture<Void> updateUser(User user) {
try {
byte[] keyBytes = user.getUsername().getBytes(StandardCharsets.UTF_8);
byte[] valueBytes = JSON.toJSONBytes(user);
this.storage.put(AUTH_METADATA_COLUMN_FAMILY, keyBytes, keyBytes.length, valueBytes);
this.storage.flushWAL();
this.userCache.invalidate(user.getUsername());
} catch (Exception e) {
throw new AuthenticationException("update user to RocksDB failed", e);
}
return CompletableFuture.completedFuture(null);
}
@Override
public CompletableFuture<User> getUser(String username) {
User user = this.userCache.get(username);
if (user == UserCacheLoader.EMPTY_USER) {
return CompletableFuture.completedFuture(null);
}
return CompletableFuture.completedFuture(user);
}
@Override
public CompletableFuture<List<User>> listUser(String filter) {
List<User> result = new ArrayList<>();
CompletableFuture<List<User>> future = new CompletableFuture<>();
try {
this.storage.iterate(AUTH_METADATA_COLUMN_FAMILY, (key, value) -> {
String username = new String(key, StandardCharsets.UTF_8);
if (StringUtils.isNotBlank(filter) && !username.contains(filter)) {
return;
}
User user = JSON.parseObject(new String(value, StandardCharsets.UTF_8), User.class);
result.add(user);
});
} catch (Exception e) {
future.completeExceptionally(e);
}
future.complete(result);
return future;
}
@Override
public void shutdown() {
if (this.storage != null) {
this.storage.shutdown();
}
if (this.cacheRefreshExecutor != null) {
this.cacheRefreshExecutor.shutdown();
}
}
private static class UserCacheLoader implements CacheLoader<String, User> {
private final ConfigRocksDBStorage storage;
public static final User EMPTY_USER = new User();
public UserCacheLoader(ConfigRocksDBStorage storage) {
this.storage = storage;
}
@Override
public User load(String username) {
try {
byte[] keyBytes = username.getBytes(StandardCharsets.UTF_8);
byte[] valueBytes = storage.get(AUTH_METADATA_COLUMN_FAMILY, keyBytes);
if (ArrayUtils.isEmpty(valueBytes)) {
return EMPTY_USER;
}
return JSON.parseObject(new String(valueBytes, StandardCharsets.UTF_8), User.class);
} catch (Exception e) {
throw new AuthenticationException("Get user from RocksDB failed.", e);
}
}
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/AbstractAuthenticationStrategy.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.strategy;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Supplier;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.auth.authentication.context.AuthenticationContext;
import org.apache.rocketmq.auth.authentication.exception.AuthenticationException;
import org.apache.rocketmq.auth.authentication.factory.AuthenticationFactory;
import org.apache.rocketmq.auth.authentication.provider.AuthenticationProvider;
import org.apache.rocketmq.auth.config.AuthConfig;
import org.apache.rocketmq.common.utils.ExceptionUtils;
public abstract class AbstractAuthenticationStrategy implements AuthenticationStrategy {
protected final AuthConfig authConfig;
protected final Set<String> authenticationWhiteSet = new HashSet<>();
protected final AuthenticationProvider<AuthenticationContext> authenticationProvider;
public AbstractAuthenticationStrategy(AuthConfig authConfig, Supplier<?> metadataService) {
this.authConfig = authConfig;
this.authenticationProvider = AuthenticationFactory.getProvider(authConfig);
if (this.authenticationProvider != null) {
this.authenticationProvider.initialize(authConfig, metadataService);
}
if (StringUtils.isNotBlank(authConfig.getAuthenticationWhitelist())) {
String[] whitelist = StringUtils.split(authConfig.getAuthenticationWhitelist(), ",");
for (String rpcCode : whitelist) {
this.authenticationWhiteSet.add(StringUtils.trim(rpcCode));
}
}
}
protected void doEvaluate(AuthenticationContext context) {
if (context == null) {
return;
}
if (!authConfig.isAuthenticationEnabled()) {
return;
}
if (this.authenticationProvider == null) {
return;
}
if (this.authenticationWhiteSet.contains(context.getRpcCode())) {
return;
}
try {
this.authenticationProvider.authenticate(context).join();
} catch (AuthenticationException ex) {
throw ex;
} catch (Throwable ex) {
Throwable exception = ExceptionUtils.getRealException(ex);
if (exception instanceof AuthenticationException) {
throw (AuthenticationException) exception;
}
throw new AuthenticationException("Authentication failed. Please verify the credentials and try again.", exception);
}
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/AuthenticationStrategy.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.strategy;
import org.apache.rocketmq.auth.authentication.context.AuthenticationContext;
public interface AuthenticationStrategy {
void evaluate(AuthenticationContext context);
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/StatefulAuthenticationStrategy.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.strategy;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.auth.authentication.context.AuthenticationContext;
import org.apache.rocketmq.auth.authentication.context.DefaultAuthenticationContext;
import org.apache.rocketmq.auth.authentication.exception.AuthenticationException;
import org.apache.rocketmq.auth.config.AuthConfig;
import org.apache.rocketmq.common.Pair;
import org.apache.rocketmq.common.constant.CommonConstants;
public class StatefulAuthenticationStrategy extends AbstractAuthenticationStrategy {
protected Cache<String, Pair<Boolean, AuthenticationException>> authCache;
public StatefulAuthenticationStrategy(AuthConfig authConfig, Supplier<?> metadataService) {
super(authConfig, metadataService);
this.authCache = Caffeine.newBuilder()
.expireAfterWrite(authConfig.getStatefulAuthenticationCacheExpiredSecond(), TimeUnit.SECONDS)
.maximumSize(authConfig.getStatefulAuthenticationCacheMaxNum())
.build();
}
@Override
public void evaluate(AuthenticationContext context) {
if (StringUtils.isBlank(context.getChannelId())) {
this.doEvaluate(context);
return;
}
Pair<Boolean, AuthenticationException> result = this.authCache.get(buildKey(context), key -> {
try {
this.doEvaluate(context);
return Pair.of(true, null);
} catch (AuthenticationException ex) {
return Pair.of(false, ex);
}
});
if (result != null && result.getObject1() == Boolean.FALSE) {
throw result.getObject2();
}
}
private String buildKey(AuthenticationContext context) {
if (context instanceof DefaultAuthenticationContext) {
DefaultAuthenticationContext ctx = (DefaultAuthenticationContext) context;
if (StringUtils.isBlank(ctx.getUsername())) {
return ctx.getChannelId();
}
return ctx.getChannelId() + CommonConstants.POUND + ctx.getUsername();
}
throw new AuthenticationException("The request of {} is not support.", context.getClass().getSimpleName());
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/StatelessAuthenticationStrategy.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authentication.strategy;
import java.util.function.Supplier;
import org.apache.rocketmq.auth.authentication.context.AuthenticationContext;
import org.apache.rocketmq.auth.config.AuthConfig;
public class StatelessAuthenticationStrategy extends AbstractAuthenticationStrategy {
public StatelessAuthenticationStrategy(AuthConfig authConfig, Supplier<?> metadataService) {
super(authConfig, metadataService);
}
@Override
public void evaluate(AuthenticationContext context) {
super.doEvaluate(context);
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/AuthorizationEvaluator.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authorization;
import java.util.List;
import java.util.function.Supplier;
import org.apache.commons.collections.CollectionUtils;
import org.apache.rocketmq.auth.authorization.context.AuthorizationContext;
import org.apache.rocketmq.auth.authorization.factory.AuthorizationFactory;
import org.apache.rocketmq.auth.authorization.strategy.AuthorizationStrategy;
import org.apache.rocketmq.auth.config.AuthConfig;
public class AuthorizationEvaluator {
private final AuthorizationStrategy authorizationStrategy;
public AuthorizationEvaluator(AuthConfig authConfig) {
this(authConfig, null);
}
public AuthorizationEvaluator(AuthConfig authConfig, Supplier<?> metadataService) {
this.authorizationStrategy = AuthorizationFactory.getStrategy(authConfig, metadataService);
}
public void evaluate(List<AuthorizationContext> contexts) {
if (CollectionUtils.isEmpty(contexts)) {
return;
}
contexts.forEach(this.authorizationStrategy::evaluate);
}
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/AuthorizationContextBuilder.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authorization.builder;
import com.google.protobuf.GeneratedMessageV3;
import io.grpc.Metadata;
import io.netty.channel.ChannelHandlerContext;
import java.util.List;
import org.apache.rocketmq.auth.authorization.context.DefaultAuthorizationContext;
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
public interface AuthorizationContextBuilder {
List<DefaultAuthorizationContext> build(Metadata metadata, GeneratedMessageV3 message);
List<DefaultAuthorizationContext> build(ChannelHandlerContext context, RemotingCommand command);
}
================================================
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java
================================================
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rocketmq.auth.authorization.builder;
import apache.rocketmq.v2.AckMessageRequest;
import apache.rocketmq.v2.ChangeInvisibleDurationRequest;
import apache.rocketmq.v2.ClientType;
import apache.rocketmq.v2.EndTransactionRequest;
import apache.rocketmq.v2.ForwardMessageToDeadLetterQueueRequest;
import apache.rocketmq.v2.HeartbeatRequest;
import apache.rocketmq.v2.NotifyClientTerminationRequest;
import apache.rocketmq.v2.QueryAssignmentRequest;
import apache.rocketmq.v2.QueryRouteRequest;
import apache.rocketmq.v2.RecallMessageRequest;
import apache.rocketmq.v2.ReceiveMessageRequest;
import apache.rocketmq.v2.SendMessageRequest;
import apache.rocketmq.v2.Subscription;
import apache.rocketmq.v2.SubscriptionEntry;
import apache.rocketmq.v2.TelemetryCommand;
import apache.rocketmq.v2.SyncLiteSubscriptionRequest;
import com.google.protobuf.GeneratedMessageV3;
import io.grpc.Metadata;
import io.netty.channel.ChannelHandlerContext;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.acl.common.AclException;
import org.apache.rocketmq.acl.common.SessionCredentials;
import org.apache.rocketmq.auth.authentication.model.Subject;
import org.apache.rocketmq.auth.authentication.model.User;
import org.apache.rocketmq.auth.authorization.context.DefaultAuthorizationContext;
import org.apache.rocketmq.auth.authorization.exception.AuthorizationException;
import org.apache.rocketmq.auth.authorization.model.Resource;
import org.apache.rocketmq.auth.config.AuthConfig;
import org.apache.rocketmq.common.action.Action;
import org.apache.rocketmq.common.action.RocketMQAction;
import org.apache.rocketmq.common.constant.CommonConstants;
import org.apache.rocketmq.common.constant.GrpcConstants;
import org.apache.rocketmq.common.message.MessageQueue;
import org.apache.rocketmq.common.resource.ResourcePattern;
import org.apache.rocketmq.common.resource.ResourceType;
import org.apache.rocketmq.common.resource.RocketMQResource;
import org.apache.rocketmq.remoting.CommandCustomHeader;
import org.apache.rocketmq.remoting.common.RemotingHelper;
import org.apache.rocketmq.remoting.protocol.NamespaceUtil;
import org.apache.rocketmq.remoting.protocol.RemotingCommand;
import org.apache.rocketmq.remoting.protocol.RequestCode;
import org.apache.rocketmq.remoting.protocol.RequestHeaderRegistry;
import org.apache.rocketmq.remoting.protocol.body.LockBatchRequestBody;
import org.apache.rocketmq.remoting.protocol.body.UnlockBatchRequestBody;
import org.apache.rocketmq.remoting.protocol.header.GetConsumerListByGroupRequestHeader;
import org.apache.rocketmq.remoting.protocol.header.QueryConsumerOffsetRequestHeader;
import org.apache.rocketmq.remoting.protocol.header.UnregisterClientRequestHeader;
import org.apache.rocketmq.remoting.protocol.header.UpdateConsumerOffsetRequestHeader;
import org.apache.rocketmq.remoting.protocol.heartbeat.ConsumerData;
import org.apache.rocketmq.remoting.protocol.heartbeat.HeartbeatData;
import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData;
public class DefaultAuthorizationContextBuilder implements AuthorizationContextBuilder {
private static final String TOPIC = "topic";
private static final String GROUP = "group";
private static final String A = "a";
private static final String B = "b";
private static final String CONSUMER_GROUP = "consumerGroup";
private final AuthConfig authConfig;
private static final EnumSet<ClientType> CONSUMER_CLIENT_TYPES =
EnumSet.of(ClientType.PUSH_CONSUMER, ClientType.SIMPLE_CONSUMER, ClientType.PULL_CONSUMER);
private final RequestHeaderRegistry requestHeaderRegistry;
public DefaultAuthorizationContextBuilder(AuthConfig authConfig) {
this.authConfig = authConfig;
this.requestHeaderRegistry = RequestHeaderRegistry.getInstance();
}
@Override
public List<DefaultAuthorizationContext> build(Metadata metadata, GeneratedMessageV3 message) {
List<DefaultAuthorizationContext> result = null;
if (message instanceof SendMessageRequest) {
SendMessageRequest request = (SendMessageRequest) message;
if (request.getMessagesCount() <= 0) {
throw new AuthorizationException("message is null.");
}
result = newPubContext(metadata, request.getMessages(0).getTopic());
}
if (message instanceof RecallMessageRequest) {
RecallMessageRequest request = (RecallMessageRequest) message;
result = newPubContext(metadata, request.getTopic());
}
if (message instanceof EndTransactionRequest) {
EndTransactionRequest request = (EndTransactionRequest) message;
result = newPubContext(metadata, request.getTopic());
}
if (message instanceof HeartbeatRequest) {
HeartbeatRequest request = (HeartbeatRequest) message;
if (!isConsumerClientType(request.getClientType())) {
return null;
}
result = newGroupSubContexts(metadata, request.getGroup());
}
if (message instanceof ReceiveMessageRequest) {
ReceiveMessageRequest request = (ReceiveMessageRequest) message;
if (!request.hasMessageQueue()) {
throw new AuthorizationException("messageQueue is null.");
}
result = newSubContexts(metadata, request.getGroup(), request.getMessageQueue().getTopic());
}
if (message instanceof SyncLiteSubscriptionRequest) {
SyncLiteSubscriptionRequest request = (SyncLiteSubscriptionRequest) message;
if (request.getLiteTopicSetCount() <= 0) {
return null;
}
result = newSubContexts(metadata, request.getGroup(), request.getTopic());
}
if (message instanceof AckMessageRequest) {
AckMessageRequest request = (AckMessageRequest) message;
result = newSubContexts(metadata, request.getGroup(), request.getTopic());
}
if (message instanceof ForwardMessageToDeadLetterQueueRequest) {
ForwardMessageToDeadLetterQueueRequest request = (ForwardMessageToDeadLetterQueueRequest) message;
result = newSubContexts(metadata, request.getGroup(), request.getTopic());
}
if (message instanceof NotifyClientTerminationRequest) {
NotifyClientTerminationRequest request = (NotifyClientTerminationRequest) message;
if (StringUtils.isNotBlank(request.getGroup().getName())) {
result = newGroupSubContexts(metadata, request.getGroup());
}
}
if (message instanceof ChangeInvisibleDurationRequest) {
ChangeInvisibleDurationRequest request = (ChangeInvisibleDurationRequest) message;
result = newGroupSubContexts(metadata, request.getGroup());
}
if (message instanceof QueryRouteRequest) {
QueryRouteRequest request = (QueryRouteRequest) message;
result = newContext(metadata, request);
}
if (message instanceof QueryAssignmentRequest) {
QueryAssignmentRequest request = (QueryAssignmentRequest) message;
result = newSubContexts(metadata, request.getGroup(), request.getTopic());
}
if (message instanceof TelemetryCommand) {
TelemetryCommand request = (TelemetryCommand) message;
result = newContext(metadata, request);
}
if (CollectionUtils.isNotEmpty(result)) {
result.forEach(context -> {
context.setChannelId(metadata.get(GrpcConstants.CHANNEL_ID));
context.setRpcCode(message.getDescriptorForType().getFullName());
});
}
return result;
}
@Override
public List<DefaultAuthorizationContext> build(ChannelHandlerContext context, RemotingCommand command) {
List<DefaultAuthorizationContext> result = new ArrayList<>();
try {
HashMap<String, String> fields = command.getExtFields();
if (MapUtils.isEmpty(fields)) {
return result;
}
Subject subject = null;
if (fields.containsKey(SessionCredentials.ACCESS_KEY)) {
subject = User.of(fields.get(SessionCredentials.ACCESS_KEY));
}
String remoteAddr = RemotingHelper.parseChannelRemoteAddr(context.channel());
String sourceIp = StringUtils.substringBeforeLast(remoteAddr, CommonConstants.COLON);
Resource topic;
Resource group;
switch (command.getCode()) {
case RequestCode.GET_ROUTEINFO_BY_TOPIC:
if (NamespaceUtil.isRetryTopic(fields.get(TOPIC))) {
group = Resource.ofGroup(fields.get(TOPIC));
result.add(DefaultAuthorizationContext.of(subject, group, Arrays.asList(Action.SUB, Action.GET), sourceIp));
} else {
topic = Resource.ofTopic(fields.get(TOPIC));
result.add(DefaultAuthorizationContext.of(subject, topic, Arrays.asList(Action.PUB, Action.SUB, Action.GET), sourceIp));
}
break;
case RequestCode.SEND_MESSAGE:
if (NamespaceUtil.isRetryTopic(fields.get(TOPIC))) {
group = Resource.ofGroup(fields.get(TOPIC));
result.add(DefaultAuthorizationContext.of(subject, group, Action.SUB, sourceIp));
} else {
topic = Resource.ofTopic(fields.get(TOPIC));
result.add(DefaultAuthorizationContext.of(subject, topic, Action.PUB, sourceIp));
}
break;
case RequestCode.SEND_MESSAGE_V2:
case RequestCode.SEND_BATCH_MESSAGE:
if (NamespaceUtil.isRetryTopic(fields.get(B))) {
group = Resource.ofGroup(fields.get(B));
result.add(DefaultAuthorizationContext.of(subject, group, Action.SUB, sourceIp));
} else {
topic = Resource.ofTopic(fields.get(B));
result.add(DefaultAuthorizationContext.of(subject, topic, Action.PUB, sourceIp));
}
break;
case RequestCode.RECALL_MESSAGE:
topic = Resource.ofTopic(fields.get(TOPIC));
result.add(DefaultAuthorizationContext.of(subject, topic, Action.PUB, sourceIp));
break;
case RequestCode.END_TRANSACTION:
if (StringUtils.isNotBlank(fields.get(TOPIC))) {
topic = Resource.ofTopic(fields.get(TOPIC));
result.add(DefaultAuthorizationContext.of(subject, topic, Action.PUB, sourceIp));
}
break;
case RequestCode.CONSUMER_SEND_MSG_BACK:
group = Resource.ofGroup(fields.get(GROUP));
result.add(DefaultAuthorizationContext.of(subject, group, Action.SUB, sourceIp));
break;
case RequestCode.PULL_MESSAGE:
if (!NamespaceUtil.isRetryTopic(fields.get(TOPIC))) {
topic = Resource.ofTopic(fields.get(TOPIC));
result.add(DefaultAuthorizationContext.of(subject, topic, Action.SUB, sourceIp));
}
group = Resource.ofGroup(fields.get(CONSUMER_GROUP));
result.add(DefaultAuthorizationContext.of(subject, group, Action.SUB, sourceIp));
break;
case RequestCode.QUERY_MESSAGE:
topic = Resource.ofTopic(fields.get(TOPIC));
result.add(DefaultAuthorizationContext.of(subject, topic, Arrays.asList(Action.SUB, Action.GET), sourceIp));
break;
case RequestCode.HEART_BEAT:
HeartbeatData heartbeatData = HeartbeatData.decode(command.getBody(), HeartbeatData.class);
for (ConsumerData data : heartbeatData.getConsumerDataSet()) {
group = Resource.ofGroup(data.getGroupName());
result.add(DefaultAuthorizationContext.of(subject, group, Action.SUB, sourceIp));
for (SubscriptionData subscriptionData : data.getSubscriptionDataSet()) {
if (NamespaceUtil.isRetryTopic(subscriptionData.getTopic())) {
continue;
}
topic = Resource.ofTopic(subscriptionData.getTopic());
result.add(DefaultAuthorizationContext.of(subject, topic, Action.SUB, sourceIp));
}
}
break;
case RequestCode.UNREGISTER_CLIENT:
final UnregisterClientRequestHeader unregisterClientRequestHeader =
command.decodeCommandCustomHeader(UnregisterClientRequestHeader.class);
if (StringUtils.isNotBlank(unregisterClientRequestHeader.getConsumerGroup())) {
group = Resource.ofGroup(unregisterClientRequestHeader.getConsumerGroup());
result.add(DefaultAuthorizationContext.of(subject, group, Action.SUB, sourceIp));
}
break;
case RequestCode.GET_CONSUMER_LIST_BY_GROUP:
final GetConsumerListByGroupRequestHeader getConsumerListByGroupRequestHeader =
command.decodeCommandCustomHeader(GetConsumerListByGroupRequestHeader.class);
group = Resource.ofGroup(getConsumerListByGroup
Showing preview only (201K chars total). Download the full file or copy to clipboard to get everything.
gitextract_8f2xr136/
├── .asf.yaml
├── .bazelrc
├── .bazelversion
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ ├── doc.yml
│ │ ├── enhancement_request.yml
│ │ └── feature_request.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── asf-deploy-settings.xml
│ └── workflows/
│ ├── bazel.yml
│ ├── codeql_analysis.yml
│ ├── coverage.yml
│ ├── integration-test.yml
│ ├── license-checker.yaml
│ ├── maven.yaml
│ ├── misspell_check.yml
│ ├── pr-ci.yml
│ ├── pr-e2e-test.yml
│ ├── push-ci.yml
│ ├── rerun-workflow.yml
│ ├── snapshot-automation.yml
│ └── stale.yml
├── .gitignore
├── .licenserc.yaml
├── BUILD.bazel
├── BUILDING
├── CONTRIBUTING.md
├── LICENSE
├── MODULE.bazel
├── NOTICE
├── README.md
├── WORKSPACE
├── auth/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── auth/
│ │ ├── authentication/
│ │ │ ├── AuthenticationEvaluator.java
│ │ │ ├── builder/
│ │ │ │ ├── AuthenticationContextBuilder.java
│ │ │ │ └── DefaultAuthenticationContextBuilder.java
│ │ │ ├── chain/
│ │ │ │ └── DefaultAuthenticationHandler.java
│ │ │ ├── context/
│ │ │ │ ├── AuthenticationContext.java
│ │ │ │ └── DefaultAuthenticationContext.java
│ │ │ ├── enums/
│ │ │ │ ├── SubjectType.java
│ │ │ │ ├── UserStatus.java
│ │ │ │ └── UserType.java
│ │ │ ├── exception/
│ │ │ │ └── AuthenticationException.java
│ │ │ ├── factory/
│ │ │ │ └── AuthenticationFactory.java
│ │ │ ├── manager/
│ │ │ │ ├── AuthenticationMetadataManager.java
│ │ │ │ └── AuthenticationMetadataManagerImpl.java
│ │ │ ├── model/
│ │ │ │ ├── Subject.java
│ │ │ │ └── User.java
│ │ │ ├── provider/
│ │ │ │ ├── AuthenticationMetadataProvider.java
│ │ │ │ ├── AuthenticationProvider.java
│ │ │ │ ├── DefaultAuthenticationProvider.java
│ │ │ │ └── LocalAuthenticationMetadataProvider.java
│ │ │ └── strategy/
│ │ │ ├── AbstractAuthenticationStrategy.java
│ │ │ ├── AuthenticationStrategy.java
│ │ │ ├── StatefulAuthenticationStrategy.java
│ │ │ └── StatelessAuthenticationStrategy.java
│ │ ├── authorization/
│ │ │ ├── AuthorizationEvaluator.java
│ │ │ ├── builder/
│ │ │ │ ├── AuthorizationContextBuilder.java
│ │ │ │ └── DefaultAuthorizationContextBuilder.java
│ │ │ ├── chain/
│ │ │ │ ├── AclAuthorizationHandler.java
│ │ │ │ └── UserAuthorizationHandler.java
│ │ │ ├── context/
│ │ │ │ ├── AuthorizationContext.java
│ │ │ │ └── DefaultAuthorizationContext.java
│ │ │ ├── enums/
│ │ │ │ ├── Decision.java
│ │ │ │ └── PolicyType.java
│ │ │ ├── exception/
│ │ │ │ └── AuthorizationException.java
│ │ │ ├── factory/
│ │ │ │ └── AuthorizationFactory.java
│ │ │ ├── manager/
│ │ │ │ ├── AuthorizationMetadataManager.java
│ │ │ │ └── AuthorizationMetadataManagerImpl.java
│ │ │ ├── model/
│ │ │ │ ├── Acl.java
│ │ │ │ ├── Environment.java
│ │ │ │ ├── Policy.java
│ │ │ │ ├── PolicyEntry.java
│ │ │ │ ├── RequestContext.java
│ │ │ │ └── Resource.java
│ │ │ ├── provider/
│ │ │ │ ├── AuthorizationMetadataProvider.java
│ │ │ │ ├── AuthorizationProvider.java
│ │ │ │ ├── DefaultAuthorizationProvider.java
│ │ │ │ └── LocalAuthorizationMetadataProvider.java
│ │ │ └── strategy/
│ │ │ ├── AbstractAuthorizationStrategy.java
│ │ │ ├── AuthorizationStrategy.java
│ │ │ ├── StatefulAuthorizationStrategy.java
│ │ │ └── StatelessAuthorizationStrategy.java
│ │ ├── config/
│ │ │ └── AuthConfig.java
│ │ └── migration/
│ │ ├── AuthMigrator.java
│ │ └── v1/
│ │ ├── AccessResource.java
│ │ ├── AclConfig.java
│ │ ├── PlainAccessConfig.java
│ │ ├── PlainAccessData.java
│ │ ├── PlainAccessResource.java
│ │ └── PlainPermissionManager.java
│ └── test/
│ └── java/
│ └── org/
│ └── apache/
│ └── rocketmq/
│ └── auth/
│ ├── authentication/
│ │ ├── AuthenticationEvaluatorTest.java
│ │ ├── builder/
│ │ │ └── DefaultAuthenticationContextBuilderTest.java
│ │ ├── manager/
│ │ │ └── AuthenticationMetadataManagerTest.java
│ │ └── provider/
│ │ └── LocalAuthenticationMetadataProviderTest.java
│ ├── authorization/
│ │ ├── AuthorizationEvaluatorTest.java
│ │ ├── builder/
│ │ │ └── DefaultAuthorizationContextBuilderTest.java
│ │ ├── chain/
│ │ │ ├── AclAuthorizationHandlerTest.java
│ │ │ └── UserAuthorizationHandlerTest.java
│ │ ├── manager/
│ │ │ └── AuthorizationMetadataManagerTest.java
│ │ ├── model/
│ │ │ └── ResourceTest.java
│ │ ├── provider/
│ │ │ └── LocalAuthorizationMetadataProviderTest.java
│ │ └── strategy/
│ │ └── StatefulAuthorizationStrategyTest.java
│ ├── helper/
│ │ └── AuthTestHelper.java
│ └── migration/
│ └── AuthMigratorTest.java
├── 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
│ │ │ ├── ConfigContext.java
│ │ │ ├── ShutdownHook.java
│ │ │ ├── auth/
│ │ │ │ ├── converter/
│ │ │ │ │ ├── AclConverter.java
│ │ │ │ │ └── UserConverter.java
│ │ │ │ └── pipeline/
│ │ │ │ ├── AuthenticationPipeline.java
│ │ │ │ └── AuthorizationPipeline.java
│ │ │ ├── client/
│ │ │ │ ├── ClientChannelAttributeHelper.java
│ │ │ │ ├── ClientChannelInfo.java
│ │ │ │ ├── ClientHousekeepingService.java
│ │ │ │ ├── ConsumerGroupEvent.java
│ │ │ │ ├── ConsumerGroupInfo.java
│ │ │ │ ├── ConsumerIdsChangeListener.java
│ │ │ │ ├── ConsumerManager.java
│ │ │ │ ├── DefaultConsumerIdsChangeListener.java
│ │ │ │ ├── ProducerChangeListener.java
│ │ │ │ ├── ProducerGroupEvent.java
│ │ │ │ ├── ProducerManager.java
│ │ │ │ ├── net/
│ │ │ │ │ └── Broker2Client.java
│ │ │ │ └── rebalance/
│ │ │ │ └── RebalanceLockManager.java
│ │ │ ├── coldctr/
│ │ │ │ ├── ColdCtrStrategy.java
│ │ │ │ ├── ColdDataCgCtrService.java
│ │ │ │ ├── ColdDataPullRequestHoldService.java
│ │ │ │ ├── PIDAdaptiveColdCtrStrategy.java
│ │ │ │ └── SimpleColdCtrStrategy.java
│ │ │ ├── config/
│ │ │ │ ├── v1/
│ │ │ │ │ ├── RocksDBConfigManager.java
│ │ │ │ │ ├── RocksDBConsumerOffsetManager.java
│ │ │ │ │ ├── RocksDBLmqSubscriptionGroupManager.java
│ │ │ │ │ ├── RocksDBLmqTopicConfigManager.java
│ │ │ │ │ ├── RocksDBOffsetSerializeWrapper.java
│ │ │ │ │ ├── RocksDBSubscriptionGroupManager.java
│ │ │ │ │ └── RocksDBTopicConfigManager.java
│ │ │ │ └── v2/
│ │ │ │ ├── ConfigHelper.java
│ │ │ │ ├── ConfigStorage.java
│ │ │ │ ├── ConsumerOffsetManagerV2.java
│ │ │ │ ├── RecordPrefix.java
│ │ │ │ ├── SerializationType.java
│ │ │ │ ├── SubscriptionGroupManagerV2.java
│ │ │ │ ├── TableId.java
│ │ │ │ ├── TablePrefix.java
│ │ │ │ ├── TopicConfigManagerV2.java
│ │ │ │ └── package-info.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
│ │ │ ├── lite/
│ │ │ │ ├── AbstractLiteLifecycleManager.java
│ │ │ │ ├── LiteCtlListener.java
│ │ │ │ ├── LiteEventDispatcher.java
│ │ │ │ ├── LiteLifecycleManager.java
│ │ │ │ ├── LiteMetadataUtil.java
│ │ │ │ ├── LiteQuotaException.java
│ │ │ │ ├── LiteSharding.java
│ │ │ │ ├── LiteShardingImpl.java
│ │ │ │ ├── LiteSubscriptionRegistry.java
│ │ │ │ ├── LiteSubscriptionRegistryImpl.java
│ │ │ │ └── RocksDBLiteLifecycleManager.java
│ │ │ ├── loadbalance/
│ │ │ │ └── MessageRequestModeManager.java
│ │ │ ├── longpolling/
│ │ │ │ ├── LmqPullRequestHoldService.java
│ │ │ │ ├── ManyPullRequest.java
│ │ │ │ ├── NotificationRequest.java
│ │ │ │ ├── NotifyMessageArrivingListener.java
│ │ │ │ ├── PollingHeader.java
│ │ │ │ ├── PollingResult.java
│ │ │ │ ├── PopCommandCallback.java
│ │ │ │ ├── PopLiteLongPollingService.java
│ │ │ │ ├── PopLongPollingService.java
│ │ │ │ ├── PopRequest.java
│ │ │ │ ├── PullRequest.java
│ │ │ │ └── PullRequestHoldService.java
│ │ │ ├── metrics/
│ │ │ │ ├── BrokerMetricsConstant.java
│ │ │ │ ├── BrokerMetricsManager.java
│ │ │ │ ├── ConsumerAttr.java
│ │ │ │ ├── ConsumerLagCalculator.java
│ │ │ │ ├── InvocationStatus.java
│ │ │ │ ├── LiteConsumerLagCalculator.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
│ │ │ │ ├── LmqConsumerOffsetManager.java
│ │ │ │ └── MemoryConsumerOrderInfoManager.java
│ │ │ ├── out/
│ │ │ │ └── BrokerOuterAPI.java
│ │ │ ├── pagecache/
│ │ │ │ ├── ManyMessageTransfer.java
│ │ │ │ ├── OneMessageTransfer.java
│ │ │ │ └── QueryMessageTransfer.java
│ │ │ ├── plugin/
│ │ │ │ ├── BrokerAttachedPlugin.java
│ │ │ │ └── PullMessageResultHandler.java
│ │ │ ├── pop/
│ │ │ │ ├── PopConsumerCache.java
│ │ │ │ ├── PopConsumerContext.java
│ │ │ │ ├── PopConsumerKVStore.java
│ │ │ │ ├── PopConsumerLockService.java
│ │ │ │ ├── PopConsumerRecord.java
│ │ │ │ ├── PopConsumerRocksdbStore.java
│ │ │ │ ├── PopConsumerService.java
│ │ │ │ └── orderly/
│ │ │ │ ├── ConsumerOrderInfoManager.java
│ │ │ │ ├── QueueLevelConsumerManager.java
│ │ │ │ └── QueueLevelConsumerOrderInfoLockManager.java
│ │ │ ├── processor/
│ │ │ │ ├── AbstractSendMessageProcessor.java
│ │ │ │ ├── AckMessageProcessor.java
│ │ │ │ ├── AdminBrokerProcessor.java
│ │ │ │ ├── ChangeInvisibleTimeProcessor.java
│ │ │ │ ├── ClientManageProcessor.java
│ │ │ │ ├── ConsumerManageProcessor.java
│ │ │ │ ├── DefaultPullMessageResultHandler.java
│ │ │ │ ├── EndTransactionProcessor.java
│ │ │ │ ├── LiteManagerProcessor.java
│ │ │ │ ├── LiteSubscriptionCtlProcessor.java
│ │ │ │ ├── NotificationProcessor.java
│ │ │ │ ├── PeekMessageProcessor.java
│ │ │ │ ├── PollingInfoProcessor.java
│ │ │ │ ├── PopBufferMergeService.java
│ │ │ │ ├── PopInflightMessageCounter.java
│ │ │ │ ├── PopLiteMessageProcessor.java
│ │ │ │ ├── PopMessageProcessor.java
│ │ │ │ ├── PopReviveService.java
│ │ │ │ ├── PullMessageProcessor.java
│ │ │ │ ├── QueryAssignmentProcessor.java
│ │ │ │ ├── QueryMessageProcessor.java
│ │ │ │ ├── RecallMessageProcessor.java
│ │ │ │ ├── ReplyMessageProcessor.java
│ │ │ │ ├── SendMessageCallback.java
│ │ │ │ └── SendMessageProcessor.java
│ │ │ ├── schedule/
│ │ │ │ ├── DelayOffsetSerializeWrapper.java
│ │ │ │ └── ScheduleMessageService.java
│ │ │ ├── slave/
│ │ │ │ └── SlaveSynchronize.java
│ │ │ ├── subscription/
│ │ │ │ ├── LmqSubscriptionGroupManager.java
│ │ │ │ └── SubscriptionGroupManager.java
│ │ │ ├── topic/
│ │ │ │ ├── LmqTopicConfigManager.java
│ │ │ │ ├── TopicConfigManager.java
│ │ │ │ ├── TopicQueueMappingCleanService.java
│ │ │ │ ├── TopicQueueMappingManager.java
│ │ │ │ └── TopicRouteInfoManager.java
│ │ │ ├── transaction/
│ │ │ │ ├── AbstractTransactionalMessageCheckListener.java
│ │ │ │ ├── OperationResult.java
│ │ │ │ ├── TransactionMetrics.java
│ │ │ │ ├── TransactionMetricsFlushService.java
│ │ │ │ ├── TransactionalMessageCheckService.java
│ │ │ │ ├── TransactionalMessageService.java
│ │ │ │ ├── queue/
│ │ │ │ │ ├── DefaultTransactionalMessageCheckListener.java
│ │ │ │ │ ├── GetResult.java
│ │ │ │ │ ├── MessageQueueOpContext.java
│ │ │ │ │ ├── TransactionalMessageBridge.java
│ │ │ │ │ ├── TransactionalMessageServiceImpl.java
│ │ │ │ │ ├── TransactionalMessageUtil.java
│ │ │ │ │ └── TransactionalOpBatchService.java
│ │ │ │ └── rocksdb/
│ │ │ │ └── TransactionalMessageRocksDBService.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
│ │ ├── BrokerShutdownTest.java
│ │ ├── BrokerStartupTest.java
│ │ ├── RocksDBConfigManagerTest.java
│ │ ├── client/
│ │ │ ├── ConsumerManagerScannerTest.java
│ │ │ ├── ConsumerManagerTest.java
│ │ │ ├── ProducerManagerTest.java
│ │ │ ├── net/
│ │ │ │ └── Broker2ClientTest.java
│ │ │ └── rebalance/
│ │ │ └── RebalanceLockManagerTest.java
│ │ ├── coldctr/
│ │ │ └── ColdDataCgCtrServiceTest.java
│ │ ├── config/
│ │ │ ├── v1/
│ │ │ │ ├── RocksDBConsumerOffsetManagerMigrationTest.java
│ │ │ │ ├── RocksDBSubscriptionGroupManagerMigrationTest.java
│ │ │ │ ├── RocksDBSubscriptionGroupManagerTest.java
│ │ │ │ ├── RocksDBTopicConfigManagerMigrationTest.java
│ │ │ │ └── RocksDBTopicConfigManagerTest.java
│ │ │ └── v2/
│ │ │ ├── ConsumerOffsetManagerV2Test.java
│ │ │ ├── SubscriptionGroupManagerV2Test.java
│ │ │ └── TopicConfigManagerV2Test.java
│ │ ├── controller/
│ │ │ ├── ReplicasManagerRegisterTest.java
│ │ │ └── ReplicasManagerTest.java
│ │ ├── failover/
│ │ │ └── EscapeBridgeTest.java
│ │ ├── filter/
│ │ │ ├── CommitLogDispatcherCalcBitMapTest.java
│ │ │ ├── ConsumerFilterManagerTest.java
│ │ │ └── MessageStoreWithFilterTest.java
│ │ ├── latency/
│ │ │ └── BrokerFastFailureTest.java
│ │ ├── lite/
│ │ │ ├── AbstractLiteLifecycleManagerTest.java
│ │ │ ├── LiteEventDispatcherTest.java
│ │ │ ├── LiteLifecycleManagerTest.java
│ │ │ ├── LiteShardingImplTest.java
│ │ │ ├── LiteSubscriptionRegistryImplTest.java
│ │ │ ├── LiteTestUtil.java
│ │ │ └── RocksDBLiteLifecycleManagerTest.java
│ │ ├── longpolling/
│ │ │ ├── PopLiteLongPollingServiceTest.java
│ │ │ ├── PopLongPollingServiceTest.java
│ │ │ └── PullRequestHoldServiceTest.java
│ │ ├── metrics/
│ │ │ ├── BrokerMetricsManagerTest.java
│ │ │ └── LiteConsumerLagCalculatorTest.java
│ │ ├── offset/
│ │ │ ├── BroadcastOffsetManagerTest.java
│ │ │ ├── BroadcastOffsetStoreTest.java
│ │ │ ├── ConsumerOffsetManagerTest.java
│ │ │ ├── LmqConsumerOffsetManagerTest.java
│ │ │ ├── RocksDBConsumerOffsetManagerTest.java
│ │ │ ├── RocksDBLmqConsumerOffsetManagerTest.java
│ │ │ ├── RocksDBOffsetSerializeWrapperTest.java
│ │ │ └── RocksdbTransferOffsetAndCqTest.java
│ │ ├── pagecache/
│ │ │ ├── ManyMessageTransferTest.java
│ │ │ ├── OneMessageTransferTest.java
│ │ │ └── QueryMessageTransferTest.java
│ │ ├── pop/
│ │ │ ├── PopConsumerCacheTest.java
│ │ │ ├── PopConsumerContextTest.java
│ │ │ ├── PopConsumerLockServiceTest.java
│ │ │ ├── PopConsumerRecordTest.java
│ │ │ ├── PopConsumerRocksdbStoreTest.java
│ │ │ ├── PopConsumerServiceTest.java
│ │ │ └── orderly/
│ │ │ ├── ConsumerOrderInfoManagerLockFreeNotifyTest.java
│ │ │ └── ConsumerOrderInfoManagerTest.java
│ │ ├── processor/
│ │ │ ├── AckMessageProcessorTest.java
│ │ │ ├── AdminBrokerProcessorTest.java
│ │ │ ├── ChangeInvisibleTimeProcessorTest.java
│ │ │ ├── ClientManageProcessorTest.java
│ │ │ ├── ConsumerManageProcessorTest.java
│ │ │ ├── EndTransactionProcessorTest.java
│ │ │ ├── LiteManagerProcessorTest.java
│ │ │ ├── LiteSubscriptionCtlProcessorTest.java
│ │ │ ├── PeekMessageProcessorTest.java
│ │ │ ├── PopBufferMergeServiceTest.java
│ │ │ ├── PopInflightMessageCounterTest.java
│ │ │ ├── PopLiteMessageProcessorTest.java
│ │ │ ├── PopMessageProcessorTest.java
│ │ │ ├── PopReviveServiceTest.java
│ │ │ ├── PullMessageProcessorTest.java
│ │ │ ├── QueryAssignmentProcessorTest.java
│ │ │ ├── QueryMessageProcessorTest.java
│ │ │ ├── RecallMessageProcessorTest.java
│ │ │ ├── ReplyMessageProcessorTest.java
│ │ │ └── SendMessageProcessorTest.java
│ │ ├── schedule/
│ │ │ └── ScheduleMessageServiceTest.java
│ │ ├── slave/
│ │ │ ├── SlaveSynchronizeAtomicTest.java
│ │ │ └── SlaveSynchronizeTest.java
│ │ ├── subscription/
│ │ │ ├── ForbiddenTest.java
│ │ │ ├── RocksdbGroupConfigTransferTest.java
│ │ │ └── SubscriptionGroupManagerTest.java
│ │ ├── topic/
│ │ │ ├── RocksdbTopicConfigManagerTest.java
│ │ │ ├── RocksdbTopicConfigTransferTest.java
│ │ │ ├── TopicConfigManagerTest.java
│ │ │ ├── TopicQueueMappingCleanServiceTest.java
│ │ │ └── TopicQueueMappingManagerTest.java
│ │ ├── transaction/
│ │ │ └── queue/
│ │ │ ├── DefaultTransactionalMessageCheckListenerTest.java
│ │ │ ├── TransactionMetricsTest.java
│ │ │ ├── TransactionalMessageBridgeTest.java
│ │ │ ├── TransactionalMessageServiceImplTest.java
│ │ │ └── TransactionalMessageUtilTest.java
│ │ └── util/
│ │ ├── HookUtilsTest.java
│ │ ├── LogTransactionalMessageCheckListener.java
│ │ ├── ServiceProviderTest.java
│ │ └── TransactionalMessageServiceImpl.java
│ └── resources/
│ ├── META-INF/
│ │ └── service/
│ │ ├── org.apache.rocketmq.broker.transaction.AbstractTransactionalMessageCheckListener
│ │ └── org.apache.rocketmq.broker.transaction.TransactionalMessageService
│ └── rmq.logback-test.xml
├── client/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── rocketmq/
│ │ │ ├── acl/
│ │ │ │ └── common/
│ │ │ │ ├── AclClientRPCHook.java
│ │ │ │ ├── AclConstants.java
│ │ │ │ ├── AclException.java
│ │ │ │ ├── AclSigner.java
│ │ │ │ ├── AclUtils.java
│ │ │ │ ├── Permission.java
│ │ │ │ ├── SessionCredentials.java
│ │ │ │ └── SigningAlgorithm.java
│ │ │ └── client/
│ │ │ ├── AccessChannel.java
│ │ │ ├── ClientConfig.java
│ │ │ ├── MQAdmin.java
│ │ │ ├── MQHelper.java
│ │ │ ├── MqClientAdmin.java
│ │ │ ├── QueryResult.java
│ │ │ ├── Validators.java
│ │ │ ├── admin/
│ │ │ │ └── MQAdminExtInner.java
│ │ │ ├── common/
│ │ │ │ ├── ClientErrorCode.java
│ │ │ │ ├── NameserverAccessConfig.java
│ │ │ │ └── ThreadLocalIndex.java
│ │ │ ├── consumer/
│ │ │ │ ├── AckCallback.java
│ │ │ │ ├── AckResult.java
│ │ │ │ ├── AckStatus.java
│ │ │ │ ├── AllocateMessageQueueStrategy.java
│ │ │ │ ├── DefaultLitePullConsumer.java
│ │ │ │ ├── DefaultMQPullConsumer.java
│ │ │ │ ├── DefaultMQPushConsumer.java
│ │ │ │ ├── LitePullConsumer.java
│ │ │ │ ├── MQConsumer.java
│ │ │ │ ├── MQPullConsumer.java
│ │ │ │ ├── MQPullConsumerScheduleService.java
│ │ │ │ ├── MQPushConsumer.java
│ │ │ │ ├── MessageQueueListener.java
│ │ │ │ ├── MessageSelector.java
│ │ │ │ ├── NotifyResult.java
│ │ │ │ ├── PopCallback.java
│ │ │ │ ├── PopResult.java
│ │ │ │ ├── PopStatus.java
│ │ │ │ ├── PullCallback.java
│ │ │ │ ├── PullResult.java
│ │ │ │ ├── PullStatus.java
│ │ │ │ ├── PullTaskCallback.java
│ │ │ │ ├── PullTaskContext.java
│ │ │ │ ├── TopicMessageQueueChangeListener.java
│ │ │ │ ├── listener/
│ │ │ │ │ ├── ConsumeConcurrentlyContext.java
│ │ │ │ │ ├── ConsumeConcurrentlyStatus.java
│ │ │ │ │ ├── ConsumeOrderlyContext.java
│ │ │ │ │ ├── ConsumeOrderlyStatus.java
│ │ │ │ │ ├── ConsumeReturnType.java
│ │ │ │ │ ├── MessageListener.java
│ │ │ │ │ ├── MessageListenerConcurrently.java
│ │ │ │ │ └── MessageListenerOrderly.java
│ │ │ │ ├── rebalance/
│ │ │ │ │ ├── AbstractAllocateMessageQueueStrategy.java
│ │ │ │ │ ├── AllocateMachineRoomNearby.java
│ │ │ │ │ ├── AllocateMessageQueueAveragely.java
│ │ │ │ │ ├── AllocateMessageQueueAveragelyByCircle.java
│ │ │ │ │ ├── AllocateMessageQueueByConfig.java
│ │ │ │ │ ├── AllocateMessageQueueByMachineRoom.java
│ │ │ │ │ └── AllocateMessageQueueConsistentHash.java
│ │ │ │ └── store/
│ │ │ │ ├── ControllableOffset.java
│ │ │ │ ├── LocalFileOffsetStore.java
│ │ │ │ ├── OffsetSerializeWrapper.java
│ │ │ │ ├── OffsetStore.java
│ │ │ │ ├── ReadOffsetType.java
│ │ │ │ └── RemoteBrokerOffsetStore.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/
│ │ │ │ ├── ClientRemotingProcessor.java
│ │ │ │ ├── CommunicationMode.java
│ │ │ │ ├── FindBrokerResult.java
│ │ │ │ ├── MQAdminImpl.java
│ │ │ │ ├── MQClientAPIImpl.java
│ │ │ │ ├── MQClientManager.java
│ │ │ │ ├── admin/
│ │ │ │ │ └── MqClientAdminImpl.java
│ │ │ │ ├── consumer/
│ │ │ │ │ ├── AssignedMessageQueue.java
│ │ │ │ │ ├── ConsumeMessageConcurrentlyService.java
│ │ │ │ │ ├── ConsumeMessageOrderlyService.java
│ │ │ │ │ ├── ConsumeMessagePopConcurrentlyService.java
│ │ │ │ │ ├── ConsumeMessagePopOrderlyService.java
│ │ │ │ │ ├── ConsumeMessageService.java
│ │ │ │ │ ├── DefaultLitePullConsumerImpl.java
│ │ │ │ │ ├── DefaultMQPullConsumerImpl.java
│ │ │ │ │ ├── DefaultMQPushConsumerImpl.java
│ │ │ │ │ ├── MQConsumerInner.java
│ │ │ │ │ ├── MessageQueueLock.java
│ │ │ │ │ ├── MessageRequest.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
│ │ │ │ ├── mqclient/
│ │ │ │ │ ├── DoNothingClientRemotingProcessor.java
│ │ │ │ │ ├── MQClientAPIExt.java
│ │ │ │ │ └── MQClientAPIFactory.java
│ │ │ │ └── producer/
│ │ │ │ ├── DefaultMQProducerImpl.java
│ │ │ │ ├── MQProducerInner.java
│ │ │ │ └── TopicPublishInfo.java
│ │ │ ├── latency/
│ │ │ │ ├── LatencyFaultTolerance.java
│ │ │ │ ├── LatencyFaultToleranceImpl.java
│ │ │ │ ├── MQFaultStrategy.java
│ │ │ │ ├── Resolver.java
│ │ │ │ └── ServiceDetector.java
│ │ │ ├── lock/
│ │ │ │ └── ReadWriteCASLock.java
│ │ │ ├── producer/
│ │ │ │ ├── DefaultMQProducer.java
│ │ │ │ ├── LocalTransactionState.java
│ │ │ │ ├── MQProducer.java
│ │ │ │ ├── MessageQueueSelector.java
│ │ │ │ ├── ProduceAccumulator.java
│ │ │ │ ├── RequestCallback.java
│ │ │ │ ├── RequestFutureHolder.java
│ │ │ │ ├── RequestResponseFuture.java
│ │ │ │ ├── SendCallback.java
│ │ │ │ ├── SendResult.java
│ │ │ │ ├── SendStatus.java
│ │ │ │ ├── TransactionCheckListener.java
│ │ │ │ ├── TransactionListener.java
│ │ │ │ ├── TransactionMQProducer.java
│ │ │ │ ├── TransactionSendResult.java
│ │ │ │ └── selector/
│ │ │ │ ├── SelectMessageQueueByHash.java
│ │ │ │ ├── SelectMessageQueueByMachineRoom.java
│ │ │ │ └── SelectMessageQueueByRandom.java
│ │ │ ├── rpchook/
│ │ │ │ └── NamespaceRpcHook.java
│ │ │ ├── stat/
│ │ │ │ └── ConsumerStatsManager.java
│ │ │ ├── trace/
│ │ │ │ ├── AsyncTraceDispatcher.java
│ │ │ │ ├── TraceBean.java
│ │ │ │ ├── TraceConstants.java
│ │ │ │ ├── TraceContext.java
│ │ │ │ ├── TraceDataEncoder.java
│ │ │ │ ├── TraceDispatcher.java
│ │ │ │ ├── TraceDispatcherType.java
│ │ │ │ ├── TraceTransferBean.java
│ │ │ │ ├── TraceType.java
│ │ │ │ ├── TraceView.java
│ │ │ │ └── hook/
│ │ │ │ ├── ConsumeMessageOpenTracingHookImpl.java
│ │ │ │ ├── ConsumeMessageTraceHookImpl.java
│ │ │ │ ├── DefaultRecallMessageTraceHook.java
│ │ │ │ ├── EndTransactionOpenTracingHookImpl.java
│ │ │ │ ├── EndTransactionTraceHookImpl.java
│ │ │ │ ├── SendMessageOpenTracingHookImpl.java
│ │ │ │ └── SendMessageTraceHookImpl.java
│ │ │ └── utils/
│ │ │ └── MessageUtil.java
│ │ └── resources/
│ │ └── rmq.client.logback.xml
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ ├── acl/
│ │ │ └── common/
│ │ │ ├── AclClientRPCHookTest.java
│ │ │ ├── AclSignerTest.java
│ │ │ ├── AclUtilsTest.java
│ │ │ ├── PermissionTest.java
│ │ │ └── SessionCredentialsTest.java
│ │ └── client/
│ │ ├── ClientConfigTest.java
│ │ ├── ValidatorsTest.java
│ │ ├── common/
│ │ │ └── ThreadLocalIndexTest.java
│ │ ├── consumer/
│ │ │ ├── DefaultLitePullConsumerTest.java
│ │ │ ├── DefaultMQPullConsumerTest.java
│ │ │ ├── DefaultMQPushConsumerTest.java
│ │ │ ├── rebalance/
│ │ │ │ ├── AllocateMachineRoomNearByTest.java
│ │ │ │ ├── AllocateMessageQueueAveragelyByCircleTest.java
│ │ │ │ ├── AllocateMessageQueueAveragelyTest.java
│ │ │ │ ├── AllocateMessageQueueByConfigTest.java
│ │ │ │ ├── AllocateMessageQueueByMachineRoomTest.java
│ │ │ │ └── AllocateMessageQueueConsitentHashTest.java
│ │ │ └── store/
│ │ │ ├── ControllableOffsetTest.java
│ │ │ ├── LocalFileOffsetStoreTest.java
│ │ │ └── RemoteBrokerOffsetStoreTest.java
│ │ ├── impl/
│ │ │ ├── ClientRemotingProcessorTest.java
│ │ │ ├── MQAdminImplTest.java
│ │ │ ├── MQClientAPIImplTest.java
│ │ │ ├── admin/
│ │ │ │ └── MqClientAdminImplTest.java
│ │ │ ├── consumer/
│ │ │ │ ├── ConsumeMessageConcurrentlyServiceTest.java
│ │ │ │ ├── ConsumeMessageOrderlyServiceTest.java
│ │ │ │ ├── ConsumeMessagePopConcurrentlyServiceTest.java
│ │ │ │ ├── ConsumeMessagePopOrderlyServiceTest.java
│ │ │ │ ├── DefaultLitePullConsumerImplTest.java
│ │ │ │ ├── DefaultMQPushConsumerImplTest.java
│ │ │ │ ├── PopProcessQueueTest.java
│ │ │ │ ├── ProcessQueueTest.java
│ │ │ │ ├── PullAPIWrapperTest.java
│ │ │ │ ├── PullMessageServiceTest.java
│ │ │ │ ├── RebalanceLitePullImplTest.java
│ │ │ │ └── RebalancePushImplTest.java
│ │ │ ├── factory/
│ │ │ │ └── MQClientInstanceTest.java
│ │ │ └── mqclient/
│ │ │ ├── MQClientAPIExtTest.java
│ │ │ └── MQClientAPITest.java
│ │ ├── latency/
│ │ │ └── LatencyFaultToleranceImplTest.java
│ │ ├── producer/
│ │ │ ├── DefaultMQProducerTest.java
│ │ │ ├── ProduceAccumulatorTest.java
│ │ │ ├── RequestResponseFutureTest.java
│ │ │ ├── SendResultTest.java
│ │ │ └── selector/
│ │ │ ├── DefaultMQProducerImplTest.java
│ │ │ ├── SelectMessageQueueByHashTest.java
│ │ │ ├── SelectMessageQueueByRandomTest.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
│ └── resources/
│ ├── acl_hook/
│ │ └── plain_acl.yml
│ ├── conf/
│ │ └── plain_acl_incomplete.yml
│ ├── org/
│ │ └── powermock/
│ │ └── extensions/
│ │ └── configuration.properties
│ └── rmq.logback-test.xml
├── common/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── rocketmq/
│ │ │ └── common/
│ │ │ ├── AbortProcessException.java
│ │ │ ├── BoundaryType.java
│ │ │ ├── BrokerConfig.java
│ │ │ ├── BrokerConfigSingleton.java
│ │ │ ├── BrokerIdentity.java
│ │ │ ├── CheckRocksdbCqWriteResult.java
│ │ │ ├── ConfigManager.java
│ │ │ ├── ControllerConfig.java
│ │ │ ├── CountDownLatch2.java
│ │ │ ├── JraftConfig.java
│ │ │ ├── KeyBuilder.java
│ │ │ ├── LifecycleAwareServiceThread.java
│ │ │ ├── LockCallback.java
│ │ │ ├── MQVersion.java
│ │ │ ├── MixAll.java
│ │ │ ├── ObjectCreator.java
│ │ │ ├── OrderedConsumptionLevel.java
│ │ │ ├── Pair.java
│ │ │ ├── PopAckConstants.java
│ │ │ ├── ServiceState.java
│ │ │ ├── ServiceThread.java
│ │ │ ├── SubscriptionGroupAttributes.java
│ │ │ ├── SystemClock.java
│ │ │ ├── ThreadFactoryImpl.java
│ │ │ ├── TopicAttributes.java
│ │ │ ├── TopicConfig.java
│ │ │ ├── TopicFilterType.java
│ │ │ ├── TopicQueueId.java
│ │ │ ├── UnlockCallback.java
│ │ │ ├── UtilAll.java
│ │ │ ├── action/
│ │ │ │ ├── Action.java
│ │ │ │ └── RocketMQAction.java
│ │ │ ├── annotation/
│ │ │ │ └── ImportantField.java
│ │ │ ├── attribute/
│ │ │ │ ├── Attribute.java
│ │ │ │ ├── AttributeParser.java
│ │ │ │ ├── AttributeUtil.java
│ │ │ │ ├── BooleanAttribute.java
│ │ │ │ ├── CQType.java
│ │ │ │ ├── CleanupPolicy.java
│ │ │ │ ├── EnumAttribute.java
│ │ │ │ ├── LiteSubModel.java
│ │ │ │ ├── LongRangeAttribute.java
│ │ │ │ ├── StringAttribute.java
│ │ │ │ └── TopicMessageType.java
│ │ │ ├── chain/
│ │ │ │ ├── Handler.java
│ │ │ │ └── HandlerChain.java
│ │ │ ├── coldctr/
│ │ │ │ └── AccAndTimeStamp.java
│ │ │ ├── compression/
│ │ │ │ ├── CompressionType.java
│ │ │ │ ├── Compressor.java
│ │ │ │ ├── CompressorFactory.java
│ │ │ │ ├── Lz4Compressor.java
│ │ │ │ ├── ZlibCompressor.java
│ │ │ │ └── ZstdCompressor.java
│ │ │ ├── config/
│ │ │ │ ├── AbstractRocksDBStorage.java
│ │ │ │ ├── ConfigHelper.java
│ │ │ │ ├── ConfigManagerVersion.java
│ │ │ │ └── ConfigRocksDBStorage.java
│ │ │ ├── consistenthash/
│ │ │ │ ├── ConsistentHashRouter.java
│ │ │ │ ├── HashFunction.java
│ │ │ │ ├── Node.java
│ │ │ │ └── VirtualNode.java
│ │ │ ├── constant/
│ │ │ │ ├── CommonConstants.java
│ │ │ │ ├── ConsumeInitMode.java
│ │ │ │ ├── DBMsgConstants.java
│ │ │ │ ├── FIleReadaheadMode.java
│ │ │ │ ├── GrpcConstants.java
│ │ │ │ ├── HAProxyConstants.java
│ │ │ │ ├── LoggerName.java
│ │ │ │ └── PermName.java
│ │ │ ├── consumer/
│ │ │ │ ├── ConsumeFromWhere.java
│ │ │ │ └── ReceiptHandle.java
│ │ │ ├── entity/
│ │ │ │ ├── ClientGroup.java
│ │ │ │ └── TopicGroup.java
│ │ │ ├── fastjson/
│ │ │ │ └── GenericMapSuperclassDeserializer.java
│ │ │ ├── filter/
│ │ │ │ ├── ExpressionType.java
│ │ │ │ ├── FilterContext.java
│ │ │ │ ├── MessageFilter.java
│ │ │ │ └── impl/
│ │ │ │ ├── Op.java
│ │ │ │ ├── Operand.java
│ │ │ │ ├── Operator.java
│ │ │ │ ├── PolishExpr.java
│ │ │ │ └── Type.java
│ │ │ ├── future/
│ │ │ │ └── FutureTaskExt.java
│ │ │ ├── help/
│ │ │ │ └── FAQUrl.java
│ │ │ ├── hook/
│ │ │ │ └── FilterCheckHook.java
│ │ │ ├── lite/
│ │ │ │ ├── LiteLagInfo.java
│ │ │ │ ├── LiteSubscription.java
│ │ │ │ ├── LiteSubscriptionAction.java
│ │ │ │ ├── LiteSubscriptionDTO.java
│ │ │ │ ├── LiteUtil.java
│ │ │ │ └── OffsetOption.java
│ │ │ ├── logging/
│ │ │ │ ├── DefaultJoranConfiguratorExt.java
│ │ │ │ └── JoranConfiguratorExt.java
│ │ │ ├── message/
│ │ │ │ ├── Message.java
│ │ │ │ ├── MessageAccessor.java
│ │ │ │ ├── MessageBatch.java
│ │ │ │ ├── MessageClientExt.java
│ │ │ │ ├── MessageClientIDSetter.java
│ │ │ │ ├── MessageConst.java
│ │ │ │ ├── MessageDecoder.java
│ │ │ │ ├── MessageExt.java
│ │ │ │ ├── MessageExtBatch.java
│ │ │ │ ├── MessageExtBrokerInner.java
│ │ │ │ ├── MessageId.java
│ │ │ │ ├── MessageQueue.java
│ │ │ │ ├── MessageQueueAssignment.java
│ │ │ │ ├── MessageQueueForC.java
│ │ │ │ ├── MessageRequestMode.java
│ │ │ │ ├── MessageType.java
│ │ │ │ └── MessageVersion.java
│ │ │ ├── metrics/
│ │ │ │ ├── MetricsExporterType.java
│ │ │ │ ├── NopLongCounter.java
│ │ │ │ ├── NopLongHistogram.java
│ │ │ │ ├── NopLongUpDownCounter.java
│ │ │ │ ├── NopObservableDoubleGauge.java
│ │ │ │ └── NopObservableLongGauge.java
│ │ │ ├── namesrv/
│ │ │ │ ├── DefaultTopAddressing.java
│ │ │ │ ├── NameServerUpdateCallback.java
│ │ │ │ ├── NamesrvConfig.java
│ │ │ │ ├── NamesrvUtil.java
│ │ │ │ └── TopAddressing.java
│ │ │ ├── producer/
│ │ │ │ └── RecallMessageHandle.java
│ │ │ ├── queue/
│ │ │ │ ├── ConcurrentTreeMap.java
│ │ │ │ └── RoundQueue.java
│ │ │ ├── resource/
│ │ │ │ ├── ResourcePattern.java
│ │ │ │ ├── ResourceType.java
│ │ │ │ └── RocketMQResource.java
│ │ │ ├── running/
│ │ │ │ └── RunningStats.java
│ │ │ ├── state/
│ │ │ │ └── StateEventListener.java
│ │ │ ├── statistics/
│ │ │ │ ├── FutureHolder.java
│ │ │ │ ├── Interceptor.java
│ │ │ │ ├── StatisticsBrief.java
│ │ │ │ ├── StatisticsBriefInterceptor.java
│ │ │ │ ├── StatisticsItem.java
│ │ │ │ ├── StatisticsItemFormatter.java
│ │ │ │ ├── StatisticsItemPrinter.java
│ │ │ │ ├── StatisticsItemScheduledIncrementPrinter.java
│ │ │ │ ├── StatisticsItemScheduledPrinter.java
│ │ │ │ ├── StatisticsItemStateGetter.java
│ │ │ │ ├── StatisticsKindMeta.java
│ │ │ │ └── StatisticsManager.java
│ │ │ ├── stats/
│ │ │ │ ├── MomentStatsItem.java
│ │ │ │ ├── MomentStatsItemSet.java
│ │ │ │ ├── RTStatsItem.java
│ │ │ │ ├── Stats.java
│ │ │ │ ├── StatsItem.java
│ │ │ │ ├── StatsItemSet.java
│ │ │ │ └── StatsSnapshot.java
│ │ │ ├── sysflag/
│ │ │ │ ├── MessageSysFlag.java
│ │ │ │ ├── PullSysFlag.java
│ │ │ │ ├── SubscriptionSysFlag.java
│ │ │ │ └── TopicSysFlag.java
│ │ │ ├── thread/
│ │ │ │ ├── FutureTaskExtThreadPoolExecutor.java
│ │ │ │ ├── ThreadPoolMonitor.java
│ │ │ │ ├── ThreadPoolQueueSizeMonitor.java
│ │ │ │ ├── ThreadPoolStatusMonitor.java
│ │ │ │ └── ThreadPoolWrapper.java
│ │ │ ├── topic/
│ │ │ │ └── TopicValidator.java
│ │ │ └── utils/
│ │ │ ├── AbstractStartAndShutdown.java
│ │ │ ├── AsyncShutdownHelper.java
│ │ │ ├── BinaryUtil.java
│ │ │ ├── ChannelUtil.java
│ │ │ ├── CheckpointFile.java
│ │ │ ├── CleanupPolicyUtils.java
│ │ │ ├── ConcurrentHashMapUtils.java
│ │ │ ├── CorrelationIdUtil.java
│ │ │ ├── DataConverter.java
│ │ │ ├── ExceptionUtils.java
│ │ │ ├── FastJsonSerializer.java
│ │ │ ├── FutureUtils.java
│ │ │ ├── HttpTinyClient.java
│ │ │ ├── IOTinyUtils.java
│ │ │ ├── IPAddressUtils.java
│ │ │ ├── MessageUtils.java
│ │ │ ├── NameServerAddressUtils.java
│ │ │ ├── NetworkUtil.java
│ │ │ ├── PositiveAtomicCounter.java
│ │ │ ├── QueueTypeUtils.java
│ │ │ ├── Serializer.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── Shutdown.java
│ │ │ ├── Start.java
│ │ │ ├── StartAndShutdown.java
│ │ │ └── ThreadUtils.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── org.apache.rocketmq.logging.ch.qos.logback.classic.spi.Configurator
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── common/
│ │ ├── BrokerConfigSingletonTest.java
│ │ ├── BrokerConfigTest.java
│ │ ├── ConfigManagerTest.java
│ │ ├── CountDownLatch2Test.java
│ │ ├── KeyBuilderTest.java
│ │ ├── MQVersionTest.java
│ │ ├── MessageBatchTest.java
│ │ ├── MessageEncodeDecodeTest.java
│ │ ├── MessageExtBrokerInnerTest.java
│ │ ├── MixAllTest.java
│ │ ├── NetworkUtilTest.java
│ │ ├── ServiceThreadTest.java
│ │ ├── TopicConfigTest.java
│ │ ├── UtilAllTest.java
│ │ ├── action/
│ │ │ ├── ActionTest.java
│ │ │ └── RocketMQActionTest.java
│ │ ├── attribute/
│ │ │ ├── AttributeParserTest.java
│ │ │ ├── AttributeTest.java
│ │ │ ├── AttributeUtilTest.java
│ │ │ ├── BooleanAttributeTest.java
│ │ │ ├── CQTypeTest.java
│ │ │ ├── CleanupPolicyTest.java
│ │ │ ├── EnumAttributeTest.java
│ │ │ ├── LongRangeAttributeTest.java
│ │ │ └── TopicMessageTypeTest.java
│ │ ├── chain/
│ │ │ └── HandlerChainTest.java
│ │ ├── coldctr/
│ │ │ └── AccAndTimeStampTest.java
│ │ ├── compression/
│ │ │ ├── CompressionTest.java
│ │ │ ├── CompressionTypeTest.java
│ │ │ ├── CompressorFactoryTest.java
│ │ │ ├── Lz4CompressorTest.java
│ │ │ ├── ZlibCompressorTest.java
│ │ │ └── ZstdCompressorTest.java
│ │ ├── config/
│ │ │ └── ConfigHelperTest.java
│ │ ├── consumer/
│ │ │ └── ReceiptHandleTest.java
│ │ ├── fastjson/
│ │ │ └── GenericMapSuperclassDeserializerTest.java
│ │ ├── help/
│ │ │ └── FAQUrlTest.java
│ │ ├── message/
│ │ │ ├── MessageClientIDSetterTest.java
│ │ │ ├── MessageDecoderTest.java
│ │ │ └── MessageTest.java
│ │ ├── producer/
│ │ │ └── RecallMessageHandleTest.java
│ │ ├── stats/
│ │ │ └── StatsItemSetTest.java
│ │ ├── sysflag/
│ │ │ ├── CompressionFlagTest.java
│ │ │ └── PullSysFlagTest.java
│ │ ├── topic/
│ │ │ └── TopicValidatorTest.java
│ │ └── utils/
│ │ ├── ConcurrentHashMapUtilsTest.java
│ │ ├── IOTinyUtilsTest.java
│ │ ├── IPAddressUtilsTest.java
│ │ ├── LiteUtilTest.java
│ │ └── NameServerAddressUtilsTest.java
│ └── resources/
│ └── rmq.logback-test.xml
├── container/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── container/
│ │ ├── BrokerBootHook.java
│ │ ├── BrokerContainer.java
│ │ ├── BrokerContainerConfig.java
│ │ ├── BrokerContainerProcessor.java
│ │ ├── BrokerContainerStartup.java
│ │ ├── ContainerClientHouseKeepingService.java
│ │ ├── IBrokerContainer.java
│ │ ├── InnerBrokerController.java
│ │ └── InnerSalveBrokerController.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── container/
│ │ ├── BrokerContainerExtensibilityTest.java
│ │ ├── BrokerContainerStartupTest.java
│ │ ├── BrokerContainerTest.java
│ │ └── BrokerPreOnlineServiceTest.java
│ └── resources/
│ └── rmq.logback-test.xml
├── 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/
│ │ │ │ ├── DLedgerController.java
│ │ │ │ ├── DLedgerControllerStateMachine.java
│ │ │ │ ├── JRaftController.java
│ │ │ │ ├── JRaftControllerStateMachine.java
│ │ │ │ ├── closure/
│ │ │ │ │ └── ControllerClosure.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
│ │ │ │ ├── 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/
│ │ ├── DLedgerControllerTest.java
│ │ ├── DefaultBrokerHeartbeatManagerTest.java
│ │ ├── RaftBrokerHeartBeatManagerTest.java
│ │ ├── event/
│ │ │ ├── EventSerializerTest.java
│ │ │ └── ListEventSerializerTest.java
│ │ ├── heartbeat/
│ │ │ └── RaftBrokerHeartBeatManagerTest.java
│ │ └── manager/
│ │ ├── RaftReplicasInfoManagerTest.java
│ │ └── ReplicasInfoManagerTest.java
│ └── resources/
│ └── rmq.logback-test.xml
├── dev/
│ └── merge_rocketmq_pr.py
├── distribution/
│ ├── LICENSE-BIN
│ ├── NOTICE-BIN
│ ├── benchmark/
│ │ ├── batchproducer.sh
│ │ ├── consumer.sh
│ │ ├── producer.sh
│ │ ├── runclass.sh
│ │ ├── shutdown.sh
│ │ └── tproducer.sh
│ ├── bin/
│ │ ├── README.md
│ │ ├── cachedog.sh
│ │ ├── cleancache.sh
│ │ ├── cleancache.v1.sh
│ │ ├── controller/
│ │ │ ├── fast-try-independent-deployment.cmd
│ │ │ ├── fast-try-independent-deployment.sh
│ │ │ ├── fast-try-namesrv-plugin.cmd
│ │ │ ├── fast-try-namesrv-plugin.sh
│ │ │ ├── fast-try.cmd
│ │ │ └── fast-try.sh
│ │ ├── dledger/
│ │ │ └── fast-try.sh
│ │ ├── export.sh
│ │ ├── mqadmin
│ │ ├── mqadmin.cmd
│ │ ├── mqbroker
│ │ ├── mqbroker.cmd
│ │ ├── mqbroker.numanode0
│ │ ├── mqbroker.numanode1
│ │ ├── mqbroker.numanode2
│ │ ├── mqbroker.numanode3
│ │ ├── mqbrokercontainer
│ │ ├── mqcontroller
│ │ ├── mqcontroller.cmd
│ │ ├── mqnamesrv
│ │ ├── mqnamesrv.cmd
│ │ ├── mqproxy
│ │ ├── mqproxy.cmd
│ │ ├── mqshutdown
│ │ ├── mqshutdown.cmd
│ │ ├── os.sh
│ │ ├── play.cmd
│ │ ├── play.sh
│ │ ├── runbroker.cmd
│ │ ├── runbroker.sh
│ │ ├── runserver.cmd
│ │ ├── runserver.sh
│ │ ├── setcache.sh
│ │ ├── startfsrv.sh
│ │ ├── tools.cmd
│ │ └── tools.sh
│ ├── conf/
│ │ ├── 2m-2s-async/
│ │ │ ├── broker-a-s.properties
│ │ │ ├── broker-a.properties
│ │ │ ├── broker-b-s.properties
│ │ │ └── broker-b.properties
│ │ ├── 2m-2s-sync/
│ │ │ ├── broker-a-s.properties
│ │ │ ├── broker-a.properties
│ │ │ ├── broker-b-s.properties
│ │ │ └── broker-b.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
│ │ ├── rmq-proxy.json
│ │ └── tools.yml
│ ├── pom.xml
│ ├── release-client.xml
│ └── release.xml
├── docs/
│ ├── cn/
│ │ ├── BrokerContainer.md
│ │ ├── Configuration_System.md
│ │ ├── Configuration_TLS.md
│ │ ├── Debug_In_Idea.md
│ │ ├── Deployment.md
│ │ ├── Example_Batch.md
│ │ ├── Example_Compaction_Topic_cn.md
│ │ ├── Example_CreateTopic.md
│ │ ├── Example_Delay.md
│ │ ├── Example_LMQ.md
│ │ ├── Example_Simple_cn.md
│ │ ├── FAQ.md
│ │ ├── QuorumACK.md
│ │ ├── README.md
│ │ ├── RocketMQ_Example.md
│ │ ├── SlaveActingMasterMode.md
│ │ ├── acl/
│ │ │ ├── RocketMQ_Multiple_ACL_Files_设计.md
│ │ │ └── user_guide.md
│ │ ├── architecture.md
│ │ ├── best_practice.md
│ │ ├── client/
│ │ │ └── java/
│ │ │ ├── API_Reference_ DefaultPullConsumer.md
│ │ │ └── API_Reference_DefaultMQProducer.md
│ │ ├── concept.md
│ │ ├── controller/
│ │ │ ├── deploy.md
│ │ │ ├── design.md
│ │ │ ├── persistent_unique_broker_id.md
│ │ │ └── quick_start.md
│ │ ├── design.md
│ │ ├── dledger/
│ │ │ ├── deploy_guide.md
│ │ │ └── quick_start.md
│ │ ├── features.md
│ │ ├── msg_trace/
│ │ │ └── user_guide.md
│ │ ├── operation.md
│ │ ├── proxy/
│ │ │ └── deploy_guide.md
│ │ ├── rpc_request.md
│ │ └── statictopic/
│ │ ├── RocketMQ_Static_Topic_Logic_Queue_设计.md
│ │ └── The_Scope_Of_Static_Topic.md
│ └── en/
│ ├── CLITools.md
│ ├── Concept.md
│ ├── Configuration_Client.md
│ ├── Configuration_System.md
│ ├── Configuration_TLS.md
│ ├── Debug_In_Idea.md
│ ├── Deployment.md
│ ├── Design_Filter.md
│ ├── Design_LoadBlancing.md
│ ├── Design_Query.md
│ ├── Design_Remoting.md
│ ├── Design_Store.md
│ ├── Design_Trancation.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
│ ├── Operations_Broker.md
│ ├── Operations_Consumer.md
│ ├── Operations_Producer.md
│ ├── Operations_Trace.md
│ ├── QuorumACK.md
│ ├── README.md
│ ├── RocketMQ_Example.md
│ ├── Troubleshoopting.md
│ ├── acl/
│ │ └── Operations_ACL.md
│ ├── architecture.md
│ ├── best_practice.md
│ ├── client/
│ │ └── java/
│ │ └── API_Reference_DefaultMQProducer.md
│ ├── controller/
│ │ ├── deploy.md
│ │ ├── design.md
│ │ ├── persistent_unique_broker_id.md
│ │ └── quick_start.md
│ ├── design.md
│ ├── dledger/
│ │ ├── deploy_guide.md
│ │ └── quick_start.md
│ ├── msg_trace/
│ │ └── user_guide.md
│ ├── operation.md
│ └── proxy/
│ └── deploy_guide.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
│ │ ├── TransactionProducer.java
│ │ └── timer/
│ │ ├── TimerConsumer.java
│ │ └── TimerProducer.java
│ ├── broadcast/
│ │ └── PushConsumer.java
│ ├── filter/
│ │ ├── SqlFilterConsumer.java
│ │ ├── SqlFilterProducer.java
│ │ ├── TagFilterConsumer.java
│ │ └── TagFilterProducer.java
│ ├── lmq/
│ │ ├── LMQProducer.java
│ │ ├── LMQPullConsumer.java
│ │ ├── LMQPushConsumer.java
│ │ └── LMQPushPopConsumer.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/
│ │ ├── FilterFactory.java
│ │ ├── FilterSpi.java
│ │ ├── SqlFilter.java
│ │ ├── 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
│ │ ├── parser/
│ │ │ ├── ParseException.java
│ │ │ ├── SelectorParser.java
│ │ │ ├── SelectorParser.jj
│ │ │ ├── SelectorParserConstants.java
│ │ │ ├── SelectorParserTokenManager.java
│ │ │ ├── SimpleCharStream.java
│ │ │ ├── Token.java
│ │ │ └── TokenMgrError.java
│ │ └── util/
│ │ ├── BitsArray.java
│ │ ├── BloomFilter.java
│ │ └── BloomFilterData.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── filter/
│ │ ├── BitsArrayTest.java
│ │ ├── BloomFilterTest.java
│ │ ├── ExpressionTest.java
│ │ ├── FilterSpiTest.java
│ │ └── ParserTest.java
│ └── resources/
│ └── rmq.logback-test.xml
├── namesrv/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── rocketmq/
│ │ │ └── namesrv/
│ │ │ ├── NamesrvController.java
│ │ │ ├── NamesrvStartup.java
│ │ │ ├── kvconfig/
│ │ │ │ ├── KVConfigManager.java
│ │ │ │ └── KVConfigSerializeWrapper.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/
│ │ ├── NameServerInstanceTest.java
│ │ ├── NamesrvControllerTest.java
│ │ ├── NamesrvStartupTest.java
│ │ ├── kvconfig/
│ │ │ ├── KVConfigManagerTest.java
│ │ │ └── KVConfigSerializeWrapperTest.java
│ │ ├── processor/
│ │ │ ├── ClientRequestProcessorTest.java
│ │ │ ├── ClusterTestRequestProcessorTest.java
│ │ │ └── RequestProcessorTest.java
│ │ ├── route/
│ │ │ ├── ZoneRouteRPCHookMoreTest.java
│ │ │ └── ZoneRouteRPCHookTest.java
│ │ └── routeinfo/
│ │ ├── BrokerHousekeepingServiceTest.java
│ │ ├── GetRouteInfoBenchmark.java
│ │ ├── RegisterBrokerBenchmark.java
│ │ ├── RouteInfoManagerBrokerPermTest.java
│ │ ├── RouteInfoManagerBrokerRegisterTest.java
│ │ ├── RouteInfoManagerNewTest.java
│ │ ├── RouteInfoManagerStaticRegisterTest.java
│ │ ├── RouteInfoManagerTest.java
│ │ └── RouteInfoManagerTestBase.java
│ └── resources/
│ └── rmq.logback-test.xml
├── openmessaging/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── io/
│ │ └── openmessaging/
│ │ └── rocketmq/
│ │ ├── MessagingAccessPointImpl.java
│ │ ├── config/
│ │ │ └── ClientConfig.java
│ │ ├── consumer/
│ │ │ ├── LocalMessageCache.java
│ │ │ ├── PullConsumerImpl.java
│ │ │ └── PushConsumerImpl.java
│ │ ├── domain/
│ │ │ ├── BytesMessageImpl.java
│ │ │ ├── ConsumeRequest.java
│ │ │ ├── NonStandardKeys.java
│ │ │ ├── RocketMQConstants.java
│ │ │ └── SendResultImpl.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
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── apache/
│ │ │ └── rocketmq/
│ │ │ └── proxy/
│ │ │ ├── CommandLineArgument.java
│ │ │ ├── ProxyMode.java
│ │ │ ├── ProxyStartup.java
│ │ │ ├── auth/
│ │ │ │ ├── ProxyAuthenticationMetadataProvider.java
│ │ │ │ └── ProxyAuthorizationMetadataProvider.java
│ │ │ ├── common/
│ │ │ │ ├── AbstractCacheLoader.java
│ │ │ │ ├── Address.java
│ │ │ │ ├── ContextVariable.java
│ │ │ │ ├── MessageReceiptHandle.java
│ │ │ │ ├── ProxyContext.java
│ │ │ │ ├── ProxyException.java
│ │ │ │ ├── ProxyExceptionCode.java
│ │ │ │ ├── ReceiptHandleGroup.java
│ │ │ │ ├── ReceiptHandleGroupKey.java
│ │ │ │ ├── RenewEvent.java
│ │ │ │ ├── RenewStrategyPolicy.java
│ │ │ │ ├── channel/
│ │ │ │ │ └── ChannelHelper.java
│ │ │ │ └── utils/
│ │ │ │ ├── FilterUtils.java
│ │ │ │ ├── GrpcUtils.java
│ │ │ │ └── ProxyUtils.java
│ │ │ ├── config/
│ │ │ │ ├── ConfigFile.java
│ │ │ │ ├── Configuration.java
│ │ │ │ ├── ConfigurationManager.java
│ │ │ │ ├── MetricCollectorMode.java
│ │ │ │ └── ProxyConfig.java
│ │ │ ├── grpc/
│ │ │ │ ├── GrpcServer.java
│ │ │ │ ├── GrpcServerBuilder.java
│ │ │ │ ├── ProxyAndTlsProtocolNegotiator.java
│ │ │ │ ├── constant/
│ │ │ │ │ └── AttributeKeys.java
│ │ │ │ ├── interceptor/
│ │ │ │ │ ├── ContextInterceptor.java
│ │ │ │ │ ├── GlobalExceptionInterceptor.java
│ │ │ │ │ ├── HeaderInterceptor.java
│ │ │ │ │ └── RequestMapping.java
│ │ │ │ ├── pipeline/
│ │ │ │ │ ├── AuthenticationPipeline.java
│ │ │ │ │ ├── AuthorizationPipeline.java
│ │ │ │ │ ├── ContextInitPipeline.java
│ │ │ │ │ └── RequestPipeline.java
│ │ │ │ └── v2/
│ │ │ │ ├── AbstractMessagingActivity.java
│ │ │ │ ├── ContextStreamObserver.java
│ │ │ │ ├── DefaultGrpcMessagingActivity.java
│ │ │ │ ├── GrpcMessagingActivity.java
│ │ │ │ ├── GrpcMessagingApplication.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
│ │ │ │ ├── producer/
│ │ │ │ │ ├── ForwardMessageToDLQActivity.java
│ │ │ │ │ ├── RecallMessageActivity.java
│ │ │ │ │ └── SendMessageActivity.java
│ │ │ │ ├── route/
│ │ │ │ │ └── RouteActivity.java
│ │ │ │ └── transaction/
│ │ │ │ └── EndTransactionActivity.java
│ │ │ ├── metrics/
│ │ │ │ ├── ProxyMetricsConstant.java
│ │ │ │ └── ProxyMetricsManager.java
│ │ │ ├── processor/
│ │ │ │ ├── AbstractProcessor.java
│ │ │ │ ├── BatchAckResult.java
│ │ │ │ ├── ClientProcessor.java
│ │ │ │ ├── ConsumerProcessor.java
│ │ │ │ ├── DefaultMessagingProcessor.java
│ │ │ │ ├── MessagingProcessor.java
│ │ │ │ ├── PopMessageResultFilter.java
│ │ │ │ ├── ProducerProcessor.java
│ │ │ │ ├── QueueSelector.java
│ │ │ │ ├── ReceiptHandleProcessor.java
│ │ │ │ ├── RequestBrokerProcessor.java
│ │ │ │ ├── TransactionProcessor.java
│ │ │ │ ├── TransactionStatus.java
│ │ │ │ ├── channel/
│ │ │ │ │ ├── ChannelExtendAttributeGetter.java
│ │ │ │ │ ├── ChannelProtocolType.java
│ │ │ │ │ ├── RemoteChannel.java
│ │ │ │ │ ├── RemoteChannelConverter.java
│ │ │ │ │ └── RemoteChannelSerializer.java
│ │ │ │ └── validator/
│ │ │ │ ├── DefaultTopicMessageTypeValidator.java
│ │ │ │ └── TopicMessageTypeValidator.java
│ │ │ ├── remoting/
│ │ │ │ ├── ClientHousekeepingService.java
│ │ │ │ ├── MultiProtocolRemotingServer.java
│ │ │ │ ├── MultiProtocolTlsHelper.java
│ │ │ │ ├── RemotingProtocolServer.java
│ │ │ │ ├── RemotingProxyOutClient.java
│ │ │ │ ├── activity/
│ │ │ │ │ ├── AbstractRemotingActivity.java
│ │ │ │ │ ├── AckMessageActivity.java
│ │ │ │ │ ├── ChangeInvisibleTimeActivity.java
│ │ │ │ │ ├── ClientManagerActivity.java
│ │ │ │ │ ├── ConsumerManagerActivity.java
│ │ │ │ │ ├── GetTopicRouteActivity.java
│ │ │ │ │ ├── PopMessageActivity.java
│ │ │ │ │ ├── PullMessageActivity.java
│ │ │ │ │ ├── RecallMessageActivity.java
│ │ │ │ │ ├── SendMessageActivity.java
│ │ │ │ │ └── TransactionActivity.java
│ │ │ │ ├── channel/
│ │ │ │ │ ├── RemotingChannel.java
│ │ │ │ │ └── RemotingChannelManager.java
│ │ │ │ ├── common/
│ │ │ │ │ └── RemotingConverter.java
│ │ │ │ ├── pipeline/
│ │ │ │ │ ├── AuthenticationPipeline.java
│ │ │ │ │ ├── AuthorizationPipeline.java
│ │ │ │ │ ├── ContextInitPipeline.java
│ │ │ │ │ └── RequestPipeline.java
│ │ │ │ └── protocol/
│ │ │ │ ├── ProtocolHandler.java
│ │ │ │ ├── ProtocolNegotiationHandler.java
│ │ │ │ ├── http2proxy/
│ │ │ │ │ ├── HAProxyMessageForwarder.java
│ │ │ │ │ ├── Http2ProtocolProxyHandler.java
│ │ │ │ │ ├── Http2ProxyBackendHandler.java
│ │ │ │ │ └── Http2ProxyFrontendHandler.java
│ │ │ │ └── remoting/
│ │ │ │ └── RemotingProtocolHandler.java
│ │ │ └── service/
│ │ │ ├── ClusterServiceManager.java
│ │ │ ├── LocalServiceManager.java
│ │ │ ├── ServiceManager.java
│ │ │ ├── ServiceManagerFactory.java
│ │ │ ├── admin/
│ │ │ │ ├── AdminService.java
│ │ │ │ └── DefaultAdminService.java
│ │ │ ├── cert/
│ │ │ │ └── TlsCertificateManager.java
│ │ │ ├── channel/
│ │ │ │ ├── ChannelManager.java
│ │ │ │ ├── InvocationChannel.java
│ │ │ │ ├── InvocationContext.java
│ │ │ │ ├── InvocationContextInterface.java
│ │ │ │ ├── SimpleChannel.java
│ │ │ │ └── SimpleChannelHandlerContext.java
│ │ │ ├── client/
│ │ │ │ ├── ClusterConsumerManager.java
│ │ │ │ └── ProxyClientRemotingProcessor.java
│ │ │ ├── lite/
│ │ │ │ └── LiteSubscriptionService.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
│ │ │ │ ├── DefaultMessageQueuePriorityProvider.java
│ │ │ │ ├── LocalTopicRouteService.java
│ │ │ │ ├── MessageQueuePenalizer.java
│ │ │ │ ├── MessageQueuePriorityProvider.java
│ │ │ │ ├── MessageQueueSelector.java
│ │ │ │ ├── MessageQueueView.java
│ │ │ │ ├── ProxyTopicRouteData.java
│ │ │ │ ├── TopicRouteHelper.java
│ │ │ │ ├── TopicRouteService.java
│ │ │ │ └── TopicRouteWrapper.java
│ │ │ ├── sysmessage/
│ │ │ │ ├── AbstractSystemMessageSyncer.java
│ │ │ │ ├── HeartbeatSyncer.java
│ │ │ │ ├── HeartbeatSyncerData.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/
│ │ ├── ProxyStartupTest.java
│ │ ├── common/
│ │ │ ├── AddressTest.java
│ │ │ ├── ReceiptHandleGroupTest.java
│ │ │ ├── RenewStrategyPolicyTest.java
│ │ │ └── utils/
│ │ │ └── FilterUtilTest.java
│ │ ├── config/
│ │ │ ├── ConfigurationManagerTest.java
│ │ │ ├── ConfigurationTest.java
│ │ │ ├── InitConfigTest.java
│ │ │ └── MetricCollectorModeTest.java
│ │ ├── grpc/
│ │ │ ├── ProxyAndTlsProtocolNegotiatorTest.java
│ │ │ └── v2/
│ │ │ ├── AbstractMessagingActivityTest.java
│ │ │ ├── BaseActivityTest.java
│ │ │ ├── GrpcMessagingApplicationTest.java
│ │ │ ├── channel/
│ │ │ │ └── GrpcClientChannelTest.java
│ │ │ ├── client/
│ │ │ │ └── ClientActivityTest.java
│ │ │ ├── common/
│ │ │ │ ├── GrpcClientSettingsManagerTest.java
│ │ │ │ ├── GrpcConverterTest.java
│ │ │ │ └── GrpcValidatorTest.java
│ │ │ ├── consumer/
│ │ │ │ ├── AckMessageActivityTest.java
│ │ │ │ ├── ChangeInvisibleDurationActivityTest.java
│ │ │ │ ├── ReceiveMessageActivityTest.java
│ │ │ │ └── ReceiveMessageResponseStreamWriterTest.java
│ │ │ ├── producer/
│ │ │ │ ├── ForwardMessageToDLQActivityTest.java
│ │ │ │ ├── RecallMessageActivityTest.java
│ │ │ │ └── SendMessageActivityTest.java
│ │ │ ├── route/
│ │ │ │ └── RouteActivityTest.java
│ │ │ └── transaction/
│ │ │ └── EndTransactionActivityTest.java
│ │ ├── processor/
│ │ │ ├── BaseProcessorTest.java
│ │ │ ├── ClientProcessorTest.java
│ │ │ ├── ConsumerProcessorTest.java
│ │ │ ├── ProducerProcessorTest.java
│ │ │ ├── ReceiptHandleProcessorTest.java
│ │ │ ├── TransactionProcessorTest.java
│ │ │ └── channel/
│ │ │ └── RemoteChannelTest.java
│ │ ├── remoting/
│ │ │ ├── activity/
│ │ │ │ ├── AbstractRemotingActivityTest.java
│ │ │ │ ├── GetTopicRouteActivityTest.java
│ │ │ │ ├── PullMessageActivityTest.java
│ │ │ │ ├── RecallMessageActivityTest.java
│ │ │ │ └── SendMessageActivityTest.java
│ │ │ ├── channel/
│ │ │ │ ├── RemotingChannelManagerTest.java
│ │ │ │ └── RemotingChannelTest.java
│ │ │ └── protocol/
│ │ │ └── http2proxy/
│ │ │ ├── HAProxyMessageForwarderTest.java
│ │ │ └── Http2ProtocolProxyHandlerTest.java
│ │ └── service/
│ │ ├── BaseServiceTest.java
│ │ ├── admin/
│ │ │ └── DefaultAdminServiceTest.java
│ │ ├── cert/
│ │ │ └── TlsCertificateManagerTest.java
│ │ ├── lite/
│ │ │ └── LiteSubscriptionServiceTest.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
│ │ │ ├── MessageQueuePenalizerTest.java
│ │ │ ├── MessageQueuePriorityProviderTest.java
│ │ │ └── MessageQueueSelectorTest.java
│ │ ├── sysmessage/
│ │ │ └── HeartbeatSyncerTest.java
│ │ └── transaction/
│ │ ├── AbstractTransactionServiceTest.java
│ │ ├── ClusterTransactionServiceTest.java
│ │ └── TransactionDataManagerTest.java
│ └── resources/
│ ├── certs/
│ │ ├── client.key
│ │ ├── client.pem
│ │ ├── server.key
│ │ └── server.pem
│ ├── mockito-extensions/
│ │ └── org.mockito.plugins.MockMaker
│ ├── rmq-proxy-home/
│ │ └── conf/
│ │ ├── broker.conf
│ │ ├── logback_proxy.xml
│ │ └── rmq-proxy.json
│ └── rmq.logback-test.xml
├── remoting/
│ ├── BUILD.bazel
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── remoting/
│ │ ├── ChannelEventListener.java
│ │ ├── CommandCallback.java
│ │ ├── CommandCustomHeader.java
│ │ ├── Configuration.java
│ │ ├── InvokeCallback.java
│ │ ├── RPCHook.java
│ │ ├── RemotingClient.java
│ │ ├── RemotingServer.java
│ │ ├── RemotingService.java
│ │ ├── annotation/
│ │ │ ├── CFNotNull.java
│ │ │ └── CFNullable.java
│ │ ├── common/
│ │ │ ├── HeartbeatV2Result.java
│ │ │ ├── RemotingHelper.java
│ │ │ ├── SemaphoreReleaseOnlyOnce.java
│ │ │ ├── ServiceThread.java
│ │ │ └── TlsMode.java
│ │ ├── exception/
│ │ │ ├── RemotingCommandException.java
│ │ │ ├── RemotingConnectException.java
│ │ │ ├── RemotingException.java
│ │ │ ├── RemotingSendRequestException.java
│ │ │ ├── RemotingTimeoutException.java
│ │ │ └── RemotingTooMuchRequestException.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
│ │ ├── pipeline/
│ │ │ └── RequestPipeline.java
│ │ ├── protocol/
│ │ │ ├── BitSetSerializerDeserializer.java
│ │ │ ├── BrokerSyncInfo.java
│ │ │ ├── DataVersion.java
│ │ │ ├── EpochEntry.java
│ │ │ ├── FastCodesHeader.java
│ │ │ ├── ForbiddenType.java
│ │ │ ├── LanguageCode.java
│ │ │ ├── MQProtosHelper.java
│ │ │ ├── NamespaceUtil.java
│ │ │ ├── RemotingCommand.java
│ │ │ ├── RemotingCommandType.java
│ │ │ ├── RemotingSerializable.java
│ │ │ ├── RemotingSysResponseCode.java
│ │ │ ├── RequestCode.java
│ │ │ ├── RequestHeaderRegistry.java
│ │ │ ├── RequestSource.java
│ │ │ ├── RequestType.java
│ │ │ ├── ResponseCode.java
│ │ │ ├── RocketMQSerializable.java
│ │ │ ├── SerializeType.java
│ │ │ ├── admin/
│ │ │ │ ├── ConsumeStats.java
│ │ │ │ ├── OffsetWrapper.java
│ │ │ │ ├── RollbackStats.java
│ │ │ │ ├── TopicOffset.java
│ │ │ │ └── TopicStatsTable.java
│ │ │ ├── body/
│ │ │ │ ├── AclInfo.java
│ │ │ │ ├── BatchAck.java
│ │ │ │ ├── BatchAckMessageRequestBody.java
│ │ │ │ ├── BrokerMemberGroup.java
│ │ │ │ ├── BrokerReplicasInfo.java
│ │ │ │ ├── BrokerStatsData.java
│ │ │ │ ├── BrokerStatsItem.java
│ │ │ │ ├── CMResult.java
│ │ │ │ ├── CheckClientRequestBody.java
│ │ │ │ ├── ClusterInfo.java
│ │ │ │ ├── Connection.java
│ │ │ │ ├── ConsumeByWho.java
│ │ │ │ ├── ConsumeMessageDirectlyResult.java
│ │ │ │ ├── ConsumeQueueData.java
│ │ │ │ ├── ConsumeStatsList.java
│ │ │ │ ├── ConsumeStatus.java
│ │ │ │ ├── ConsumerConnection.java
│ │ │ │ ├── ConsumerOffsetSerializeWrapper.java
│ │ │ │ ├── ConsumerRunningInfo.java
│ │ │ │ ├── CreateTopicListRequestBody.java
│ │ │ │ ├── ElectMasterResponseBody.java
│ │ │ │ ├── EpochEntryCache.java
│ │ │ │ ├── GetBrokerLiteInfoResponseBody.java
│ │ │ │ ├── GetBrokerMemberGroupResponseBody.java
│ │ │ │ ├── GetConsumerStatusBody.java
│ │ │ │ ├── GetLiteClientInfoResponseBody.java
│ │ │ │ ├── GetLiteGroupInfoResponseBody.java
│ │ │ │ ├── GetLiteTopicInfoResponseBody.java
│ │ │ │ ├── GetParentTopicInfoResponseBody.java
│ │ │ │ ├── GroupList.java
│ │ │ │ ├── HARuntimeInfo.java
│ │ │ │ ├── KVTable.java
│ │ │ │ ├── LiteSubscriptionCtlRequestBody.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
│ │ │ │ ├── ResetOffsetBody.java
│ │ │ │ ├── ResetOffsetBodyForC.java
│ │ │ │ ├── RoleChangeNotifyEntry.java
│ │ │ │ ├── SetMessageRequestModeRequestBody.java
│ │ │ │ ├── SubscriptionGroupList.java
│ │ │ │ ├── SubscriptionGroupWrapper.java
│ │ │ │ ├── SyncStateSet.java
│ │ │ │ ├── TopicConfigAndMappingSerializeWrapper.java
│ │ │ │ ├── TopicConfigSerializeWrapper.java
│ │ │ │ ├── TopicList.java
│ │ │ │ ├── TopicQueueMappingSerializeWrapper.java
│ │ │ │ ├── UnlockBatchRequestBody.java
│ │ │ │ └── UserInfo.java
│ │ │ ├── filter/
│ │ │ │ └── FilterAPI.java
│ │ │ ├── header/
│ │ │ │ ├── AckMessageRequestHeader.java
│ │ │ │ ├── AddBrokerRequestHeader.java
│ │ │ │ ├── ChangeInvisibleTimeRequestHeader.java
│ │ │ │ ├── ChangeInvisibleTimeResponseHeader.java
│ │ │ │ ├── CheckRocksdbCqWriteProgressRequestHeader.java
│ │ │ │ ├── CheckTransactionStateRequestHeader.java
│ │ │ │ ├── CheckTransactionStateResponseHeader.java
│ │ │ │ ├── CloneGroupOffsetRequestHeader.java
│ │ │ │ ├── ConsumeMessageDirectlyResultRequestHeader.java
│ │ │ │ ├── ConsumerSendMsgBackRequestHeader.java
│ │ │ │ ├── CreateAclRequestHeader.java
│ │ │ │ ├── CreateTopicListRequestHeader.java
│ │ │ │ ├── CreateTopicRequestHeader.java
│ │ │ │ ├── CreateUserRequestHeader.java
│ │ │ │ ├── DeleteAclRequestHeader.java
│ │ │ │ ├── DeleteSubscriptionGroupRequestHeader.java
│ │ │ │ ├── DeleteTopicRequestHeader.java
│ │ │ │ ├── DeleteUserRequestHeader.java
│ │ │ │ ├── EndTransactionRequestHeader.java
│ │ │ │ ├── EndTransactionResponseHeader.java
│ │ │ │ ├── ExchangeHAInfoRequestHeader.java
│ │ │ │ ├── ExchangeHAInfoResponseHeader.java
│ │ │ │ ├── ExportRocksDBConfigToJsonRequestHeader.java
│ │ │ │ ├── ExtraInfoUtil.java
│ │ │ │ ├── GetAclRequestHeader.java
│ │ │ │ ├── GetAllProducerInfoRequestHeader.java
│ │ │ │ ├── GetAllSubscriptionGroupRequestHeader.java
│ │ │ │ ├── GetAllSubscriptionGroupResponseHeader.java
│ │ │ │ ├── GetAllTopicConfigRequestHeader.java
│ │ │ │ ├── GetAllTopicConfigResponseHeader.java
│ │ │ │ ├── GetBrokerConfigResponseHeader.java
│ │ │ │ ├── GetBrokerMemberGroupRequestHeader.java
│ │ │ │ ├── GetConsumeStatsInBrokerHeader.java
│ │ │ │ ├── GetConsumeStatsRequestHeader.java
│ │ │ │ ├── GetConsumerConnectionListRequestHeader.java
│ │ │ │ ├── GetConsumerListByGroupRequestHeader.java
│ │ │ │ ├── GetConsumerListByGroupResponseBody.java
│ │ │ │ ├── GetConsumerListByGroupResponseHeader.java
│ │ │ │ ├── GetConsumerRunningInfoRequestHeader.java
│ │ │ │ ├── GetConsumerStatusRequestHeader.java
│ │ │ │ ├── GetEarliestMsgStoretimeRequestHeader.java
│ │ │ │ ├── GetEarliestMsgStoretimeResponseHeader.java
│ │ │ │ ├── GetLiteClientInfoRequestHeader.java
│ │ │ │ ├── GetLiteGroupInfoRequestHeader.java
│ │ │ │ ├── GetLiteTopicInfoRequestHeader.java
│ │ │ │ ├── GetMaxOffsetRequestHeader.java
│ │ │ │ ├── GetMaxOffsetResponseHeader.java
│ │ │ │ ├── GetMinOffsetRequestHeader.java
│ │ │ │ ├── GetMinOffsetResponseHeader.java
│ │ │ │ ├── GetParentTopicInfoRequestHeader.java
│ │ │ │ ├── GetProducerConnectionListRequestHeader.java
│ │ │ │ ├── GetSubscriptionGroupConfigRequestHeader.java
│ │ │ │ ├── GetTopicConfigRequestHeader.java
│ │ │ │ ├── GetTopicStatsInfoRequestHeader.java
│ │ │ │ ├── GetTopicsByClusterRequestHeader.java
│ │ │ │ ├── GetUserRequestHeader.java
│ │ │ │ ├── HeartbeatRequestHeader.java
│ │ │ │ ├── InitConsumerOffsetRequestHeader.java
│ │ │ │ ├── ListAclsRequestHeader.java
│ │ │ │ ├── ListUsersRequestHeader.java
│ │ │ │ ├── LiteSubscriptionCtlRequestHeader.java
│ │ │ │ ├── LockBatchMqRequestHeader.java
│ │ │ │ ├── NotificationRequestHeader.java
│ │ │ │ ├── NotificationResponseHeader.java
│ │ │ │ ├── NotifyBrokerRoleChangedRequestHeader.java
│ │ │ │ ├── NotifyConsumerIdsChangedRequestHeader.java
│ │ │ │ ├── NotifyMinBrokerIdChangeRequestHeader.java
│ │ │ │ ├── NotifyUnsubscribeLiteRequestHeader.java
│ │ │ │ ├── PeekMessageRequestHeader.java
│ │ │ │ ├── PollingInfoRequestHeader.java
│ │ │ │ ├── PollingInfoResponseHeader.java
│ │ │ │ ├── PopLiteMessageRequestHeader.java
│ │ │ │ ├── PopLiteMessageResponseHeader.java
│ │ │ │ ├── PopMessageRequestHeader.java
│ │ │ │ ├── PopMessageResponseHeader.java
│ │ │ │ ├── PullMessageRequestHeader.java
│ │ │ │ ├── PullMessageResponseHeader.java
│ │ │ │ ├── QueryConsumeQueueRequestHeader.java
│ │ │ │ ├── QueryConsumeTimeSpanRequestHeader.java
│ │ │ │ ├── QueryConsumerOffsetRequestHeader.java
│ │ │ │ ├── QueryConsumerOffsetResponseHeader.java
│ │ │ │ ├── QueryCorrectionOffsetHeader.java
│ │ │ │ ├── QueryMessageRequestHeader.java
│ │ │ │ ├── QueryMessageResponseHeader.java
│ │ │ │ ├── QuerySubscriptionByConsumerRequestHeader.java
│ │ │ │ ├── QueryTopicConsumeByWhoRequestHeader.java
│ │ │ │ ├── QueryTopicsByConsumerRequestHeader.java
│ │ │ │ ├── RecallMessageRequestHeader.java
│ │ │ │ ├── RecallMessageResponseHeader.java
│ │ │ │ ├── RemoveBrokerRequestHeader.java
│ │ │ │ ├── ReplyMessageRequestHeader.java
│ │ │ │ ├── ResetMasterFlushOffsetHeader.java
│ │ │ │ ├── ResetOffsetRequestHeader.java
│ │ │ │ ├── ResumeCheckHalfMessageRequestHeader.java
│ │ │ │ ├── SearchOffsetRequestHeader.java
│ │ │ │ ├── SearchOffsetResponseHeader.java
│ │ │ │ ├── SendMessageRequestHeader.java
│ │ │ │ ├── SendMessageRequestHeaderV2.java
│ │ │ │ ├── SendMessageResponseHeader.java
│ │ │ │ ├── StatisticsMessagesRequestHeader.java
│ │ │ │ ├── TriggerLiteDispatchRequestHeader.java
│ │ │ │ ├── UnlockBatchMqRequestHeader.java
│ │ │ │ ├── UnregisterClientRequestHeader.java
│ │ │ │ ├── UnregisterClientResponseHeader.java
│ │ │ │ ├── UpdateAclRequestHeader.java
│ │ │ │ ├── UpdateConsumerOffsetRequestHeader.java
│ │ │ │ ├── UpdateConsumerOffsetResponseHeader.java
│ │ │ │ ├── UpdateGroupForbiddenRequestHeader.java
│ │ │ │ ├── UpdateUserRequestHeader.java
│ │ │ │ ├── ViewBrokerStatsDataRequestHeader.java
│ │ │ │ ├── ViewMessageRequestHeader.java
│ │ │ │ ├── ViewMessageResponseHeader.java
│ │ │ │ ├── controller/
│ │ │ │ │ ├── AlterSyncStateSetRequestHeader.java
│ │ │ │ │ ├── AlterSyncStateSetResponseHeader.java
│ │ │ │ │ ├── ElectMasterRequestHeader.java
│ │ │ │ │ ├── ElectMasterResponseHeader.java
│ │ │ │ │ ├── GetMetaDataResponseHeader.java
│ │ │ │ │ ├── GetReplicaInfoRequestHeader.java
│ │ │ │ │ ├── GetReplicaInfoResponseHeader.java
│ │ │ │ │ ├── admin/
│ │ │ │ │ │ └── CleanControllerBrokerDataRequestHeader.java
│ │ │ │ │ └── register/
│ │ │ │ │ ├── ApplyBrokerIdRequestHeader.java
│ │ │ │ │ ├── ApplyBrokerIdResponseHeader.java
│ │ │ │ │ ├── GetNextBrokerIdRequestHeader.java
│ │ │ │ │ ├── GetNextBrokerIdResponseHeader.java
│ │ │ │ │ ├── RegisterBrokerToControllerRequestHeader.java
│ │ │ │ │ └── RegisterBrokerToControllerResponseHeader.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
│ │ │ ├── heartbeat/
│ │ │ │ ├── ConsumeType.java
│ │ │ │ ├── ConsumerData.java
│ │ │ │ ├── HeartbeatData.java
│ │ │ │ ├── MessageModel.java
│ │ │ │ ├── ProducerData.java
│ │ │ │ └── SubscriptionData.java
│ │ │ ├── namesrv/
│ │ │ │ └── RegisterBrokerResult.java
│ │ │ ├── route/
│ │ │ │ ├── BrokerData.java
│ │ │ │ ├── MessageQueueRouteState.java
│ │ │ │ ├── QueueData.java
│ │ │ │ └── TopicRouteData.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
│ │ ├── rpc/
│ │ │ ├── ClientMetadata.java
│ │ │ ├── RequestBuilder.java
│ │ │ ├── RpcClient.java
│ │ │ ├── RpcClientHook.java
│ │ │ ├── RpcClientImpl.java
│ │ │ ├── RpcClientUtils.java
│ │ │ ├── RpcException.java
│ │ │ ├── RpcRequest.java
│ │ │ ├── RpcRequestHeader.java
│ │ │ ├── RpcResponse.java
│ │ │ ├── TopicQueueRequestHeader.java
│ │ │ └── TopicRequestHeader.java
│ │ └── rpchook/
│ │ ├── DynamicalExtFieldRPCHook.java
│ │ └── StreamTypeRPCHook.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── remoting/
│ │ ├── ProxyProtocolTest.java
│ │ ├── RemotingServerTest.java
│ │ ├── SubRemotingServerTest.java
│ │ ├── TlsTest.java
│ │ ├── netty/
│ │ │ ├── FileRegionEncoderTest.java
│ │ │ ├── MockChannel.java
│ │ │ ├── MockChannelPromise.java
│ │ │ ├── NettyClientConfigTest.java
│ │ │ ├── NettyRemotingAbstractTest.java
│ │ │ ├── NettyRemotingClientTest.java
│ │ │ ├── NettyRemotingServerTest.java
│ │ │ ├── NettyServerConfigTest.java
│ │ │ └── RemotingCodeDistributionHandlerTest.java
│ │ ├── protocol/
│ │ │ ├── CheckpointFileTest.java
│ │ │ ├── ClusterInfoTest.java
│ │ │ ├── ConsumeStatusTest.java
│ │ │ ├── DataVersionTest.java
│ │ │ ├── GroupListTest.java
│ │ │ ├── LanguageCodeTest.java
│ │ │ ├── NamespaceUtilTest.java
│ │ │ ├── QueryConsumeTimeSpanBodyTest.java
│ │ │ ├── RegisterBrokerBodyTest.java
│ │ │ ├── RemotingCommandTest.java
│ │ │ ├── RemotingSerializableCompatTest.java
│ │ │ ├── RemotingSerializableTest.java
│ │ │ ├── RequestSourceTest.java
│ │ │ ├── RequestTypeTest.java
│ │ │ ├── RocketMQSerializableTest.java
│ │ │ ├── admin/
│ │ │ │ ├── ConsumeStatsTest.java
│ │ │ │ └── TopicStatsTableTest.java
│ │ │ ├── body/
│ │ │ │ ├── BatchAckTest.java
│ │ │ │ ├── BrokerStatsDataTest.java
│ │ │ │ ├── CheckClientRequestBodyTest.java
│ │ │ │ ├── ConsumeMessageDirectlyResultTest.java
│ │ │ │ ├── ConsumeStatsListTest.java
│ │ │ │ ├── ConsumerConnectionTest.java
│ │ │ │ ├── ConsumerRunningInfoTest.java
│ │ │ │ ├── KVTableTest.java
│ │ │ │ ├── MessageRequestModeSerializeWrapperTest.java
│ │ │ │ ├── QueryConsumeQueueResponseBodyTest.java
│ │ │ │ ├── QueryCorrectionOffsetBodyTest.java
│ │ │ │ ├── ResetOffsetBodyTest.java
│ │ │ │ └── SubscriptionGroupWrapperTest.java
│ │ │ ├── filter/
│ │ │ │ └── FilterAPITest.java
│ │ │ ├── header/
│ │ │ │ ├── ExportRocksDBConfigToJsonRequestHeaderTest.java
│ │ │ │ ├── ExtraInfoUtilTest.java
│ │ │ │ ├── FastCodesHeaderTest.java
│ │ │ │ ├── GetConsumeStatsRequestHeaderTest.java
│ │ │ │ └── SendMessageRequestHeaderV2Test.java
│ │ │ ├── heartbeat/
│ │ │ │ └── SubscriptionDataTest.java
│ │ │ ├── route/
│ │ │ │ └── TopicRouteDataTest.java
│ │ │ ├── statictopic/
│ │ │ │ ├── TopicQueueMappingTest.java
│ │ │ │ └── TopicQueueMappingUtilsTest.java
│ │ │ ├── subscription/
│ │ │ │ ├── CustomizedRetryPolicyTest.java
│ │ │ │ ├── ExponentialRetryPolicyTest.java
│ │ │ │ ├── GroupRetryPolicyTest.java
│ │ │ │ └── SimpleSubscriptionDataTest.java
│ │ │ └── topic/
│ │ │ └── OffsetMovedEventTest.java
│ │ └── rpc/
│ │ ├── ClientMetadataTest.java
│ │ ├── RpcClientImplTest.java
│ │ └── RpcRequestHeaderTest.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/
│ │ ├── 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
│ │ ├── CommitLog.java
│ │ ├── CommitLogDispatchStore.java
│ │ ├── CommitLogDispatcher.java
│ │ ├── CompactionAppendMsgCallback.java
│ │ ├── ConsumeQueue.java
│ │ ├── ConsumeQueueExt.java
│ │ ├── DefaultMessageFilter.java
│ │ ├── DefaultMessageStore.java
│ │ ├── DispatchRequest.java
│ │ ├── FileQueueSnapshot.java
│ │ ├── FlushDiskWatcher.java
│ │ ├── FlushManager.java
│ │ ├── GetMessageResult.java
│ │ ├── GetMessageStatus.java
│ │ ├── LmqDispatch.java
│ │ ├── MappedFileQueue.java
│ │ ├── MessageArrivingListener.java
│ │ ├── MessageExtEncoder.java
│ │ ├── MessageFilter.java
│ │ ├── MessageStore.java
│ │ ├── MessageStoreStateMachine.java
│ │ ├── MultiPathMappedFileQueue.java
│ │ ├── PutMessageContext.java
│ │ ├── PutMessageLock.java
│ │ ├── PutMessageReentrantLock.java
│ │ ├── PutMessageResult.java
│ │ ├── PutMessageSpinLock.java
│ │ ├── PutMessageStatus.java
│ │ ├── QueryMessageResult.java
│ │ ├── ReferenceResource.java
│ │ ├── RocksDBMessageStore.java
│ │ ├── RunningFlags.java
│ │ ├── SelectMappedBufferResult.java
│ │ ├── SelectMappedFileResult.java
│ │ ├── StoreCheckpoint.java
│ │ ├── StoreStatsService.java
│ │ ├── StoreType.java
│ │ ├── StoreUtil.java
│ │ ├── Swappable.java
│ │ ├── TopicQueueLock.java
│ │ ├── TransientStorePool.java
│ │ ├── config/
│ │ │ ├── BrokerRole.java
│ │ │ ├── FlushDiskType.java
│ │ │ ├── MessageStoreConfig.java
│ │ │ └── StorePathConfigHelper.java
│ │ ├── dledger/
│ │ │ └── DLedgerCommitLog.java
│ │ ├── exception/
│ │ │ ├── ConsumeQueueException.java
│ │ │ └── StoreException.java
│ │ ├── ha/
│ │ │ ├── DefaultHAClient.java
│ │ │ ├── DefaultHAConnection.java
│ │ │ ├── DefaultHAService.java
│ │ │ ├── FlowMonitor.java
│ │ │ ├── GroupTransferService.java
│ │ │ ├── HAClient.java
│ │ │ ├── HAConnection.java
│ │ │ ├── HAConnectionState.java
│ │ │ ├── HAConnectionStateNotificationRequest.java
│ │ │ ├── HAConnectionStateNotificationService.java
│ │ │ ├── HAService.java
│ │ │ ├── WaitNotifyObject.java
│ │ │ ├── autoswitch/
│ │ │ │ ├── AutoSwitchHAClient.java
│ │ │ │ ├── AutoSwitchHAConnection.java
│ │ │ │ ├── AutoSwitchHAService.java
│ │ │ │ ├── BrokerMetadata.java
│ │ │ │ ├── EpochFileCache.java
│ │ │ │ ├── MetadataFile.java
│ │ │ │ └── TempBrokerMetadata.java
│ │ │ └── io/
│ │ │ ├── AbstractHAReader.java
│ │ │ ├── HAReadHook.java
│ │ │ ├── HAWriteHook.java
│ │ │ └── HAWriter.java
│ │ ├── hook/
│ │ │ ├── PutMessageHook.java
│ │ │ └── SendMessageBackHook.java
│ │ ├── index/
│ │ │ ├── IndexFile.java
│ │ │ ├── IndexHeader.java
│ │ │ ├── IndexService.java
│ │ │ ├── QueryOffsetResult.java
│ │ │ └── rocksdb/
│ │ │ ├── IndexRocksDBRecord.java
│ │ │ └── IndexRocksDBStore.java
│ │ ├── kv/
│ │ │ ├── CommitLogDispatcherCompaction.java
│ │ │ ├── CompactionLog.java
│ │ │ ├── CompactionPositionMgr.java
│ │ │ ├── CompactionService.java
│ │ │ ├── CompactionStore.java
│ │ │ └── MessageFetcher.java
│ │ ├── lock/
│ │ │ ├── AdaptiveBackOffSpinLock.java
│ │ │ ├── AdaptiveBackOffSpinLockImpl.java
│ │ │ ├── BackOffReentrantLock.java
│ │ │ └── BackOffSpinLock.java
│ │ ├── logfile/
│ │ │ ├── AbstractMappedFile.java
│ │ │ ├── DefaultMappedFile.java
│ │ │ ├── MappedFile.java
│ │ │ └── SharedByteBufferManager.java
│ │ ├── metrics/
│ │ │ ├── DefaultStoreMetricsConstant.java
│ │ │ ├── DefaultStoreMetricsManager.java
│ │ │ ├── RocksDBStoreMetricsManager.java
│ │ │ └── StoreMetricsManager.java
│ │ ├── plugin/
│ │ │ ├── AbstractPluginMessageStore.java
│ │ │ ├── MessageStoreFactory.java
│ │ │ └── MessageStorePluginContext.java
│ │ ├── pop/
│ │ │ ├── AckMsg.java
│ │ │ ├── BatchAckMsg.java
│ │ │ └── PopCheckPoint.java
│ │ ├── queue/
│ │ │ ├── AbstractConsumeQueueStore.java
│ │ │ ├── BatchConsumeQueue.java
│ │ │ ├── BatchOffsetIndex.java
│ │ │ ├── CombineConsumeQueueStore.java
│ │ │ ├── ConsumeQueueInterface.java
│ │ │ ├── ConsumeQueueStore.java
│ │ │ ├── ConsumeQueueStoreInterface.java
│ │ │ ├── CqUnit.java
│ │ │ ├── DispatchEntry.java
│ │ │ ├── FileQueueLifeCycle.java
│ │ │ ├── MultiDispatchUtils.java
│ │ │ ├── OffsetInitializer.java
│ │ │ ├── OffsetInitializerRocksDBImpl.java
│ │ │ ├── QueueOffsetOperator.java
│ │ │ ├── ReferredIterator.java
│ │ │ ├── RocksDBConsumeQueue.java
│ │ │ ├── RocksDBConsumeQueueOffsetTable.java
│ │ │ ├── RocksDBConsumeQueueStore.java
│ │ │ ├── RocksDBConsumeQueueTable.java
│ │ │ ├── RocksGroupCommitService.java
│ │ │ ├── SparseConsumeQueue.java
│ │ │ └── offset/
│ │ │ ├── OffsetEntry.java
│ │ │ └── OffsetEntryType.java
│ │ ├── rocksdb/
│ │ │ ├── ConsumeQueueCompactionFilterFactory.java
│ │ │ ├── ConsumeQueueRocksDBStorage.java
│ │ │ ├── MessageRocksDBStorage.java
│ │ │ └── RocksDBOptionsFactory.java
│ │ ├── stats/
│ │ │ ├── BrokerStats.java
│ │ │ ├── BrokerStatsManager.java
│ │ │ └── LmqBrokerStatsManager.java
│ │ ├── timer/
│ │ │ ├── Slot.java
│ │ │ ├── TimerCheckpoint.java
│ │ │ ├── TimerLog.java
│ │ │ ├── TimerMessageStore.java
│ │ │ ├── TimerMetrics.java
│ │ │ ├── TimerRequest.java
│ │ │ ├── TimerWheel.java
│ │ │ └── rocksdb/
│ │ │ ├── Timeline.java
│ │ │ ├── TimerMessageRocksDBStore.java
│ │ │ └── TimerRocksDBRecord.java
│ │ ├── transaction/
│ │ │ ├── TransMessageRocksDBStore.java
│ │ │ └── TransRocksDBRecord.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
│ │ ├── FlushDiskWatcherTest.java
│ │ ├── GetMessageResultTest.java
│ │ ├── HATest.java
│ │ ├── MappedFileQueueTest.java
│ │ ├── MappedFileTest.java
│ │ ├── MessageExtBrokerInnerTest.java
│ │ ├── MessageStoreStateMachineTest.java
│ │ ├── MultiPathMappedFileQueueTest.java
│ │ ├── ReputMessageServiceTest.java
│ │ ├── RocksDBMessageStoreTest.java
│ │ ├── StoreCheckpointTest.java
│ │ ├── StoreStatsServiceTest.java
│ │ ├── StoreTestBase.java
│ │ ├── StoreTestUtil.java
│ │ ├── dledger/
│ │ │ ├── DLedgerCommitlogTest.java
│ │ │ ├── DLedgerMultiPathTest.java
│ │ │ ├── MessageStoreTestBase.java
│ │ │ └── MixCommitlogTest.java
│ │ ├── ha/
│ │ │ ├── FlowMonitorTest.java
│ │ │ ├── HAClientTest.java
│ │ │ ├── HAServerTest.java
│ │ │ ├── WaitNotifyObjectTest.java
│ │ │ └── autoswitch/
│ │ │ ├── AutoSwitchHATest.java
│ │ │ └── EpochFileCacheTest.java
│ │ ├── index/
│ │ │ ├── IndexFileTest.java
│ │ │ └── IndexServiceTest.java
│ │ ├── kv/
│ │ │ ├── CompactionLogTest.java
│ │ │ ├── CompactionPositionMgrTest.java
│ │ │ └── OffsetMapTest.java
│ │ ├── lock/
│ │ │ ├── AdaptiveBackOffSpinLockImplTest.java
│ │ │ └── AdaptiveLockTest.java
│ │ ├── logfile/
│ │ │ ├── DefaultMappedFileConcurrencyTest.java
│ │ │ ├── DefaultMappedFileErrorHandlingTest.java
│ │ │ ├── DefaultMappedFilePerformanceTest.java
│ │ │ ├── DefaultMappedFileTest.java
│ │ │ └── DefaultMappedFileWriteWithoutMmapTest.java
│ │ ├── pop/
│ │ │ ├── AckMsgTest.java
│ │ │ └── BatchAckMsgTest.java
│ │ ├── queue/
│ │ │ ├── BatchConsumeMessageTest.java
│ │ │ ├── BatchConsumeQueueTest.java
│ │ │ ├── CombineConsumeQueueStoreTest.java
│ │ │ ├── ConsumeQueueStoreTest.java
│ │ │ ├── ConsumeQueueTest.java
│ │ │ ├── QueueTestBase.java
│ │ │ ├── RocksDBConsumeQueueOffsetTableTest.java
│ │ │ ├── RocksDBConsumeQueueTableTest.java
│ │ │ ├── RocksDBConsumeQueueTest.java
│ │ │ └── SparseConsumeQueueTest.java
│ │ ├── rocksdb/
│ │ │ └── RocksDBOptionsFactoryTest.java
│ │ ├── stats/
│ │ │ └── BrokerStatsManagerTest.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
│ │ │ ├── MQMessageFactory.java
│ │ │ ├── MessageFactory.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
│ │ ├── DuplicateMessageInfo.java
│ │ ├── FileUtil.java
│ │ ├── MQAdminTestUtils.java
│ │ ├── MQRandomUtils.java
│ │ ├── MQWait.java
│ │ ├── RandomUtil.java
│ │ ├── RandomUtils.java
│ │ ├── StatUtil.java
│ │ ├── TestUtil.java
│ │ ├── TestUtils.java
│ │ ├── VerifyUtils.java
│ │ ├── data/
│ │ │ └── collect/
│ │ │ ├── DataCollector.java
│ │ │ ├── DataCollectorManager.java
│ │ │ ├── DataFilter.java
│ │ │ └── impl/
│ │ │ ├── ListDataCollectorImpl.java
│ │ │ └── MapDataCollectorImpl.java
│ │ └── parallel/
│ │ ├── ParallelTask.java
│ │ ├── ParallelTaskExecutor.java
│ │ └── Task4Test.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
│ │ │ │ │ ├── PopPriorityIT.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
│ │ │ ├── ScheduleSlaveActingMasterIT.java
│ │ │ ├── ScheduledMessageIT.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
│ │ ├── recall/
│ │ │ ├── RecallWithTraceIT.java
│ │ │ └── SendAndRecallDelayMessageIT.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-proxy-home/
│ │ └── conf/
│ │ ├── broker.conf
│ │ ├── logback_proxy.xml
│ │ └── rmq-proxy.json
│ ├── rmq.logback-test.xml
│ └── schema/
│ ├── api/
│ │ ├── client.consumer.AllocateMessageQueueStrategy.schema
│ │ ├── client.consumer.DefaultLitePullConsumer.schema
│ │ ├── client.consumer.DefaultMQPullConsumer.schema
│ │ ├── client.consumer.DefaultMQPushConsumer.schema
│ │ ├── client.consumer.PullCallback.schema
│ │ ├── client.consumer.PullResult.schema
│ │ ├── client.consumer.PullStatus.schema
│ │ ├── client.consumer.listener.ConsumeConcurrentlyContext.schema
│ │ ├── client.consumer.listener.ConsumeConcurrentlyStatus.schema
│ │ ├── client.consumer.listener.ConsumeOrderlyContext.schema
│ │ ├── client.consumer.listener.ConsumeOrderlyStatus.schema
│ │ ├── client.consumer.listener.MessageListener.schema
│ │ ├── client.consumer.listener.MessageListenerConcurrently.schema
│ │ ├── client.consumer.listener.MessageListenerOrderly.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.Message.schema
│ │ ├── common.message.MessageExt.schema
│ │ ├── common.message.MessageQueue.schema
│ │ ├── remoting.RPCHook.schema
│ │ └── tools.admin.DefaultMQAdminExt.schema
│ └── protocol/
│ ├── common.protocol.RequestCode.schema
│ ├── 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.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.GetConsumeStatsInBrokerHeader.schema
│ ├── common.protocol.header.GetConsumeStatsRequestHeader.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.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.GetTopicStatsInfoRequestHeader.schema
│ ├── common.protocol.header.GetTopicsByClusterRequestHeader.schema
│ ├── common.protocol.header.NotifyConsumerIdsChangedRequestHeader.schema
│ ├── common.protocol.header.PullMessageRequestHeader.schema
│ ├── common.protocol.header.PullMessageResponseHeader.schema
│ ├── common.protocol.header.QueryConsumeQueueRequestHeader.schema
│ ├── common.protocol.header.QueryConsumeTimeSpanRequestHeader.schema
│ ├── common.protocol.header.QueryConsumerOffsetRequestHeader.schema
│ ├── common.protocol.header.QueryConsumerOffsetResponseHeader.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.header.filtersrv.RegisterFilterServerRequestHeader.schema
│ ├── common.protocol.header.filtersrv.RegisterFilterServerResponseHeader.schema
│ ├── common.protocol.header.filtersrv.RegisterMessageFilterClassRequestHeader.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
├── tieredstore/
│ ├── BUILD.bazel
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── tieredstore/
│ │ ├── MessageStoreConfig.java
│ │ ├── MessageStoreExecutor.java
│ │ ├── TieredMessageStore.java
│ │ ├── common/
│ │ │ ├── AppendResult.java
│ │ │ ├── FileSegmentType.java
│ │ │ ├── GetMessageResultExt.java
│ │ │ ├── GroupCommitContext.java
│ │ │ └── SelectBufferResult.java
│ │ ├── core/
│ │ │ ├── MessageStoreDispatcher.java
│ │ │ ├── MessageStoreDispatcherImpl.java
│ │ │ ├── MessageStoreFetcher.java
│ │ │ ├── MessageStoreFetcherImpl.java
│ │ │ ├── MessageStoreFilter.java
│ │ │ └── MessageStoreTopicFilter.java
│ │ ├── exception/
│ │ │ ├── TieredStoreErrorCode.java
│ │ │ └── TieredStoreException.java
│ │ ├── file/
│ │ │ ├── FlatAppendFile.java
│ │ │ ├── FlatCommitLogFile.java
│ │ │ ├── FlatConsumeQueueFile.java
│ │ │ ├── FlatFileFactory.java
│ │ │ ├── FlatFileInterface.java
│ │ │ ├── FlatFileStore.java
│ │ │ └── FlatMessageFile.java
│ │ ├── index/
│ │ │ ├── IndexFile.java
│ │ │ ├── IndexItem.java
│ │ │ ├── IndexService.java
│ │ │ ├── IndexStoreFile.java
│ │ │ └── IndexStoreService.java
│ │ ├── metadata/
│ │ │ ├── DefaultMetadataStore.java
│ │ │ ├── MetadataStore.java
│ │ │ └── entity/
│ │ │ ├── FileSegmentMetadata.java
│ │ │ ├── QueueMetadata.java
│ │ │ └── TopicMetadata.java
│ │ ├── metrics/
│ │ │ ├── TieredStoreMetricsConstant.java
│ │ │ └── TieredStoreMetricsManager.java
│ │ ├── provider/
│ │ │ ├── FileSegment.java
│ │ │ ├── FileSegmentFactory.java
│ │ │ ├── FileSegmentProvider.java
│ │ │ ├── MemoryFileSegment.java
│ │ │ └── PosixFileSegment.java
│ │ ├── stream/
│ │ │ ├── CommitLogInputStream.java
│ │ │ ├── FileSegmentInputStream.java
│ │ │ └── FileSegmentInputStreamFactory.java
│ │ └── util/
│ │ ├── MessageFormatUtil.java
│ │ └── MessageStoreUtil.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── tieredstore/
│ │ ├── TieredMessageStoreTest.java
│ │ ├── common/
│ │ │ ├── FileSegmentTypeTest.java
│ │ │ ├── GetMessageResultExtTest.java
│ │ │ ├── GroupCommitContextTest.java
│ │ │ └── SelectBufferResultTest.java
│ │ ├── core/
│ │ │ ├── MessageStoreDispatcherImplTest.java
│ │ │ ├── MessageStoreFetcherImplTest.java
│ │ │ └── MessageStoreTopicFilterTest.java
│ │ ├── exception/
│ │ │ └── TieredStoreExceptionTest.java
│ │ ├── file/
│ │ │ ├── FlatAppendFileTest.java
│ │ │ ├── FlatCommitLogFileTest.java
│ │ │ ├── FlatFileFactoryTest.java
│ │ │ ├── FlatFileStoreTest.java
│ │ │ └── FlatMessageFileTest.java
│ │ ├── index/
│ │ │ ├── IndexItemTest.java
│ │ │ ├── IndexStoreFileTest.java
│ │ │ ├── IndexStoreServiceBenchTest.java
│ │ │ └── IndexStoreServiceTest.java
│ │ ├── metadata/
│ │ │ └── DefaultMetadataStoreTest.java
│ │ ├── metrics/
│ │ │ └── TieredStoreMetricsManagerTest.java
│ │ ├── provider/
│ │ │ ├── FileSegmentFactoryTest.java
│ │ │ ├── FileSegmentTest.java
│ │ │ └── MemoryFileSegmentTest.java
│ │ ├── stream/
│ │ │ └── FileSegmentInputStreamTest.java
│ │ └── util/
│ │ ├── MessageFormatUtilTest.java
│ │ └── MessageStoreUtilTest.java
│ └── resources/
│ └── rmq.logback-test.xml
└── tools/
├── BUILD.bazel
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── org/
│ │ └── apache/
│ │ └── rocketmq/
│ │ └── tools/
│ │ ├── admin/
│ │ │ ├── DefaultMQAdminExt.java
│ │ │ ├── DefaultMQAdminExtImpl.java
│ │ │ ├── MQAdminExt.java
│ │ │ ├── MQAdminUtils.java
│ │ │ ├── api/
│ │ │ │ ├── BrokerOperatorResult.java
│ │ │ │ ├── MessageTrack.java
│ │ │ │ └── TrackType.java
│ │ │ └── common/
│ │ │ ├── AdminToolHandler.java
│ │ │ ├── AdminToolResult.java
│ │ │ └── AdminToolsResultCodeEnum.java
│ │ ├── command/
│ │ │ ├── CommandUtil.java
│ │ │ ├── MQAdminStartup.java
│ │ │ ├── SubCommand.java
│ │ │ ├── SubCommandException.java
│ │ │ ├── auth/
│ │ │ │ ├── CopyAclsSubCommand.java
│ │ │ │ ├── CopyUsersSubCommand.java
│ │ │ │ ├── CreateAclSubCommand.java
│ │ │ │ ├── CreateUserSubCommand.java
│ │ │ │ ├── DeleteAclSubCommand.java
│ │ │ │ ├── DeleteUserSubCommand.java
│ │ │ │ ├── GetAclSubCommand.java
│ │ │ │ ├── GetUserSubCommand.java
│ │ │ │ ├── ListAclSubCommand.java
│ │ │ │ ├── ListUserSubCommand.java
│ │ │ │ ├── UpdateAclSubCommand.java
│ │ │ │ └── UpdateUserSubCommand.java
│ │ │ ├── broker/
│ │ │ │ ├── BrokerConsumeStatsSubCommand.java
│ │ │ │ ├── BrokerStatusSubCommand.java
│ │ │ │ ├── CleanExpiredCQSubCommand.java
│ │ │ │ ├── CleanUnusedTopicCommand.java
│ │ │ │ ├── CommitLogSetReadAheadSubCommand.java
│ │ │ │ ├── DeleteExpiredCommitLogSubCommand.java
│ │ │ │ ├── GetBrokerConfigCommand.java
│ │ │ │ ├── GetBrokerEpochSubCommand.java
│ │ │ │ ├── GetColdDataFlowCtrInfoSubCommand.java
│ │ │ │ ├── RemoveColdDataFlowCtrGroupConfigSubCommand.java
│ │ │ │ ├── ResetMasterFlushOffsetSubCommand.java
│ │ │ │ ├── SendMsgStatusCommand.java
│ │ │ │ ├── SwitchTimerEngineSubCommand.java
│ │ │ │ ├── UpdateBrokerConfigSubCommand.java
│ │ │ │ └── UpdateColdDataFlowCtrGroupConfigSubCommand.java
│ │ │ ├── cluster/
│ │ │ │ ├── CLusterSendMsgRTCommand.java
│ │ │ │ └── ClusterListSubCommand.java
│ │ │ ├── connection/
│ │ │ │ ├── ConsumerConnectionSubCommand.java
│ │ │ │ └── ProducerConnectionSubCommand.java
│ │ │ ├── consumer/
│ │ │ │ ├── ConsumerProgressSubCommand.java
│ │ │ │ ├── ConsumerStatusSubCommand.java
│ │ │ │ ├── ConsumerSubCommand.java
│ │ │ │ ├── DeleteSubscriptionGroupCommand.java
│ │ │ │ ├── GetConsumerConfigSubCommand.java
│ │ │ │ ├── SetConsumeModeSubCommand.java
│ │ │ │ ├── StartMonitoringSubCommand.java
│ │ │ │ ├── UpdateSubGroupListSubCommand.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
│ │ │ │ └── ExportPopRecordCommand.java
│ │ │ ├── ha/
│ │ │ │ ├── GetSyncStateSetSubCommand.java
│ │ │ │ └── HAStatusSubCommand.java
│ │ │ ├── lite/
│ │ │ │ ├── GetBrokerLiteInfoSubCommand.java
│ │ │ │ ├── GetLiteClientInfoSubCommand.java
│ │ │ │ ├── GetLiteGroupInfoSubCommand.java
│ │ │ │ ├── GetLiteTopicInfoSubCommand.java
│ │ │ │ ├── GetParentTopicInfoSubCommand.java
│ │ │ │ └── TriggerLiteDispatchSubCommand.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
│ │ │ ├── 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/
│ │ │ │ ├── CheckRocksdbCqWriteProgressCommand.java
│ │ │ │ └── QueryConsumeQueueCommand.java
│ │ │ ├── stats/
│ │ │ │ └── StatsAllSubCommand.java
│ │ │ └── topic/
│ │ │ ├── AllocateMQSubCommand.java
│ │ │ ├── DeleteTopicSubCommand.java
│ │ │ ├── RebalanceResult.java
│ │ │ ├── RemappingStaticTopicSubCommand.java
│ │ │ ├── TopicClusterSubCommand.java
│ │ │ ├── TopicListSubCommand.java
│ │ │ ├── TopicRouteSubCommand.java
│ │ │ ├── TopicStatusSubCommand.java
│ │ │ ├── UpdateOrderConfCommand.java
│ │ │ ├── UpdateStaticTopicSubCommand.java
│ │ │ ├── UpdateTopicListSubCommand.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/
│ │ ├── DefaultMQAdminExtImplTest.java
│ │ └── DefaultMQAdminExtTest.java
│ ├── command/
│ │ ├── CommandUtilTest.java
│ │ ├── broker/
│ │ │ ├── BrokerConsumeStatsSubCommandTest.java
│ │ │ ├── BrokerStatusSubCommandTest.java
│ │ │ ├── CleanExpiredCQSubCommandTest.java
│ │ │ ├── CleanUnusedTopicCommandTest.java
│ │ │ ├── DeleteExpiredCommitLogSubCommandTest.java
│ │ │ ├── GetBrokerConfigCommandTest.java
│ │ │ ├── SendMsgStatusCommandTest.java
│ │ │ ├── SwitchTimerEngineSubCommandTest.java
│ │ │ └── UpdateBrokerConfigSubCommandTest.java
│ │ ├── connection/
│ │ │ ├── ConsumerConnectionSubCommandTest.java
│ │ │ └── ProducerConnectionSubCommandTest.java
│ │ ├── consumer/
│ │ │ ├── ConsumerProgressSubCommandTest.java
│ │ │ ├── ConsumerStatusSubCommandTest.java
│ │ │ ├── GetConsumerConfigSubCommandTest.java
│ │ │ └── UpdateSubGroupListSubCommandTest.java
│ │ ├── lite/
│ │ │ ├── GetBrokerLiteInfoSubCommandTest.java
│ │ │ └── GetLiteClientInfoSubCommandTest.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/
│ │
Showing preview only (2,103K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (23420 symbols across 1994 files)
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/AuthenticationEvaluator.java
class AuthenticationEvaluator (line 25) | public class AuthenticationEvaluator {
method AuthenticationEvaluator (line 29) | public AuthenticationEvaluator(AuthConfig authConfig) {
method AuthenticationEvaluator (line 33) | public AuthenticationEvaluator(AuthConfig authConfig, Supplier<?> meta...
method evaluate (line 37) | public void evaluate(AuthenticationContext context) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/AuthenticationContextBuilder.java
type AuthenticationContextBuilder (line 24) | public interface AuthenticationContextBuilder<AuthenticationContext> {
method build (line 26) | AuthenticationContext build(Metadata metadata, GeneratedMessageV3 requ...
method build (line 28) | AuthenticationContext build(ChannelHandlerContext context, RemotingCom...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/DefaultAuthenticationContextBuilder.java
class DefaultAuthenticationContextBuilder (line 42) | public class DefaultAuthenticationContextBuilder implements Authenticati...
method build (line 47) | @Override
method build (line 98) | @Override
method hexToBase64 (line 127) | public String hexToBase64(String input) throws DecoderException {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/chain/DefaultAuthenticationHandler.java
class DefaultAuthenticationHandler (line 34) | public class DefaultAuthenticationHandler implements Handler<DefaultAuth...
method DefaultAuthenticationHandler (line 38) | public DefaultAuthenticationHandler(AuthConfig config, Supplier<?> met...
method handle (line 42) | @Override
method getUser (line 48) | protected CompletableFuture<User> getUser(DefaultAuthenticationContext...
method doAuthenticate (line 58) | protected void doAuthenticate(DefaultAuthenticationContext context, Us...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/context/AuthenticationContext.java
class AuthenticationContext (line 23) | public abstract class AuthenticationContext {
method getChannelId (line 31) | public String getChannelId() {
method setChannelId (line 35) | public void setChannelId(String channelId) {
method getRpcCode (line 39) | public String getRpcCode() {
method setRpcCode (line 43) | public void setRpcCode(String rpcCode) {
method getExtInfo (line 47) | @SuppressWarnings("unchecked")
method setExtInfo (line 62) | public void setExtInfo(String key, Object value) {
method hasExtInfo (line 72) | public boolean hasExtInfo(String key) {
method getExtInfo (line 77) | public Map<String, Object> getExtInfo() {
method setExtInfo (line 81) | public void setExtInfo(Map<String, Object> extInfo) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/context/DefaultAuthenticationContext.java
class DefaultAuthenticationContext (line 19) | public class DefaultAuthenticationContext extends AuthenticationContext {
method getUsername (line 27) | public String getUsername() {
method setUsername (line 31) | public void setUsername(String username) {
method getContent (line 35) | public byte[] getContent() {
method setContent (line 39) | public void setContent(byte[] content) {
method getSignature (line 43) | public String getSignature() {
method setSignature (line 47) | public void setSignature(String signature) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/enums/SubjectType.java
type SubjectType (line 22) | public enum SubjectType {
method SubjectType (line 30) | SubjectType(byte code, String name) {
method getByName (line 35) | public static SubjectType getByName(String name) {
method getCode (line 44) | public byte getCode() {
method getName (line 48) | public String getName() {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/enums/UserStatus.java
type UserStatus (line 22) | public enum UserStatus {
method UserStatus (line 33) | UserStatus(byte code, String name) {
method getByName (line 38) | public static UserStatus getByName(String name) {
method getCode (line 47) | public byte getCode() {
method getName (line 51) | public String getName() {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/enums/UserType.java
type UserType (line 22) | public enum UserType {
method UserType (line 33) | UserType(byte code, String name) {
method getByName (line 38) | public static UserType getByName(String name) {
method getCode (line 47) | public byte getCode() {
method getName (line 51) | public String getName() {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/exception/AuthenticationException.java
class AuthenticationException (line 21) | public class AuthenticationException extends RuntimeException {
method AuthenticationException (line 23) | public AuthenticationException(String message) {
method AuthenticationException (line 27) | public AuthenticationException(String message, Throwable cause) {
method AuthenticationException (line 31) | public AuthenticationException(String messagePattern, Object... argArr...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/factory/AuthenticationFactory.java
class AuthenticationFactory (line 39) | public class AuthenticationFactory {
method getProvider (line 46) | @SuppressWarnings("unchecked")
method getMetadataProvider (line 65) | public static AuthenticationMetadataProvider getMetadataProvider(AuthC...
method getMetadataManager (line 69) | public static AuthenticationMetadataManager getMetadataManager(AuthCon...
method getMetadataProvider (line 73) | @SuppressWarnings("unchecked")
method getEvaluator (line 94) | public static AuthenticationEvaluator getEvaluator(AuthConfig config) {
method getEvaluator (line 98) | public static AuthenticationEvaluator getEvaluator(AuthConfig config, ...
method getStrategy (line 102) | @SuppressWarnings("unchecked")
method newContext (line 115) | public static AuthenticationContext newContext(AuthConfig config, Meta...
method newContext (line 123) | public static AuthenticationContext newContext(AuthConfig config, Chan...
method computeIfAbsent (line 132) | @SuppressWarnings("unchecked")
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/manager/AuthenticationMetadataManager.java
type AuthenticationMetadataManager (line 24) | public interface AuthenticationMetadataManager {
method shutdown (line 26) | void shutdown();
method initUser (line 28) | void initUser(AuthConfig authConfig);
method createUser (line 30) | CompletableFuture<Void> createUser(User user);
method updateUser (line 32) | CompletableFuture<Void> updateUser(User user);
method deleteUser (line 34) | CompletableFuture<Void> deleteUser(String username);
method getUser (line 36) | CompletableFuture<User> getUser(String username);
method listUser (line 38) | CompletableFuture<List<User>> listUser(String filter);
method isSuperUser (line 40) | CompletableFuture<Boolean> isSuperUser(String username);
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/manager/AuthenticationMetadataManagerImpl.java
class AuthenticationMetadataManagerImpl (line 35) | public class AuthenticationMetadataManagerImpl implements Authentication...
method AuthenticationMetadataManagerImpl (line 41) | public AuthenticationMetadataManagerImpl(AuthConfig authConfig) {
method shutdown (line 47) | @Override
method initUser (line 57) | @Override
method createUser (line 92) | @Override
method updateUser (line 115) | @Override
method deleteUser (line 141) | @Override
method getUser (line 157) | @Override
method listUser (line 171) | @Override
method isSuperUser (line 182) | @Override
method validate (line 192) | private void validate(User user, boolean isCreate) {
method handleException (line 204) | private void handleException(Exception e, CompletableFuture<?> result) {
method getAuthenticationMetadataProvider (line 209) | private AuthenticationMetadataProvider getAuthenticationMetadataProvid...
method getAuthorizationMetadataProvider (line 216) | private AuthorizationMetadataProvider getAuthorizationMetadataProvider...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/model/Subject.java
type Subject (line 24) | public interface Subject {
method getSubjectKey (line 26) | @JSONField(serialize = false)
method getSubjectType (line 29) | SubjectType getSubjectType();
method isSubject (line 31) | default boolean isSubject(SubjectType subjectType) {
method of (line 35) | @SuppressWarnings("unchecked")
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/model/User.java
class User (line 24) | public class User implements Subject {
method of (line 34) | public static User of(String username) {
method of (line 40) | public static User of(String username, String password) {
method of (line 47) | public static User of(String username, String password, UserType userT...
method getSubjectKey (line 55) | @Override
method getSubjectType (line 60) | @Override
method getUsername (line 65) | public String getUsername() {
method setUsername (line 69) | public void setUsername(String username) {
method getPassword (line 73) | public String getPassword() {
method setPassword (line 77) | public void setPassword(String password) {
method getUserType (line 81) | public UserType getUserType() {
method setUserType (line 85) | public void setUserType(UserType userType) {
method getUserStatus (line 89) | public UserStatus getUserStatus() {
method setUserStatus (line 93) | public void setUserStatus(UserStatus userStatus) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/AuthenticationMetadataProvider.java
type AuthenticationMetadataProvider (line 25) | public interface AuthenticationMetadataProvider {
method initialize (line 27) | void initialize(AuthConfig authConfig, Supplier<?> metadataService);
method shutdown (line 29) | void shutdown();
method createUser (line 31) | CompletableFuture<Void> createUser(User user);
method deleteUser (line 33) | CompletableFuture<Void> deleteUser(String username);
method updateUser (line 35) | CompletableFuture<Void> updateUser(User user);
method getUser (line 37) | CompletableFuture<User> getUser(String username);
method listUser (line 39) | CompletableFuture<List<User>> listUser(String filter);
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/AuthenticationProvider.java
type AuthenticationProvider (line 27) | public interface AuthenticationProvider<AuthenticationContext> {
method initialize (line 29) | void initialize(AuthConfig config, Supplier<?> metadataService);
method authenticate (line 31) | CompletableFuture<Void> authenticate(AuthenticationContext context);
method newContext (line 33) | AuthenticationContext newContext(Metadata metadata, GeneratedMessageV3...
method newContext (line 35) | AuthenticationContext newContext(ChannelHandlerContext context, Remoti...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/DefaultAuthenticationProvider.java
class DefaultAuthenticationProvider (line 36) | public class DefaultAuthenticationProvider implements AuthenticationProv...
method initialize (line 43) | @Override
method authenticate (line 50) | @Override
method newContext (line 56) | @Override
method newContext (line 61) | @Override
method newHandlerChain (line 66) | protected HandlerChain<DefaultAuthenticationContext, CompletableFuture...
method doAuditLog (line 71) | protected void doAuditLog(DefaultAuthenticationContext context, Throwa...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/LocalAuthenticationMetadataProvider.java
class LocalAuthenticationMetadataProvider (line 40) | public class LocalAuthenticationMetadataProvider implements Authenticati...
method initialize (line 51) | @Override
method createUser (line 75) | @Override
method deleteUser (line 89) | @Override
method updateUser (line 101) | @Override
method getUser (line 115) | @Override
method listUser (line 124) | @Override
method shutdown (line 144) | @Override
class UserCacheLoader (line 154) | private static class UserCacheLoader implements CacheLoader<String, Us...
method UserCacheLoader (line 158) | public UserCacheLoader(ConfigRocksDBStorage storage) {
method load (line 162) | @Override
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/AbstractAuthenticationStrategy.java
class AbstractAuthenticationStrategy (line 30) | public abstract class AbstractAuthenticationStrategy implements Authenti...
method AbstractAuthenticationStrategy (line 36) | public AbstractAuthenticationStrategy(AuthConfig authConfig, Supplier<...
method doEvaluate (line 50) | protected void doEvaluate(AuthenticationContext context) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/AuthenticationStrategy.java
type AuthenticationStrategy (line 21) | public interface AuthenticationStrategy {
method evaluate (line 23) | void evaluate(AuthenticationContext context);
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/StatefulAuthenticationStrategy.java
class StatefulAuthenticationStrategy (line 31) | public class StatefulAuthenticationStrategy extends AbstractAuthenticati...
method StatefulAuthenticationStrategy (line 35) | public StatefulAuthenticationStrategy(AuthConfig authConfig, Supplier<...
method evaluate (line 43) | @Override
method buildKey (line 62) | private String buildKey(AuthenticationContext context) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/StatelessAuthenticationStrategy.java
class StatelessAuthenticationStrategy (line 23) | public class StatelessAuthenticationStrategy extends AbstractAuthenticat...
method StatelessAuthenticationStrategy (line 25) | public StatelessAuthenticationStrategy(AuthConfig authConfig, Supplier...
method evaluate (line 29) | @Override
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/AuthorizationEvaluator.java
class AuthorizationEvaluator (line 27) | public class AuthorizationEvaluator {
method AuthorizationEvaluator (line 31) | public AuthorizationEvaluator(AuthConfig authConfig) {
method AuthorizationEvaluator (line 35) | public AuthorizationEvaluator(AuthConfig authConfig, Supplier<?> metad...
method evaluate (line 39) | public void evaluate(List<AuthorizationContext> contexts) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/AuthorizationContextBuilder.java
type AuthorizationContextBuilder (line 26) | public interface AuthorizationContextBuilder {
method build (line 28) | List<DefaultAuthorizationContext> build(Metadata metadata, GeneratedMe...
method build (line 30) | List<DefaultAuthorizationContext> build(ChannelHandlerContext context,...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java
class DefaultAuthorizationContextBuilder (line 81) | public class DefaultAuthorizationContextBuilder implements Authorization...
method DefaultAuthorizationContextBuilder (line 94) | public DefaultAuthorizationContextBuilder(AuthConfig authConfig) {
method build (line 99) | @Override
method build (line 177) | @Override
method buildContextByAnnotation (line 343) | private List<DefaultAuthorizationContext> buildContextByAnnotation(Sub...
method newContext (line 404) | private List<DefaultAuthorizationContext> newContext(Metadata metadata...
method newContext (line 419) | private static List<DefaultAuthorizationContext> newContext(Metadata m...
method isConsumerClientType (line 443) | private boolean isConsumerClientType(ClientType clientType) {
method newPubContext (line 447) | private static List<DefaultAuthorizationContext> newPubContext(Metadat...
method newSubContexts (line 461) | private List<DefaultAuthorizationContext> newSubContexts(Metadata meta...
method newTopicSubContexts (line 469) | private static List<DefaultAuthorizationContext> newTopicSubContexts(M...
method newGroupSubContexts (line 474) | private static List<DefaultAuthorizationContext> newGroupSubContexts(M...
method newSubContexts (line 479) | private static List<DefaultAuthorizationContext> newSubContexts(Metada...
method newSubContexts (line 496) | private static List<DefaultAuthorizationContext> newSubContexts(Metada...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/chain/AclAuthorizationHandler.java
class AclAuthorizationHandler (line 42) | public class AclAuthorizationHandler implements Handler<DefaultAuthoriza...
method AclAuthorizationHandler (line 46) | public AclAuthorizationHandler(AuthConfig config) {
method AclAuthorizationHandler (line 50) | public AclAuthorizationHandler(AuthConfig config, Supplier<?> metadata...
method handle (line 54) | @Override
method matchPolicyEntries (line 80) | private PolicyEntry matchPolicyEntries(DefaultAuthorizationContext con...
method matchPolicyEntries (line 110) | private List<PolicyEntry> matchPolicyEntries(DefaultAuthorizationConte...
method comparePolicyEntries (line 121) | private int comparePolicyEntries(PolicyEntry o1, PolicyEntry o2) {
method throwException (line 164) | private static void throwException(DefaultAuthorizationContext context...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/chain/UserAuthorizationHandler.java
class UserAuthorizationHandler (line 34) | public class UserAuthorizationHandler implements Handler<DefaultAuthoriz...
method UserAuthorizationHandler (line 38) | public UserAuthorizationHandler(AuthConfig config, Supplier<?> metadat...
method handle (line 42) | @Override
method getUser (line 55) | private CompletableFuture<User> getUser(Subject subject) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/context/AuthorizationContext.java
class AuthorizationContext (line 23) | public abstract class AuthorizationContext {
method getExtInfo (line 31) | @SuppressWarnings("unchecked")
method setExtInfo (line 46) | public void setExtInfo(String key, Object value) {
method hasExtInfo (line 56) | public boolean hasExtInfo(String key) {
method getChannelId (line 61) | public String getChannelId() {
method setChannelId (line 65) | public void setChannelId(String channelId) {
method getRpcCode (line 69) | public String getRpcCode() {
method setRpcCode (line 73) | public void setRpcCode(String rpcCode) {
method getExtInfo (line 77) | public Map<String, Object> getExtInfo() {
method setExtInfo (line 81) | public void setExtInfo(Map<String, Object> extInfo) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/context/DefaultAuthorizationContext.java
class DefaultAuthorizationContext (line 25) | public class DefaultAuthorizationContext extends AuthorizationContext {
method of (line 35) | public static DefaultAuthorizationContext of(Subject subject, Resource...
method of (line 44) | public static DefaultAuthorizationContext of(Subject subject, Resource...
method getSubjectKey (line 53) | public String getSubjectKey() {
method getResourceKey (line 57) | public String getResourceKey() {
method getSubject (line 61) | public Subject getSubject() {
method setSubject (line 65) | public void setSubject(Subject subject) {
method getResource (line 69) | public Resource getResource() {
method setResource (line 73) | public void setResource(Resource resource) {
method getActions (line 77) | public List<Action> getActions() {
method setActions (line 81) | public void setActions(List<Action> actions) {
method getSourceIp (line 85) | public String getSourceIp() {
method setSourceIp (line 89) | public void setSourceIp(String sourceIp) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/enums/Decision.java
type Decision (line 22) | public enum Decision {
method Decision (line 32) | Decision(byte code, String name) {
method getByName (line 37) | public static Decision getByName(String name) {
method getCode (line 46) | public byte getCode() {
method getName (line 50) | public String getName() {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/enums/PolicyType.java
type PolicyType (line 22) | public enum PolicyType {
method PolicyType (line 32) | PolicyType(byte code, String name) {
method getByName (line 37) | public static PolicyType getByName(String name) {
method getCode (line 46) | public byte getCode() {
method getName (line 50) | public String getName() {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/exception/AuthorizationException.java
class AuthorizationException (line 21) | public class AuthorizationException extends RuntimeException {
method AuthorizationException (line 23) | public AuthorizationException(String message) {
method AuthorizationException (line 27) | public AuthorizationException(String message, Throwable cause) {
method AuthorizationException (line 31) | public AuthorizationException(String messagePattern, Object... argArra...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/factory/AuthorizationFactory.java
class AuthorizationFactory (line 40) | public class AuthorizationFactory {
method getProvider (line 47) | @SuppressWarnings("unchecked")
method getMetadataProvider (line 67) | public static AuthorizationMetadataProvider getMetadataProvider(AuthCo...
method getMetadataManager (line 71) | public static AuthorizationMetadataManager getMetadataManager(AuthConf...
method getMetadataProvider (line 75) | @SuppressWarnings("unchecked")
method getEvaluator (line 96) | public static AuthorizationEvaluator getEvaluator(AuthConfig config) {
method getEvaluator (line 100) | public static AuthorizationEvaluator getEvaluator(AuthConfig config, S...
method getStrategy (line 104) | @SuppressWarnings("unchecked")
method newContexts (line 117) | public static List<AuthorizationContext> newContexts(AuthConfig config...
method newContexts (line 126) | public static List<AuthorizationContext> newContexts(AuthConfig config...
method computeIfAbsent (line 135) | @SuppressWarnings("unchecked")
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/manager/AuthorizationMetadataManager.java
type AuthorizationMetadataManager (line 26) | public interface AuthorizationMetadataManager {
method shutdown (line 28) | void shutdown();
method createAcl (line 30) | CompletableFuture<Void> createAcl(Acl acl);
method updateAcl (line 32) | CompletableFuture<Void> updateAcl(Acl acl);
method deleteAcl (line 34) | CompletableFuture<Void> deleteAcl(Subject subject);
method deleteAcl (line 36) | CompletableFuture<Void> deleteAcl(Subject subject, PolicyType policyTy...
method getAcl (line 38) | CompletableFuture<Acl> getAcl(Subject subject);
method listAcl (line 40) | CompletableFuture<List<Acl>> listAcl(String subjectFilter, String reso...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/manager/AuthorizationMetadataManagerImpl.java
class AuthorizationMetadataManagerImpl (line 42) | public class AuthorizationMetadataManagerImpl implements AuthorizationMe...
method AuthorizationMetadataManagerImpl (line 48) | public AuthorizationMetadataManagerImpl(AuthConfig authConfig) {
method shutdown (line 53) | @Override
method createAcl (line 63) | @Override
method updateAcl (line 96) | @Override
method deleteAcl (line 129) | @Override
method deleteAcl (line 134) | @Override
method getAcl (line 177) | @Override
method listAcl (line 201) | @Override
method initAcl (line 206) | private static void initAcl(Acl acl) {
method validate (line 214) | private void validate(Acl acl) {
method validate (line 228) | private void validate(Policy policy) {
method validate (line 238) | private void validate(PolicyEntry entry) {
method handleException (line 271) | private <T> CompletableFuture<T> handleException(Exception e) {
method getAuthenticationMetadataProvider (line 278) | private AuthenticationMetadataProvider getAuthenticationMetadataProvid...
method getAuthorizationMetadataProvider (line 285) | private AuthorizationMetadataProvider getAuthorizationMetadataProvider...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/model/Acl.java
class Acl (line 28) | public class Acl {
method of (line 34) | public static Acl of(Subject subject, Policy policy) {
method of (line 38) | public static Acl of(Subject subject, List<Policy> policies) {
method of (line 45) | public static Acl of(Subject subject, List<Resource> resources, List<A...
method updatePolicy (line 54) | public void updatePolicy(Policy policy) {
method updatePolicy (line 58) | public void updatePolicy(List<Policy> policies) {
method deletePolicy (line 72) | public void deletePolicy(PolicyType policyType, Resource resource) {
method getPolicy (line 83) | public Policy getPolicy(PolicyType policyType) {
method getSubject (line 95) | public Subject getSubject() {
method setSubject (line 99) | public void setSubject(Subject subject) {
method getPolicies (line 103) | public List<Policy> getPolicies() {
method setPolicies (line 107) | public void setPolicies(List<Policy> policies) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/model/Environment.java
class Environment (line 25) | public class Environment {
method of (line 29) | public static Environment of(String sourceIp) {
method of (line 36) | public static Environment of(List<String> sourceIps) {
method isMatch (line 45) | public boolean isMatch(Environment environment) {
method getSourceIps (line 61) | public List<String> getSourceIps() {
method setSourceIps (line 65) | public void setSourceIps(List<String> sourceIps) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/model/Policy.java
class Policy (line 28) | public class Policy {
method of (line 34) | public static Policy of(List<Resource> resources, List<Action> actions...
method of (line 39) | public static Policy of(PolicyType policyType, List<Resource> resource...
method of (line 51) | public static Policy of(PolicyType type, List<PolicyEntry> entries) {
method updateEntry (line 58) | public void updateEntry(List<PolicyEntry> newEntries) {
method deleteEntry (line 72) | public void deleteEntry(Resource resources) {
method getEntry (line 79) | private PolicyEntry getEntry(Resource resource) {
method getPolicyType (line 91) | public PolicyType getPolicyType() {
method setPolicyType (line 95) | public void setPolicyType(PolicyType policyType) {
method getEntries (line 99) | public List<PolicyEntry> getEntries() {
method setEntries (line 103) | public void setEntries(List<PolicyEntry> entries) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/model/PolicyEntry.java
class PolicyEntry (line 25) | public class PolicyEntry {
method of (line 35) | public static PolicyEntry of(Resource resource, List<Action> actions, ...
method updateEntry (line 44) | public void updateEntry(List<Action> actions, Environment environment,
method isMatchResource (line 51) | public boolean isMatchResource(Resource resource) {
method isMatchAction (line 55) | public boolean isMatchAction(List<Action> actions) {
method isMatchEnvironment (line 67) | public boolean isMatchEnvironment(Environment environment) {
method toResourceStr (line 74) | public String toResourceStr() {
method toActionsStr (line 81) | public List<String> toActionsStr() {
method getResource (line 89) | public Resource getResource() {
method setResource (line 93) | public void setResource(Resource resource) {
method getActions (line 97) | public List<Action> getActions() {
method setActions (line 101) | public void setActions(List<Action> actions) {
method getEnvironment (line 105) | public Environment getEnvironment() {
method setEnvironment (line 109) | public void setEnvironment(Environment environment) {
method getDecision (line 113) | public Decision getDecision() {
method setDecision (line 117) | public void setDecision(Decision decision) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/model/RequestContext.java
class RequestContext (line 22) | public class RequestContext {
method getSubject (line 32) | public Subject getSubject() {
method setSubject (line 36) | public void setSubject(Subject subject) {
method getResource (line 40) | public Resource getResource() {
method setResource (line 44) | public void setResource(Resource resource) {
method getAction (line 48) | public Action getAction() {
method setAction (line 52) | public void setAction(Action action) {
method getSourceIp (line 56) | public String getSourceIp() {
method setSourceIp (line 60) | public void setSourceIp(String sourceIp) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/model/Resource.java
class Resource (line 30) | public class Resource {
method ofCluster (line 38) | public static Resource ofCluster(String clusterName) {
method ofTopic (line 42) | public static Resource ofTopic(String topicName) {
method ofGroup (line 46) | public static Resource ofGroup(String groupName) {
method of (line 53) | public static Resource of(ResourceType resourceType, String resourceNa...
method of (line 61) | public static List<Resource> of(List<String> resourceKeys) {
method of (line 68) | public static Resource of(String resourceKey) {
method getResourceKey (line 92) | @JSONField(serialize = false)
method isMatch (line 109) | public boolean isMatch(Resource resource) {
method equals (line 128) | @Override
method hashCode (line 140) | @Override
method getResourceType (line 145) | public ResourceType getResourceType() {
method setResourceType (line 149) | public void setResourceType(ResourceType resourceType) {
method getResourceName (line 153) | public String getResourceName() {
method setResourceName (line 157) | public void setResourceName(String resourceName) {
method getResourcePattern (line 161) | public ResourcePattern getResourcePattern() {
method setResourcePattern (line 165) | public void setResourcePattern(ResourcePattern resourcePattern) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/provider/AuthorizationMetadataProvider.java
type AuthorizationMetadataProvider (line 26) | public interface AuthorizationMetadataProvider {
method initialize (line 28) | void initialize(AuthConfig authConfig, Supplier<?> metadataService);
method shutdown (line 30) | void shutdown();
method createAcl (line 32) | CompletableFuture<Void> createAcl(Acl acl);
method deleteAcl (line 34) | CompletableFuture<Void> deleteAcl(Subject subject);
method updateAcl (line 36) | CompletableFuture<Void> updateAcl(Acl acl);
method getAcl (line 38) | CompletableFuture<Acl> getAcl(Subject subject);
method listAcl (line 40) | CompletableFuture<List<Acl>> listAcl(String subjectFilter, String reso...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/provider/AuthorizationProvider.java
type AuthorizationProvider (line 28) | public interface AuthorizationProvider<AuthorizationContext> {
method initialize (line 30) | void initialize(AuthConfig config);
method initialize (line 32) | void initialize(AuthConfig config, Supplier<?> metadataService);
method authorize (line 34) | CompletableFuture<Void> authorize(AuthorizationContext context);
method newContexts (line 36) | List<AuthorizationContext> newContexts(Metadata metadata, GeneratedMes...
method newContexts (line 38) | List<AuthorizationContext> newContexts(ChannelHandlerContext context, ...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/provider/DefaultAuthorizationProvider.java
class DefaultAuthorizationProvider (line 40) | public class DefaultAuthorizationProvider implements AuthorizationProvid...
method initialize (line 47) | @Override
method initialize (line 52) | @Override
method authorize (line 59) | @Override
method newContexts (line 65) | @Override
method newContexts (line 70) | @Override
method newHandlerChain (line 75) | protected HandlerChain<DefaultAuthorizationContext, CompletableFuture<...
method doAuditLog (line 81) | protected void doAuditLog(DefaultAuthorizationContext context, Throwab...
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/provider/LocalAuthorizationMetadataProvider.java
class LocalAuthorizationMetadataProvider (line 45) | public class LocalAuthorizationMetadataProvider implements Authorization...
method initialize (line 56) | @Override
method createAcl (line 79) | @Override
method deleteAcl (line 94) | @Override
method updateAcl (line 107) | @Override
method getAcl (line 122) | @Override
method listAcl (line 131) | @Override
method shutdown (line 172) | @Override
class AclCacheLoader (line 182) | private static class AclCacheLoader implements CacheLoader<String, Acl> {
method AclCacheLoader (line 186) | public AclCacheLoader(ConfigRocksDBStorage storage) {
method load (line 190) | @Override
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/strategy/AbstractAuthorizationStrategy.java
class AbstractAuthorizationStrategy (line 30) | public abstract class AbstractAuthorizationStrategy implements Authoriza...
method AbstractAuthorizationStrategy (line 36) | public AbstractAuthorizationStrategy(AuthConfig authConfig, Supplier<?...
method doEvaluate (line 50) | public void doEvaluate(AuthorizationContext context) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/strategy/AuthorizationStrategy.java
type AuthorizationStrategy (line 21) | public interface AuthorizationStrategy {
method evaluate (line 23) | void evaluate(AuthorizationContext context);
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/strategy/StatefulAuthorizationStrategy.java
class StatefulAuthorizationStrategy (line 31) | public class StatefulAuthorizationStrategy extends AbstractAuthorization...
method StatefulAuthorizationStrategy (line 35) | public StatefulAuthorizationStrategy(AuthConfig authConfig, Supplier<?...
method evaluate (line 43) | @Override
method buildKey (line 62) | private String buildKey(AuthorizationContext context) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/authorization/strategy/StatelessAuthorizationStrategy.java
class StatelessAuthorizationStrategy (line 23) | public class StatelessAuthorizationStrategy extends AbstractAuthorizatio...
method StatelessAuthorizationStrategy (line 25) | public StatelessAuthorizationStrategy(AuthConfig authConfig, Supplier<...
method evaluate (line 29) | @Override
FILE: auth/src/main/java/org/apache/rocketmq/auth/config/AuthConfig.java
class AuthConfig (line 19) | public class AuthConfig implements Cloneable {
method clone (line 73) | @Override
method getConfigName (line 82) | public String getConfigName() {
method setConfigName (line 86) | public void setConfigName(String configName) {
method getClusterName (line 90) | public String getClusterName() {
method setClusterName (line 94) | public void setClusterName(String clusterName) {
method getAuthConfigPath (line 98) | public String getAuthConfigPath() {
method setAuthConfigPath (line 102) | public void setAuthConfigPath(String authConfigPath) {
method isAuthenticationEnabled (line 106) | public boolean isAuthenticationEnabled() {
method setAuthenticationEnabled (line 110) | public void setAuthenticationEnabled(boolean authenticationEnabled) {
method getAuthenticationProvider (line 114) | public String getAuthenticationProvider() {
method setAuthenticationProvider (line 118) | public void setAuthenticationProvider(String authenticationProvider) {
method getAuthenticationMetadataProvider (line 122) | public String getAuthenticationMetadataProvider() {
method setAuthenticationMetadataProvider (line 126) | public void setAuthenticationMetadataProvider(String authenticationMet...
method getAuthenticationStrategy (line 130) | public String getAuthenticationStrategy() {
method setAuthenticationStrategy (line 134) | public void setAuthenticationStrategy(String authenticationStrategy) {
method getAuthenticationWhitelist (line 138) | public String getAuthenticationWhitelist() {
method setAuthenticationWhitelist (line 142) | public void setAuthenticationWhitelist(String authenticationWhitelist) {
method getInitAuthenticationUser (line 146) | public String getInitAuthenticationUser() {
method setInitAuthenticationUser (line 150) | public void setInitAuthenticationUser(String initAuthenticationUser) {
method getInnerClientAuthenticationCredentials (line 154) | public String getInnerClientAuthenticationCredentials() {
method setInnerClientAuthenticationCredentials (line 158) | public void setInnerClientAuthenticationCredentials(String innerClient...
method isAuthorizationEnabled (line 162) | public boolean isAuthorizationEnabled() {
method setAuthorizationEnabled (line 166) | public void setAuthorizationEnabled(boolean authorizationEnabled) {
method getAuthorizationProvider (line 170) | public String getAuthorizationProvider() {
method setAuthorizationProvider (line 174) | public void setAuthorizationProvider(String authorizationProvider) {
method getAuthorizationMetadataProvider (line 178) | public String getAuthorizationMetadataProvider() {
method setAuthorizationMetadataProvider (line 182) | public void setAuthorizationMetadataProvider(String authorizationMetad...
method getAuthorizationStrategy (line 186) | public String getAuthorizationStrategy() {
method setAuthorizationStrategy (line 190) | public void setAuthorizationStrategy(String authorizationStrategy) {
method getAuthorizationWhitelist (line 194) | public String getAuthorizationWhitelist() {
method setAuthorizationWhitelist (line 198) | public void setAuthorizationWhitelist(String authorizationWhitelist) {
method isMigrateAuthFromV1Enabled (line 202) | public boolean isMigrateAuthFromV1Enabled() {
method setMigrateAuthFromV1Enabled (line 206) | public void setMigrateAuthFromV1Enabled(boolean migrateAuthFromV1Enabl...
method getUserCacheMaxNum (line 210) | public int getUserCacheMaxNum() {
method setUserCacheMaxNum (line 214) | public void setUserCacheMaxNum(int userCacheMaxNum) {
method getUserCacheExpiredSecond (line 218) | public int getUserCacheExpiredSecond() {
method setUserCacheExpiredSecond (line 222) | public void setUserCacheExpiredSecond(int userCacheExpiredSecond) {
method getUserCacheRefreshSecond (line 226) | public int getUserCacheRefreshSecond() {
method setUserCacheRefreshSecond (line 230) | public void setUserCacheRefreshSecond(int userCacheRefreshSecond) {
method getAclCacheMaxNum (line 234) | public int getAclCacheMaxNum() {
method setAclCacheMaxNum (line 238) | public void setAclCacheMaxNum(int aclCacheMaxNum) {
method getAclCacheExpiredSecond (line 242) | public int getAclCacheExpiredSecond() {
method setAclCacheExpiredSecond (line 246) | public void setAclCacheExpiredSecond(int aclCacheExpiredSecond) {
method getAclCacheRefreshSecond (line 250) | public int getAclCacheRefreshSecond() {
method setAclCacheRefreshSecond (line 254) | public void setAclCacheRefreshSecond(int aclCacheRefreshSecond) {
method getStatefulAuthenticationCacheMaxNum (line 258) | public int getStatefulAuthenticationCacheMaxNum() {
method setStatefulAuthenticationCacheMaxNum (line 262) | public void setStatefulAuthenticationCacheMaxNum(int statefulAuthentic...
method getStatefulAuthenticationCacheExpiredSecond (line 266) | public int getStatefulAuthenticationCacheExpiredSecond() {
method setStatefulAuthenticationCacheExpiredSecond (line 270) | public void setStatefulAuthenticationCacheExpiredSecond(int statefulAu...
method getStatefulAuthorizationCacheMaxNum (line 274) | public int getStatefulAuthorizationCacheMaxNum() {
method setStatefulAuthorizationCacheMaxNum (line 278) | public void setStatefulAuthorizationCacheMaxNum(int statefulAuthorizat...
method getStatefulAuthorizationCacheExpiredSecond (line 282) | public int getStatefulAuthorizationCacheExpiredSecond() {
method setStatefulAuthorizationCacheExpiredSecond (line 286) | public void setStatefulAuthorizationCacheExpiredSecond(int statefulAut...
FILE: auth/src/main/java/org/apache/rocketmq/auth/migration/AuthMigrator.java
class AuthMigrator (line 52) | public class AuthMigrator {
method AuthMigrator (line 64) | public AuthMigrator(AuthConfig authConfig) {
method migrate (line 71) | public void migrate() {
method doMigrate (line 87) | private void doMigrate(PlainAccessConfig accessConfig) {
method createUserAndAcl (line 99) | private CompletableFuture<Void> createUserAndAcl(PlainAccessConfig acc...
method createUser (line 103) | private CompletableFuture<Void> createUser(PlainAccessConfig accessCon...
method createAcl (line 115) | private CompletableFuture<Void> createAcl(PlainAccessConfig config) {
method parseDecision (line 193) | private Decision parseDecision(String str) {
method parseActions (line 200) | private List<Action> parseActions(String str) {
method isUserExisted (line 227) | private CompletableFuture<Boolean> isUserExisted(String username) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/migration/v1/AccessResource.java
type AccessResource (line 20) | public interface AccessResource {
FILE: auth/src/main/java/org/apache/rocketmq/auth/migration/v1/AclConfig.java
class AclConfig (line 21) | public class AclConfig {
method getGlobalWhiteAddrs (line 28) | public List<String> getGlobalWhiteAddrs() {
method setGlobalWhiteAddrs (line 32) | public void setGlobalWhiteAddrs(List<String> globalWhiteAddrs) {
method getPlainAccessConfigs (line 36) | public List<PlainAccessConfig> getPlainAccessConfigs() {
method setPlainAccessConfigs (line 40) | public void setPlainAccessConfigs(List<PlainAccessConfig> plainAccessC...
method toString (line 44) | @Override
FILE: auth/src/main/java/org/apache/rocketmq/auth/migration/v1/PlainAccessConfig.java
class PlainAccessConfig (line 23) | public class PlainAccessConfig implements Serializable {
method getAccessKey (line 42) | public String getAccessKey() {
method setAccessKey (line 46) | public void setAccessKey(String accessKey) {
method getSecretKey (line 50) | public String getSecretKey() {
method setSecretKey (line 54) | public void setSecretKey(String secretKey) {
method getWhiteRemoteAddress (line 58) | public String getWhiteRemoteAddress() {
method setWhiteRemoteAddress (line 62) | public void setWhiteRemoteAddress(String whiteRemoteAddress) {
method isAdmin (line 66) | public boolean isAdmin() {
method setAdmin (line 70) | public void setAdmin(boolean admin) {
method getDefaultTopicPerm (line 74) | public String getDefaultTopicPerm() {
method setDefaultTopicPerm (line 78) | public void setDefaultTopicPerm(String defaultTopicPerm) {
method getDefaultGroupPerm (line 82) | public String getDefaultGroupPerm() {
method setDefaultGroupPerm (line 86) | public void setDefaultGroupPerm(String defaultGroupPerm) {
method getTopicPerms (line 90) | public List<String> getTopicPerms() {
method setTopicPerms (line 94) | public void setTopicPerms(List<String> topicPerms) {
method getGroupPerms (line 98) | public List<String> getGroupPerms() {
method setGroupPerms (line 102) | public void setGroupPerms(List<String> groupPerms) {
method toString (line 106) | @Override
method equals (line 119) | @Override public boolean equals(Object o) {
method hashCode (line 128) | @Override public int hashCode() {
FILE: auth/src/main/java/org/apache/rocketmq/auth/migration/v1/PlainAccessData.java
class PlainAccessData (line 24) | public class PlainAccessData implements Serializable {
method getGlobalWhiteRemoteAddresses (line 31) | public List<String> getGlobalWhiteRemoteAddresses() {
method setGlobalWhiteRemoteAddresses (line 35) | public void setGlobalWhiteRemoteAddresses(List<String> globalWhiteRemo...
method getAccounts (line 39) | public List<PlainAccessConfig> getAccounts() {
method setAccounts (line 43) | public void setAccounts(List<PlainAccessConfig> accounts) {
method getDataVersion (line 47) | public List<DataVersion> getDataVersion() {
method setDataVersion (line 51) | public void setDataVersion(List<DataVersion> dataVersion) {
class DataVersion (line 55) | public static class DataVersion implements Serializable {
method getTimestamp (line 60) | public long getTimestamp() {
method setTimestamp (line 64) | public void setTimestamp(long timestamp) {
method getCounter (line 68) | public long getCounter() {
method setCounter (line 72) | public void setCounter(long counter) {
method equals (line 76) | @Override
method hashCode (line 84) | @Override
method equals (line 90) | @Override
method hashCode (line 98) | @Override
FILE: auth/src/main/java/org/apache/rocketmq/auth/migration/v1/PlainAccessResource.java
class PlainAccessResource (line 26) | public class PlainAccessResource implements AccessResource {
method PlainAccessResource (line 54) | public PlainAccessResource() {
method getGroupFromRetryTopic (line 57) | public static String getGroupFromRetryTopic(String retryTopic) {
method getRetryTopic (line 64) | public static String getRetryTopic(String group) {
method addResourceAndPerm (line 71) | public void addResourceAndPerm(String resource, byte perm) {
method getAccessKey (line 81) | public String getAccessKey() {
method setAccessKey (line 85) | public void setAccessKey(String accessKey) {
method getSecretKey (line 89) | public String getSecretKey() {
method setSecretKey (line 93) | public void setSecretKey(String secretKey) {
method getWhiteRemoteAddress (line 97) | public String getWhiteRemoteAddress() {
method setWhiteRemoteAddress (line 101) | public void setWhiteRemoteAddress(String whiteRemoteAddress) {
method isAdmin (line 105) | public boolean isAdmin() {
method setAdmin (line 109) | public void setAdmin(boolean admin) {
method getDefaultTopicPerm (line 113) | public byte getDefaultTopicPerm() {
method setDefaultTopicPerm (line 117) | public void setDefaultTopicPerm(byte defaultTopicPerm) {
method getDefaultGroupPerm (line 121) | public byte getDefaultGroupPerm() {
method setDefaultGroupPerm (line 125) | public void setDefaultGroupPerm(byte defaultGroupPerm) {
method getResourcePermMap (line 129) | public Map<String, Byte> getResourcePermMap() {
method getRecognition (line 133) | public String getRecognition() {
method setRecognition (line 137) | public void setRecognition(String recognition) {
method getRequestCode (line 141) | public int getRequestCode() {
method setRequestCode (line 145) | public void setRequestCode(int requestCode) {
method getSecretToken (line 149) | public String getSecretToken() {
method setSecretToken (line 153) | public void setSecretToken(String secretToken) {
method getSignature (line 157) | public String getSignature() {
method setSignature (line 161) | public void setSignature(String signature) {
method toString (line 165) | @Override
method getContent (line 170) | public byte[] getContent() {
method setContent (line 174) | public void setContent(byte[] content) {
FILE: auth/src/main/java/org/apache/rocketmq/auth/migration/v1/PlainPermissionManager.java
class PlainPermissionManager (line 37) | public class PlainPermissionManager {
method PlainPermissionManager (line 50) | public PlainPermissionManager() {
method getAllAclFiles (line 56) | public List<String> getAllAclFiles(String path) {
method load (line 78) | public void load() {
method assureAclConfigFilesExist (line 94) | private void assureAclConfigFilesExist() {
method getAllAclConfig (line 108) | public AclConfig getAllAclConfig() {
FILE: auth/src/test/java/org/apache/rocketmq/auth/authentication/AuthenticationEvaluatorTest.java
class AuthenticationEvaluatorTest (line 35) | public class AuthenticationEvaluatorTest {
method setUp (line 41) | @Before
method tearDown (line 52) | @After
method evaluate1 (line 61) | @Test
method evaluate2 (line 77) | @Test
method evaluate3 (line 90) | @Test
method evaluate4 (line 106) | @Test
method evaluate5 (line 122) | @Test
method clearAllUsers (line 138) | private void clearAllUsers() {
FILE: auth/src/test/java/org/apache/rocketmq/auth/authentication/builder/DefaultAuthenticationContextBuilderTest.java
class DefaultAuthenticationContextBuilderTest (line 42) | @RunWith(MockitoJUnitRunner.Silent.class)
method setUp (line 53) | @Before
method build1 (line 58) | @Test
method build2 (line 78) | @Test
method mockChannelId (line 99) | private ChannelId mockChannelId(String channelId) {
FILE: auth/src/test/java/org/apache/rocketmq/auth/authentication/manager/AuthenticationMetadataManagerTest.java
class AuthenticationMetadataManagerTest (line 33) | public class AuthenticationMetadataManagerTest {
method setUp (line 38) | @Before
method tearDown (line 48) | @After
method createUser (line 57) | @Test
method updateUser (line 88) | @Test
method deleteUser (line 127) | @Test
method getUser (line 143) | @Test
method listUser (line 160) | @Test
method clearAllUsers (line 179) | private void clearAllUsers() {
FILE: auth/src/test/java/org/apache/rocketmq/auth/authentication/provider/LocalAuthenticationMetadataProviderTest.java
class LocalAuthenticationMetadataProviderTest (line 26) | public class LocalAuthenticationMetadataProviderTest {
method testShutdownReleasesCacheExecutor (line 31) | @Test
FILE: auth/src/test/java/org/apache/rocketmq/auth/authorization/AuthorizationEvaluatorTest.java
class AuthorizationEvaluatorTest (line 45) | public class AuthorizationEvaluatorTest {
method setUp (line 52) | @Before
method tearDown (line 65) | @After
method evaluate1 (line 75) | @Test
method evaluate2 (line 107) | @Test
method evaluate4 (line 139) | @Test
method evaluate5 (line 208) | @Test
method evaluate6 (line 269) | @Test
method evaluate7 (line 286) | @Test
method evaluate8 (line 303) | @Test
method evaluate9 (line 347) | @Test
method clearAllUsers (line 387) | private void clearAllUsers() {
method clearAllAcls (line 395) | private void clearAllAcls() {
FILE: auth/src/test/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilderTest.java
class DefaultAuthorizationContextBuilderTest (line 89) | @RunWith(MockitoJUnitRunner.Silent.class)
method setUp (line 100) | @Before
method buildGrpc (line 108) | @Test
method buildRemoting (line 275) | @Test
method getContext (line 575) | private DefaultAuthorizationContext getContext(List<DefaultAuthorizati...
method mockChannelId (line 581) | private ChannelId mockChannelId(String channelId) {
method mockAttribute (line 600) | private Attribute<String> mockAttribute(String value) {
FILE: auth/src/test/java/org/apache/rocketmq/auth/authorization/chain/AclAuthorizationHandlerTest.java
class AclAuthorizationHandlerTest (line 54) | public class AclAuthorizationHandlerTest {
method setUp (line 62) | @Before
method tearDown (line 76) | @After
method testNoAclThrows (line 87) | @Test
method testNoMatchedPolicyThrows (line 109) | @Test
method testDecisionDenyThrows (line 138) | @Test
method testAllowDoesNotThrow (line 166) | @Test
method testDenyBeatsAllow (line 183) | @Test
method testPrefixedLongerDenyBeatsPrefixedShorterAllow (line 213) | @Test
method testLiteralAllowBeatsPrefixedDeny (line 243) | @Test
method testTopicTypeAllowBeatsAnyTypeDeny (line 266) | @Test
method testPrefixedPatternAllowBeatsAnyPatternDeny (line 289) | @Test
method testLiteralPatternDenyBeatsAnyPatternAllow (line 312) | @Test
method buildContext (line 343) | private DefaultAuthorizationContext buildContext(Subject subject, Reso...
method clearAllUsers (line 347) | private void clearAllUsers() {
method clearAllAcls (line 355) | private void clearAllAcls() {
FILE: auth/src/test/java/org/apache/rocketmq/auth/authorization/chain/UserAuthorizationHandlerTest.java
class UserAuthorizationHandlerTest (line 50) | public class UserAuthorizationHandlerTest {
method setUp (line 57) | @Before
method tearDown (line 69) | @After
method testUserNotFoundThrows (line 78) | @Test
method testUserDisabledThrows (line 96) | @Test
method testSuperUserBypassNextChain (line 121) | @Test
method testNormalUserGoesToNextChain (line 136) | @Test
method buildContext (line 152) | private DefaultAuthorizationContext buildContext(Subject subject, Reso...
method clearAllUsers (line 156) | private void clearAllUsers() {
FILE: auth/src/test/java/org/apache/rocketmq/auth/authorization/manager/AuthorizationMetadataManagerTest.java
class AuthorizationMetadataManagerTest (line 41) | public class AuthorizationMetadataManagerTest {
method setUp (line 49) | @Before
method tearDown (line 61) | @After
method createAcl (line 72) | @Test
method updateAcl (line 112) | @Test
method deleteAcl (line 148) | @Test
method getAcl (line 183) | @Test
method testGetAclWithNullSubject (line 206) | @Test
method listAcl (line 221) | @Test
method clearAllUsers (line 275) | private void clearAllUsers() {
method clearAllAcls (line 283) | private void clearAllAcls() {
FILE: auth/src/test/java/org/apache/rocketmq/auth/authorization/model/ResourceTest.java
class ResourceTest (line 24) | public class ResourceTest {
method parseResource (line 26) | @Test
method isMatch (line 49) | @Test
FILE: auth/src/test/java/org/apache/rocketmq/auth/authorization/provider/LocalAuthorizationMetadataProviderTest.java
class LocalAuthorizationMetadataProviderTest (line 26) | public class LocalAuthorizationMetadataProviderTest {
method testShutdownReleasesCacheExecutor (line 31) | @Test
FILE: auth/src/test/java/org/apache/rocketmq/auth/authorization/strategy/StatefulAuthorizationStrategyTest.java
class StatefulAuthorizationStrategyTest (line 51) | @RunWith(MockitoJUnitRunner.class)
method setUp (line 59) | @Before
method testEvaluateChannelIdBlankDoesNotUseCache (line 67) | @Test
method testEvaluateChannelIdNotNullCacheHit (line 75) | @Test
method testEvaluateChannelIdNotNullCacheMiss (line 94) | @Test
method testEvaluateChannelIdNotNullCacheException (line 110) | @Test
method buildKey (line 135) | private String buildKey(AuthorizationContext context) throws Invocatio...
FILE: auth/src/test/java/org/apache/rocketmq/auth/helper/AuthTestHelper.java
class AuthTestHelper (line 45) | public class AuthTestHelper {
method createDefaultConfig (line 47) | public static AuthConfig createDefaultConfig() {
method buildAcl (line 60) | public static Acl buildAcl(String subjectKey, String resources, String...
method buildAcl (line 65) | public static Acl buildAcl(String subjectKey, PolicyType policyType, S...
method buildPolicy (line 72) | public static Policy buildPolicy(String resources, String actions, Str...
method buildPolicy (line 77) | public static Policy buildPolicy(PolicyType policyType, String resourc...
method isEquals (line 91) | public static boolean isEquals(Acl acl1, Acl acl2) {
method isEquals (line 139) | private static boolean isEquals(Policy policy1, Policy policy2) {
method isEquals (line 180) | private static boolean isEquals(PolicyEntry entry1, PolicyEntry entry2) {
method isEquals (line 212) | private static boolean isEquals(Resource resource1, Resource resource2) {
method isEquals (line 222) | private static boolean isEquals(Environment environment1, Environment ...
method isEquals (line 240) | private static boolean isEquals(Subject subject1, Subject subject2) {
method handleException (line 251) | public static void handleException(Throwable e) {
FILE: auth/src/test/java/org/apache/rocketmq/auth/migration/AuthMigratorTest.java
class AuthMigratorTest (line 46) | @RunWith(MockitoJUnitRunner.class)
method setUp (line 63) | @Before
method testMigrateNoAclConfigDoesNothing (line 72) | @Test
method testMigrateWithAclConfigCreatesUserAndAcl (line 84) | @Test
method testMigrateExceptionInMigrateLogsError (line 102) | @Test
method createPlainAccessConfig (line 126) | private PlainAccessConfig createPlainAccessConfig() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java
class BrokerController (line 196) | public class BrokerController {
method BrokerController (line 329) | public BrokerController(
method BrokerController (line 341) | public BrokerController(
method BrokerController (line 348) | public BrokerController(
method BrokerController (line 356) | public BrokerController(
method BrokerController (line 365) | public BrokerController(
method getAuthConfig (line 505) | public AuthConfig getAuthConfig() {
method getBrokerConfig (line 509) | public BrokerConfig getBrokerConfig() {
method getNettyServerConfig (line 513) | public NettyServerConfig getNettyServerConfig() {
method getNettyClientConfig (line 517) | public NettyClientConfig getNettyClientConfig() {
method getPullThreadPoolQueue (line 521) | public BlockingQueue<Runnable> getPullThreadPoolQueue() {
method getQueryThreadPoolQueue (line 525) | public BlockingQueue<Runnable> getQueryThreadPoolQueue() {
method getBrokerMetricsManager (line 529) | public BrokerMetricsManager getBrokerMetricsManager() {
method setBrokerMetricsManager (line 533) | public void setBrokerMetricsManager(BrokerMetricsManager brokerMetrics...
method initializeRemotingServer (line 537) | protected void initializeRemotingServer() throws CloneNotSupportedExce...
method initializeResources (line 562) | protected void initializeResources() {
method initializeBrokerScheduledTasks (line 678) | protected void initializeBrokerScheduledTasks() {
method initializeScheduledTasks (line 814) | protected void initializeScheduledTasks() {
method updateNamesrvAddr (line 847) | private void updateNamesrvAddr() {
method initializeMetadata (line 855) | public boolean initializeMetadata() {
method initializeMessageStore (line 869) | public boolean initializeMessageStore() {
method initialize (line 915) | public boolean initialize() throws CloneNotSupportedException {
method recoverAndInitService (line 930) | public boolean recoverAndInitService() throws CloneNotSupportedExcepti...
method registerMessageStoreHook (line 1030) | public void registerMessageStoreHook() {
method initialTransaction (line 1102) | private void initialTransaction() {
method initialRpcHooks (line 1128) | private void initialRpcHooks() {
method initialRequestPipeline (line 1139) | private void initialRequestPipeline() {
method initLiteService (line 1156) | private void initLiteService() {
method registerProcessor (line 1161) | public void registerProcessor() {
method getBrokerStats (line 1310) | public BrokerStats getBrokerStats() {
method setBrokerStats (line 1314) | public void setBrokerStats(BrokerStats brokerStats) {
method protectBroker (line 1318) | public void protectBroker() {
method headSlowTimeMills (line 1332) | public long headSlowTimeMills(BlockingQueue<Runnable> q) {
method headSlowTimeMills4SendThreadPoolQueue (line 1347) | public long headSlowTimeMills4SendThreadPoolQueue() {
method headSlowTimeMills4PullThreadPoolQueue (line 1351) | public long headSlowTimeMills4PullThreadPoolQueue() {
method headSlowTimeMills4LitePullThreadPoolQueue (line 1355) | public long headSlowTimeMills4LitePullThreadPoolQueue() {
method headSlowTimeMills4QueryThreadPoolQueue (line 1359) | public long headSlowTimeMills4QueryThreadPoolQueue() {
method headSlowTimeMills4AckThreadPoolQueue (line 1363) | public long headSlowTimeMills4AckThreadPoolQueue() {
method headSlowTimeMills4EndTransactionThreadPoolQueue (line 1367) | public long headSlowTimeMills4EndTransactionThreadPoolQueue() {
method headSlowTimeMills4ClientManagerThreadPoolQueue (line 1371) | public long headSlowTimeMills4ClientManagerThreadPoolQueue() {
method headSlowTimeMills4HeartbeatThreadPoolQueue (line 1375) | public long headSlowTimeMills4HeartbeatThreadPoolQueue() {
method headSlowTimeMills4AdminBrokerThreadPoolQueue (line 1379) | public long headSlowTimeMills4AdminBrokerThreadPoolQueue() {
method printWaterMark (line 1383) | public void printWaterMark() {
method logWaterMarkQueueInfo (line 1395) | private void logWaterMarkQueueInfo(String queueName, BlockingQueue<?> ...
method getMessageStore (line 1399) | public MessageStore getMessageStore() {
method setMessageStore (line 1403) | public void setMessageStore(MessageStore messageStore) {
method printMasterAndSlaveDiff (line 1407) | protected void printMasterAndSlaveDiff() {
method getBroker2Client (line 1414) | public Broker2Client getBroker2Client() {
method getConsumerManager (line 1418) | public ConsumerManager getConsumerManager() {
method getConsumerFilterManager (line 1422) | public ConsumerFilterManager getConsumerFilterManager() {
method getConsumerOrderInfoManager (line 1426) | public ConsumerOrderInfoManager getConsumerOrderInfoManager() {
method getPopInflightMessageCounter (line 1430) | public PopInflightMessageCounter getPopInflightMessageCounter() {
method getPopConsumerService (line 1434) | public PopConsumerService getPopConsumerService() {
method getConsumerOffsetManager (line 1438) | public ConsumerOffsetManager getConsumerOffsetManager() {
method setConsumerOffsetManager (line 1442) | public void setConsumerOffsetManager(ConsumerOffsetManager consumerOff...
method getBroadcastOffsetManager (line 1447) | public BroadcastOffsetManager getBroadcastOffsetManager() {
method getMessageStoreConfig (line 1451) | public MessageStoreConfig getMessageStoreConfig() {
method getProducerManager (line 1455) | public ProducerManager getProducerManager() {
method getPullMessageProcessor (line 1459) | public PullMessageProcessor getPullMessageProcessor() {
method getPullRequestHoldService (line 1463) | public PullRequestHoldService getPullRequestHoldService() {
method setSubscriptionGroupManager (line 1467) | public void setSubscriptionGroupManager(SubscriptionGroupManager subsc...
method getSubscriptionGroupManager (line 1471) | public SubscriptionGroupManager getSubscriptionGroupManager() {
method getPopMessageProcessor (line 1475) | public PopMessageProcessor getPopMessageProcessor() {
method getPopLiteMessageProcessor (line 1479) | public PopLiteMessageProcessor getPopLiteMessageProcessor() {
method getNotificationProcessor (line 1483) | public NotificationProcessor getNotificationProcessor() {
method getTimerMessageStore (line 1487) | public TimerMessageStore getTimerMessageStore() {
method setTimerMessageStore (line 1491) | public void setTimerMessageStore(TimerMessageStore timerMessageStore) {
method getTimerMessageRocksDBStore (line 1495) | public TimerMessageRocksDBStore getTimerMessageRocksDBStore() {
method setTimerMessageRocksDBStore (line 1499) | public void setTimerMessageRocksDBStore(TimerMessageRocksDBStore timer...
method getAckMessageProcessor (line 1503) | public AckMessageProcessor getAckMessageProcessor() {
method getChangeInvisibleTimeProcessor (line 1507) | public ChangeInvisibleTimeProcessor getChangeInvisibleTimeProcessor() {
method getLiteSubscriptionRegistry (line 1511) | public LiteSubscriptionRegistry getLiteSubscriptionRegistry() {
method getLiteLifecycleManager (line 1515) | public AbstractLiteLifecycleManager getLiteLifecycleManager() {
method shutdownBasicService (line 1519) | protected void shutdownBasicService() {
method shutdown (line 1788) | public void shutdown() {
method shutdownScheduledExecutorService (line 1801) | protected void shutdownScheduledExecutorService(ScheduledExecutorServi...
method unregisterBrokerAll (line 1814) | protected void unregisterBrokerAll() {
method getBrokerAddr (line 1822) | public String getBrokerAddr() {
method startBasicService (line 1826) | protected void startBasicService() throws Exception {
method start (line 1960) | public void start() throws Exception {
method scheduleSendHeartbeat (line 2033) | protected void scheduleSendHeartbeat() {
method registerSingleTopicAll (line 2050) | public synchronized void registerSingleTopicAll(final TopicConfig topi...
method registerIncrementBrokerData (line 2061) | public synchronized void registerIncrementBrokerData(TopicConfig topic...
method registerIncrementBrokerData (line 2065) | public synchronized void registerIncrementBrokerData(List<TopicConfig>...
method registerBrokerAll (line 2106) | public synchronized void registerBrokerAll(final boolean checkOrderCon...
method doRegisterBrokerAll (line 2144) | protected void doRegisterBrokerAll(boolean checkOrderConfig, boolean o...
method sendHeartbeat (line 2169) | protected void sendHeartbeat() {
method syncBrokerMemberGroup (line 2196) | protected void syncBrokerMemberGroup() {
method calcAliveBrokerNumInGroup (line 2216) | private int calcAliveBrokerNumInGroup(Map<Long, String> brokerAddrTabl...
method handleRegisterBrokerResult (line 2224) | protected void handleRegisterBrokerResult(List<RegisterBrokerResult> r...
method needRegister (line 2242) | private boolean needRegister(final String clusterName,
method startService (line 2261) | public void startService(long minBrokerId, String minBrokerAddr) {
method startServiceWithoutCondition (line 2273) | public void startServiceWithoutCondition() {
method stopService (line 2282) | public void stopService() {
method isSpecialServiceRunning (line 2288) | public boolean isSpecialServiceRunning() {
method onMasterOffline (line 2296) | private void onMasterOffline() {
method onMasterOnline (line 2308) | private void onMasterOnline(String masterAddr, String masterHaAddr) {
method onMinBrokerChange (line 2338) | private void onMinBrokerChange(long minBrokerId, String minBrokerAddr,...
method updateMinBroker (line 2364) | public void updateMinBroker(long minBrokerId, String minBrokerAddr) {
method updateMinBroker (line 2382) | public void updateMinBroker(long minBrokerId, String minBrokerAddr, St...
method changeSpecialServiceStatus (line 2402) | public void changeSpecialServiceStatus(boolean shouldStart) {
method changeTransactionCheckServiceStatus (line 2420) | private synchronized void changeTransactionCheckServiceStatus(boolean ...
method changeScheduleServiceStatus (line 2432) | public synchronized void changeScheduleServiceStatus(boolean shouldSta...
method getMessageStoreByBrokerName (line 2449) | public MessageStore getMessageStoreByBrokerName(String brokerName) {
method getBrokerIdentity (line 2456) | public BrokerIdentity getBrokerIdentity() {
method getTopicConfigManager (line 2468) | public TopicConfigManager getTopicConfigManager() {
method setTopicConfigManager (line 2472) | public void setTopicConfigManager(TopicConfigManager topicConfigManage...
method getTopicQueueMappingManager (line 2476) | public TopicQueueMappingManager getTopicQueueMappingManager() {
method getAuthenticationMetadataManager (line 2480) | public AuthenticationMetadataManager getAuthenticationMetadataManager() {
method setAuthenticationMetadataManager (line 2484) | @VisibleForTesting
method getAuthorizationMetadataManager (line 2490) | public AuthorizationMetadataManager getAuthorizationMetadataManager() {
method setAuthorizationMetadataManager (line 2494) | @VisibleForTesting
method getHAServerAddr (line 2500) | public String getHAServerAddr() {
method getRebalanceLockManager (line 2504) | public RebalanceLockManager getRebalanceLockManager() {
method getSlaveSynchronize (line 2508) | public SlaveSynchronize getSlaveSynchronize() {
method getScheduledExecutorService (line 2512) | public ScheduledExecutorService getScheduledExecutorService() {
method getPullMessageExecutor (line 2516) | public ExecutorService getPullMessageExecutor() {
method getPutMessageFutureExecutor (line 2520) | public ExecutorService getPutMessageFutureExecutor() {
method setPullMessageExecutor (line 2524) | public void setPullMessageExecutor(ExecutorService pullMessageExecutor) {
method getSendThreadPoolQueue (line 2528) | public BlockingQueue<Runnable> getSendThreadPoolQueue() {
method getAckThreadPoolQueue (line 2532) | public BlockingQueue<Runnable> getAckThreadPoolQueue() {
method getBrokerStatsManager (line 2536) | public BrokerStatsManager getBrokerStatsManager() {
method setBrokerStatsManager (line 2540) | public void setBrokerStatsManager(BrokerStatsManager brokerStatsManage...
method getSendMessageHookList (line 2544) | public List<SendMessageHook> getSendMessageHookList() {
method registerSendMessageHook (line 2548) | public void registerSendMessageHook(final SendMessageHook hook) {
method getConsumeMessageHookList (line 2553) | public List<ConsumeMessageHook> getConsumeMessageHookList() {
method registerConsumeMessageHook (line 2557) | public void registerConsumeMessageHook(final ConsumeMessageHook hook) {
method registerServerRPCHook (line 2562) | public void registerServerRPCHook(RPCHook rpcHook) {
method setRequestPipeline (line 2571) | public void setRequestPipeline(RequestPipeline pipeline) {
method getRemotingServer (line 2580) | public RemotingServer getRemotingServer() {
method setRemotingServer (line 2584) | public void setRemotingServer(RemotingServer remotingServer) {
method getFastRemotingServer (line 2588) | public RemotingServer getFastRemotingServer() {
method setFastRemotingServer (line 2592) | public void setFastRemotingServer(RemotingServer fastRemotingServer) {
method getRemotingServerByName (line 2596) | public RemotingServer getRemotingServerByName(String name) {
method setRemotingServerByName (line 2600) | public void setRemotingServerByName(String name, RemotingServer remoti...
method getClientHousekeepingService (line 2604) | public ClientHousekeepingService getClientHousekeepingService() {
method getRemotingServerStartLatch (line 2608) | public CountDownLatch getRemotingServerStartLatch() {
method setRemotingServerStartLatch (line 2612) | public void setRemotingServerStartLatch(CountDownLatch remotingServerS...
method registerClientRPCHook (line 2616) | public void registerClientRPCHook(RPCHook rpcHook) {
method getBrokerOuterAPI (line 2620) | public BrokerOuterAPI getBrokerOuterAPI() {
method getStoreHost (line 2624) | public InetSocketAddress getStoreHost() {
method setStoreHost (line 2628) | public void setStoreHost(InetSocketAddress storeHost) {
method getConfiguration (line 2632) | public Configuration getConfiguration() {
method getHeartbeatThreadPoolQueue (line 2636) | public BlockingQueue<Runnable> getHeartbeatThreadPoolQueue() {
method getTransactionalMessageCheckService (line 2640) | public TransactionalMessageCheckService getTransactionalMessageCheckSe...
method setTransactionalMessageCheckService (line 2644) | public void setTransactionalMessageCheckService(
method getTransactionalMessageService (line 2649) | public TransactionalMessageService getTransactionalMessageService() {
method setTransactionalMessageService (line 2653) | public void setTransactionalMessageService(TransactionalMessageService...
method getTransactionalMessageCheckListener (line 2657) | public AbstractTransactionalMessageCheckListener getTransactionalMessa...
method setTransactionalMessageCheckListener (line 2661) | public void setTransactionalMessageCheckListener(
method getEndTransactionThreadPoolQueue (line 2666) | public BlockingQueue<Runnable> getEndTransactionThreadPoolQueue() {
method getSendMessageExecutor (line 2671) | public ExecutorService getSendMessageExecutor() {
method getSendMessageProcessor (line 2675) | public SendMessageProcessor getSendMessageProcessor() {
method getRecallMessageProcessor (line 2679) | public RecallMessageProcessor getRecallMessageProcessor() {
method getQueryAssignmentProcessor (line 2683) | public QueryAssignmentProcessor getQueryAssignmentProcessor() {
method getTopicQueueMappingCleanService (line 2687) | public TopicQueueMappingCleanService getTopicQueueMappingCleanService() {
method getAdminBrokerExecutor (line 2691) | public ExecutorService getAdminBrokerExecutor() {
method getLitePullThreadPoolQueue (line 2695) | public BlockingQueue<Runnable> getLitePullThreadPoolQueue() {
method getShutdownHook (line 2699) | public ShutdownHook getShutdownHook() {
method setShutdownHook (line 2703) | public void setShutdownHook(ShutdownHook shutdownHook) {
method getMinBrokerIdInGroup (line 2707) | public long getMinBrokerIdInGroup() {
method peekMasterBroker (line 2711) | public BrokerController peekMasterBroker() {
method getBrokerMemberGroup (line 2715) | public BrokerMemberGroup getBrokerMemberGroup() {
method getListenPort (line 2719) | public int getListenPort() {
method getBrokerAttachedPlugins (line 2723) | public List<BrokerAttachedPlugin> getBrokerAttachedPlugins() {
method getEscapeBridge (line 2727) | public EscapeBridge getEscapeBridge() {
method getShouldStartTime (line 2731) | public long getShouldStartTime() {
method getBrokerPreOnlineService (line 2735) | public BrokerPreOnlineService getBrokerPreOnlineService() {
method getEndTransactionProcessor (line 2739) | public EndTransactionProcessor getEndTransactionProcessor() {
method isScheduleServiceStart (line 2743) | public boolean isScheduleServiceStart() {
method isTransactionCheckServiceStart (line 2747) | public boolean isTransactionCheckServiceStart() {
method getScheduleMessageService (line 2751) | public ScheduleMessageService getScheduleMessageService() {
method getReplicasManager (line 2755) | public ReplicasManager getReplicasManager() {
method setIsolated (line 2759) | public void setIsolated(boolean isolated) {
method isIsolated (line 2763) | public boolean isIsolated() {
method getTimerCheckpoint (line 2767) | public TimerCheckpoint getTimerCheckpoint() {
method getTopicRouteInfoManager (line 2771) | public TopicRouteInfoManager getTopicRouteInfoManager() {
method getClientManagerThreadPoolQueue (line 2775) | public BlockingQueue<Runnable> getClientManagerThreadPoolQueue() {
method getConsumerManagerThreadPoolQueue (line 2779) | public BlockingQueue<Runnable> getConsumerManagerThreadPoolQueue() {
method getAsyncPutThreadPoolQueue (line 2783) | public BlockingQueue<Runnable> getAsyncPutThreadPoolQueue() {
method getReplyThreadPoolQueue (line 2787) | public BlockingQueue<Runnable> getReplyThreadPoolQueue() {
method getAdminBrokerThreadPoolQueue (line 2791) | public BlockingQueue<Runnable> getAdminBrokerThreadPoolQueue() {
method getColdDataPullRequestHoldService (line 2795) | public ColdDataPullRequestHoldService getColdDataPullRequestHoldServic...
method setColdDataPullRequestHoldService (line 2799) | public void setColdDataPullRequestHoldService(
method getColdDataCgCtrService (line 2804) | public ColdDataCgCtrService getColdDataCgCtrService() {
method setColdDataCgCtrService (line 2808) | public void setColdDataCgCtrService(ColdDataCgCtrService coldDataCgCtr...
method getConfigContext (line 2812) | public ConfigContext getConfigContext() {
method setConfigContext (line 2816) | public void setConfigContext(ConfigContext configContext) {
method getLiteEventDispatcher (line 2820) | public LiteEventDispatcher getLiteEventDispatcher() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/BrokerPathConfigHelper.java
class BrokerPathConfigHelper (line 22) | public class BrokerPathConfigHelper {
method getBrokerConfigPath (line 26) | public static String getBrokerConfigPath() {
method setBrokerConfigPath (line 30) | public static void setBrokerConfigPath(String path) {
method getTopicConfigPath (line 34) | public static String getTopicConfigPath(final String rootDir) {
method getTopicQueueMappingPath (line 38) | public static String getTopicQueueMappingPath(final String rootDir) {
method getConsumerOffsetPath (line 42) | public static String getConsumerOffsetPath(final String rootDir) {
method getLmqConsumerOffsetPath (line 46) | public static String getLmqConsumerOffsetPath(final String rootDir) {
method getConsumerOrderInfoPath (line 50) | public static String getConsumerOrderInfoPath(final String rootDir) {
method getSubscriptionGroupPath (line 54) | public static String getSubscriptionGroupPath(final String rootDir) {
method getTimerCheckPath (line 57) | public static String getTimerCheckPath(final String rootDir) {
method getTimerMetricsPath (line 60) | public static String getTimerMetricsPath(final String rootDir) {
method getTransactionMetricsPath (line 63) | public static String getTransactionMetricsPath(final String rootDir) {
method getConsumerFilterPath (line 67) | public static String getConsumerFilterPath(final String rootDir) {
method getMessageRequestModePath (line 71) | public static String getMessageRequestModePath(final String rootDir) {
method getConfigDir (line 75) | private static String getConfigDir(final String rootDir) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/BrokerPreOnlineService.java
class BrokerPreOnlineService (line 43) | public class BrokerPreOnlineService extends ServiceThread {
method BrokerPreOnlineService (line 49) | public BrokerPreOnlineService(BrokerController brokerController) {
method getServiceName (line 53) | @Override
method run (line 61) | @Override
method waitForHaHandshakeComplete (line 85) | CompletableFuture<Boolean> waitForHaHandshakeComplete(String brokerAdd...
method futureWaitAction (line 98) | private boolean futureWaitAction(boolean result, BrokerMemberGroup bro...
method prepareForMasterOnline (line 111) | private boolean prepareForMasterOnline(BrokerMemberGroup brokerMemberG...
method syncMetadataReverse (line 152) | private boolean syncMetadataReverse(String brokerAddr) {
method prepareForSlaveOnline (line 207) | private boolean prepareForSlaveOnline(BrokerMemberGroup brokerMemberGr...
method prepareForBrokerOnline (line 248) | private boolean prepareForBrokerOnline() {
method getMinBrokerId (line 279) | private long getMinBrokerId(Map<Long, String> brokerAddrMap) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java
class BrokerStartup (line 45) | public class BrokerStartup {
method main (line 49) | public static void main(String[] args) {
method start (line 53) | public static BrokerController start(BrokerController controller) {
method shutdown (line 76) | public static void shutdown(final BrokerController controller) {
method parseCmdLine (line 82) | public static ConfigContext parseCmdLine(String[] args) throws Excepti...
method configFileToConfigContext (line 120) | public static ConfigContext configFileToConfigContext(String filePath)...
method buildBrokerController (line 158) | public static BrokerController buildBrokerController(ConfigContext con...
method buildShutdownHook (line 251) | public static Runnable buildShutdownHook(BrokerController brokerContro...
method createBrokerController (line 272) | public static BrokerController createBrokerController(String[] args) {
method properties2SystemEnv (line 290) | private static void properties2SystemEnv(Properties properties) {
method buildCommandlineOptions (line 300) | private static Options buildCommandlineOptions(final Options options) {
class SystemConfigFileHelper (line 316) | public static class SystemConfigFileHelper {
method SystemConfigFileHelper (line 321) | public SystemConfigFileHelper() {
method loadConfig (line 324) | public Properties loadConfig() throws Exception {
method update (line 332) | public void update(Properties properties) throws Exception {
method setFile (line 336) | public void setFile(String file) {
method getFile (line 340) | public String getFile() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/ConfigContext.java
class ConfigContext (line 26) | public class ConfigContext {
method ConfigContext (line 36) | private ConfigContext(Builder builder) {
method getConfigFilePath (line 46) | public String getConfigFilePath() {
method getProperties (line 50) | public Properties getProperties() {
method getBrokerConfig (line 54) | public BrokerConfig getBrokerConfig() {
method getNettyServerConfig (line 58) | public NettyServerConfig getNettyServerConfig() {
method getNettyClientConfig (line 62) | public NettyClientConfig getNettyClientConfig() {
method getMessageStoreConfig (line 66) | public MessageStoreConfig getMessageStoreConfig() {
method getAuthConfig (line 70) | public AuthConfig getAuthConfig() {
class Builder (line 74) | public static class Builder {
method Builder (line 84) | public Builder() {
method configFilePath (line 87) | public Builder configFilePath(String configFilePath) {
method properties (line 92) | public Builder properties(Properties properties) {
method brokerConfig (line 97) | public Builder brokerConfig(BrokerConfig brokerConfig) {
method nettyServerConfig (line 102) | public Builder nettyServerConfig(NettyServerConfig nettyServerConfig) {
method nettyClientConfig (line 107) | public Builder nettyClientConfig(NettyClientConfig nettyClientConfig) {
method messageStoreConfig (line 112) | public Builder messageStoreConfig(MessageStoreConfig messageStoreCon...
method authConfig (line 117) | public Builder authConfig(AuthConfig authConfig) {
method build (line 122) | public ConfigContext build() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/ShutdownHook.java
type ShutdownHook (line 19) | public interface ShutdownHook {
method beforeShutdown (line 25) | void beforeShutdown(BrokerController controller);
FILE: broker/src/main/java/org/apache/rocketmq/broker/auth/converter/AclConverter.java
class AclConverter (line 34) | public class AclConverter {
method convertAcl (line 36) | public static Acl convertAcl(AclInfo aclInfo) {
method convertAcls (line 78) | public static List<AclInfo> convertAcls(List<Acl> acls) {
method convertAcl (line 86) | public static AclInfo convertAcl(Acl acl) {
method convertPolicy (line 102) | private static AclInfo.PolicyInfo convertPolicy(Policy policy) {
method convertPolicyEntry (line 116) | private static AclInfo.PolicyEntryInfo convertPolicyEntry(PolicyEntry ...
FILE: broker/src/main/java/org/apache/rocketmq/broker/auth/converter/UserConverter.java
class UserConverter (line 26) | public class UserConverter {
method convertUsers (line 28) | public static List<UserInfo> convertUsers(List<User> users) {
method convertUser (line 33) | public static UserInfo convertUser(User user) {
method convertUser (line 46) | public static User convertUser(UserInfo userInfo) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/auth/pipeline/AuthenticationPipeline.java
class AuthenticationPipeline (line 34) | public class AuthenticationPipeline implements RequestPipeline {
method AuthenticationPipeline (line 39) | public AuthenticationPipeline(AuthConfig authConfig) {
method execute (line 44) | @Override
method newContext (line 60) | protected AuthenticationContext newContext(ChannelHandlerContext ctx, ...
FILE: broker/src/main/java/org/apache/rocketmq/broker/auth/pipeline/AuthorizationPipeline.java
class AuthorizationPipeline (line 36) | public class AuthorizationPipeline implements RequestPipeline {
method AuthorizationPipeline (line 41) | public AuthorizationPipeline(AuthConfig authConfig) {
method execute (line 46) | @Override
method newContexts (line 62) | protected List<AuthorizationContext> newContexts(ChannelHandlerContext...
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ClientChannelAttributeHelper.java
class ClientChannelAttributeHelper (line 26) | public class ClientChannelAttributeHelper {
method addProducerGroup (line 31) | public static void addProducerGroup(Channel channel, String group) {
method addConsumerGroup (line 35) | public static void addConsumerGroup(Channel channel, String group) {
method getProducerGroups (line 39) | public static List<String> getProducerGroups(Channel channel) {
method getConsumerGroups (line 43) | public static List<String> getConsumerGroups(Channel channel) {
method addGroup (line 47) | private static void addGroup(Channel channel, String group, AttributeK...
method getGroups (line 66) | private static List<String> getGroups(Channel channel, AttributeKey<St...
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ClientChannelInfo.java
class ClientChannelInfo (line 22) | public class ClientChannelInfo {
method ClientChannelInfo (line 29) | public ClientChannelInfo(Channel channel) {
method ClientChannelInfo (line 33) | public ClientChannelInfo(Channel channel, String clientId, LanguageCod...
method getChannel (line 40) | public Channel getChannel() {
method getClientId (line 44) | public String getClientId() {
method getLanguage (line 48) | public LanguageCode getLanguage() {
method getVersion (line 52) | public int getVersion() {
method getLastUpdateTimestamp (line 56) | public long getLastUpdateTimestamp() {
method setLastUpdateTimestamp (line 60) | public void setLastUpdateTimestamp(long lastUpdateTimestamp) {
method hashCode (line 64) | @Override
method equals (line 76) | @Override
method toString (line 95) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ClientHousekeepingService.java
class ClientHousekeepingService (line 30) | public class ClientHousekeepingService implements ChannelEventListener {
method ClientHousekeepingService (line 36) | public ClientHousekeepingService(final BrokerController brokerControll...
method start (line 42) | public void start() {
method scanExceptionChannel (line 53) | private void scanExceptionChannel() {
method shutdown (line 58) | public void shutdown() {
method onChannelConnect (line 62) | @Override
method onChannelClose (line 67) | @Override
method onChannelException (line 74) | @Override
method onChannelIdle (line 81) | @Override
method onChannelActive (line 88) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerGroupEvent.java
type ConsumerGroupEvent (line 19) | public enum ConsumerGroupEvent {
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerGroupInfo.java
class ConsumerGroupInfo (line 36) | public class ConsumerGroupInfo {
method ConsumerGroupInfo (line 48) | public ConsumerGroupInfo(String groupName, ConsumeType consumeType, Me...
method ConsumerGroupInfo (line 56) | public ConsumerGroupInfo(String groupName) {
method findChannel (line 60) | public ClientChannelInfo findChannel(final String clientId) {
method getSubscriptionTable (line 72) | public ConcurrentMap<String, SubscriptionData> getSubscriptionTable() {
method findChannel (line 76) | public ClientChannelInfo findChannel(final Channel channel) {
method getChannelInfoTable (line 80) | public ConcurrentMap<Channel, ClientChannelInfo> getChannelInfoTable() {
method getAllChannel (line 84) | public List<Channel> getAllChannel() {
method getAllClientId (line 92) | public List<String> getAllClientId() {
method unregisterChannel (line 106) | public boolean unregisterChannel(final ClientChannelInfo clientChannel...
method doChannelCloseEvent (line 115) | public ClientChannelInfo doChannelCloseEvent(final String remoteAddr, ...
method updateChannel (line 135) | public boolean updateChannel(final ClientChannelInfo infoNew, ConsumeT...
method updateSubscription (line 174) | public boolean updateSubscription(final Set<SubscriptionData> subList) {
method getSubscribeTopics (line 224) | public Set<String> getSubscribeTopics() {
method findSubscriptionData (line 228) | public SubscriptionData findSubscriptionData(final String topic) {
method getConsumeType (line 232) | public ConsumeType getConsumeType() {
method setConsumeType (line 236) | public void setConsumeType(ConsumeType consumeType) {
method getMessageModel (line 240) | public MessageModel getMessageModel() {
method setMessageModel (line 244) | public void setMessageModel(MessageModel messageModel) {
method getGroupName (line 248) | public String getGroupName() {
method getLastUpdateTimestamp (line 252) | public long getLastUpdateTimestamp() {
method setLastUpdateTimestamp (line 256) | public void setLastUpdateTimestamp(long lastUpdateTimestamp) {
method getConsumeFromWhere (line 260) | public ConsumeFromWhere getConsumeFromWhere() {
method setConsumeFromWhere (line 264) | public void setConsumeFromWhere(ConsumeFromWhere consumeFromWhere) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerIdsChangeListener.java
type ConsumerIdsChangeListener (line 19) | public interface ConsumerIdsChangeListener {
method handle (line 21) | void handle(ConsumerGroupEvent event, String group, Object... args);
method shutdown (line 23) | void shutdown();
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java
class ConsumerManager (line 42) | public class ConsumerManager {
method ConsumerManager (line 56) | public ConsumerManager(final ConsumerIdsChangeListener consumerIdsChan...
method ConsumerManager (line 64) | public ConsumerManager(final ConsumerIdsChangeListener consumerIdsChan...
method findChannel (line 73) | public ClientChannelInfo findChannel(final String group, final String ...
method findChannel (line 81) | public ClientChannelInfo findChannel(final String group, final Channel...
method findSubscriptionData (line 89) | public SubscriptionData findSubscriptionData(final String group, final...
method findSubscriptionData (line 93) | public SubscriptionData findSubscriptionData(final String group, final...
method getConsumerTable (line 112) | public ConcurrentMap<String, ConsumerGroupInfo> getConsumerTable() {
method getConsumerGroupInfo (line 116) | public ConsumerGroupInfo getConsumerGroupInfo(final String group) {
method getConsumerGroupInfo (line 120) | public ConsumerGroupInfo getConsumerGroupInfo(String group, boolean fr...
method findSubscriptionDataCount (line 128) | public int findSubscriptionDataCount(final String group) {
method doChannelCloseEvent (line 137) | public boolean doChannelCloseEvent(final String remoteAddr, final Chan...
method clearTopicGroupTable (line 195) | private void clearTopicGroupTable(final ConsumerGroupInfo groupInfo) {
method compensateBasicConsumerInfo (line 208) | public void compensateBasicConsumerInfo(String group, ConsumeType cons...
method compensateSubscribeData (line 215) | public void compensateSubscribeData(String group, String topic, Subscr...
method registerConsumer (line 220) | public boolean registerConsumer(final String group, final ClientChanne...
method registerConsumer (line 227) | public boolean registerConsumer(final String group, final ClientChanne...
method registerConsumerWithoutSub (line 279) | public boolean registerConsumerWithoutSub(final String group, final Cl...
method unregisterConsumer (line 309) | public void unregisterConsumer(final String group, final ClientChannel...
method removeExpireConsumerGroupInfo (line 332) | public void removeExpireConsumerGroupInfo() {
method scanNotActiveChannel (line 355) | public void scanNotActiveChannel() {
method queryTopicConsumeByWho (line 389) | public HashSet<String> queryTopicConsumeByWho(final String topic) {
method appendConsumerIdsChangeListener (line 393) | public void appendConsumerIdsChangeListener(ConsumerIdsChangeListener ...
method callConsumerIdsChangeListener (line 397) | protected void callConsumerIdsChangeListener(ConsumerGroupEvent event,...
method isBroadcastMode (line 407) | private boolean isBroadcastMode(final MessageModel messageModel) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/DefaultConsumerIdsChangeListener.java
class DefaultConsumerIdsChangeListener (line 35) | public class DefaultConsumerIdsChangeListener implements ConsumerIdsChan...
method DefaultConsumerIdsChangeListener (line 47) | public DefaultConsumerIdsChangeListener(BrokerController brokerControl...
method handle (line 63) | @Override
method notifyConsumerChange (line 118) | private void notifyConsumerChange() {
method shutdown (line 143) | @Override
class NotifyTaskControl (line 148) | private static class NotifyTaskControl {
method NotifyTaskControl (line 154) | public NotifyTaskControl(List<Channel> channels) {
method isInterrupted (line 158) | public boolean isInterrupted() {
method interrupt (line 162) | public void interrupt() {
method getChannels (line 166) | public List<Channel> getChannels() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ProducerChangeListener.java
type ProducerChangeListener (line 24) | public interface ProducerChangeListener {
method handle (line 26) | void handle(ProducerGroupEvent event, String group, ClientChannelInfo ...
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ProducerGroupEvent.java
type ProducerGroupEvent (line 19) | public enum ProducerGroupEvent {
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java
class ProducerManager (line 40) | public class ProducerManager {
method ProducerManager (line 52) | public ProducerManager() {
method ProducerManager (line 57) | public ProducerManager(final BrokerStatsManager brokerStatsManager) {
method ProducerManager (line 62) | public ProducerManager(final BrokerStatsManager brokerStatsManager, fi...
method groupSize (line 67) | public int groupSize() {
method groupOnline (line 71) | public boolean groupOnline(String group) {
method getGroupChannelTable (line 76) | public ConcurrentMap<String, ConcurrentMap<Channel, ClientChannelInfo>...
method getProducerTable (line 80) | public ProducerTableInfo getProducerTable() {
method scanNotActiveChannel (line 107) | public void scanNotActiveChannel() {
method doChannelCloseEvent (line 145) | public boolean doChannelCloseEvent(final String remoteAddr, final Chan...
method registerProducer (line 206) | public void registerProducer(final String group, final ClientChannelIn...
method unregisterProducer (line 261) | public void unregisterProducer(final String group, final ClientChannel...
method getAvailableChannel (line 279) | public Channel getAvailableChannel(String groupId) {
method findChannel (line 319) | public Channel findChannel(String clientId) {
method callProducerChangeListener (line 323) | private void callProducerChangeListener(ProducerGroupEvent event, Stri...
method appendProducerChangeListener (line 334) | public void appendProducerChangeListener(ProducerChangeListener produc...
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/net/Broker2Client.java
class Broker2Client (line 56) | public class Broker2Client {
method Broker2Client (line 60) | public Broker2Client(BrokerController brokerController) {
method notifyUnsubscribeLite (line 64) | public void notifyUnsubscribeLite(Channel channel, NotifyUnsubscribeLi...
method checkProducerTransactionState (line 74) | public void checkProducerTransactionState(
method callClient (line 90) | public RemotingCommand callClient(final Channel channel,
method notifyConsumerIdsChanged (line 96) | public void notifyConsumerIdsChanged(
method resetOffset (line 116) | public RemotingCommand resetOffset(String topic, String group, long ti...
method resetOffset (line 120) | public RemotingCommand resetOffset(String topic, String group, long ti...
method convertOffsetTable2OffsetList (line 234) | private List<MessageQueueForC> convertOffsetTable2OffsetList(Map<Messa...
method getConsumeStatus (line 245) | public RemotingCommand getConsumeStatus(String topic, String group, St...
FILE: broker/src/main/java/org/apache/rocketmq/broker/client/rebalance/RebalanceLockManager.java
class RebalanceLockManager (line 31) | public class RebalanceLockManager {
method isLockAllExpired (line 39) | public boolean isLockAllExpired(final String group) {
method tryLock (line 52) | public boolean tryLock(final String group, final MessageQueue mq, fina...
method isLocked (line 106) | private boolean isLocked(final String group, final MessageQueue mq, fi...
method tryLockBatch (line 123) | public Set<MessageQueue> tryLockBatch(final String group, final Set<Me...
method unlockBatch (line 192) | public void unlockBatch(final String group, final Set<MessageQueue> mq...
class LockEntry (line 229) | static class LockEntry {
method getClientId (line 233) | public String getClientId() {
method setClientId (line 237) | public void setClientId(String clientId) {
method getLastUpdateTimestamp (line 241) | public long getLastUpdateTimestamp() {
method setLastUpdateTimestamp (line 245) | public void setLastUpdateTimestamp(long lastUpdateTimestamp) {
method isLocked (line 249) | public boolean isLocked(final String clientId) {
method isExpired (line 254) | public boolean isExpired() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/coldctr/ColdCtrStrategy.java
type ColdCtrStrategy (line 19) | public interface ColdCtrStrategy {
method decisionFactor (line 24) | Double decisionFactor();
method promote (line 30) | void promote(String consumerGroup, Long currentThreshold);
method decelerate (line 36) | void decelerate(String consumerGroup, Long currentThreshold);
method collect (line 41) | void collect(Long globalAcc);
FILE: broker/src/main/java/org/apache/rocketmq/broker/coldctr/ColdDataCgCtrService.java
class ColdDataCgCtrService (line 43) | public class ColdDataCgCtrService extends ServiceThread {
method ColdDataCgCtrService (line 63) | public ColdDataCgCtrService(BrokerController brokerController) {
method getServiceName (line 69) | @Override
method run (line 74) | @Override
method getColdDataFlowCtrInfo (line 98) | public String getColdDataFlowCtrInfo() {
method clearDataAcc (line 113) | private void clearDataAcc() {
method sortAndDecelerate (line 143) | private void sortAndDecelerate() {
method coldAcc (line 162) | public void coldAcc(String consumerGroup, long coldDataToAcc) {
method addOrUpdateGroupConfig (line 178) | public void addOrUpdateGroupConfig(String consumerGroup, Long threshol...
method removeGroupConfig (line 182) | public void removeGroupConfig(String consumerGroup) {
method isCgNeedColdDataFlowCtr (line 186) | public boolean isCgNeedColdDataFlowCtr(String consumerGroup) {
method isGlobalColdCtr (line 205) | public boolean isGlobalColdCtr() {
method getBrokerConfig (line 209) | public BrokerConfig getBrokerConfig() {
method getThresholdByConsumerGroup (line 213) | private Long getThresholdByConsumerGroup(String consumerGroup) {
method buildAdaptiveKey (line 234) | private String buildAdaptiveKey(String consumerGroup) {
method isAdminConfig (line 238) | private boolean isAdminConfig(String consumerGroup) {
method clearAdaptiveConfig (line 245) | private void clearAdaptiveConfig() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/coldctr/ColdDataPullRequestHoldService.java
class ColdDataPullRequestHoldService (line 36) | public class ColdDataPullRequestHoldService extends ServiceThread {
method suspendColdDataReadRequest (line 46) | public void suspendColdDataReadRequest(PullRequest pullRequest) {
method ColdDataPullRequestHoldService (line 52) | public ColdDataPullRequestHoldService(BrokerController brokerControlle...
method getServiceName (line 56) | @Override
method run (line 61) | @Override
method checkColdDataPullRequest (line 82) | private void checkColdDataPullRequest() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/coldctr/PIDAdaptiveColdCtrStrategy.java
class PIDAdaptiveColdCtrStrategy (line 23) | public class PIDAdaptiveColdCtrStrategy implements ColdCtrStrategy {
method PIDAdaptiveColdCtrStrategy (line 37) | public PIDAdaptiveColdCtrStrategy(ColdDataCgCtrService coldDataCgCtrSe...
method decisionFactor (line 42) | @Override
method promote (line 57) | @Override
method decelerate (line 64) | @Override
method collect (line 75) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/coldctr/SimpleColdCtrStrategy.java
class SimpleColdCtrStrategy (line 19) | public class SimpleColdCtrStrategy implements ColdCtrStrategy {
method SimpleColdCtrStrategy (line 22) | public SimpleColdCtrStrategy(ColdDataCgCtrService coldDataCgCtrService) {
method decisionFactor (line 26) | @Override
method promote (line 31) | @Override
method decelerate (line 36) | @Override
method collect (line 48) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBConfigManager.java
class RocksDBConfigManager (line 37) | public class RocksDBConfigManager {
method RocksDBConfigManager (line 57) | public RocksDBConfigManager(String filePath, long memTableFlushInterva...
method RocksDBConfigManager (line 66) | public RocksDBConfigManager(String filePath, long memTableFlushInterva...
method init (line 74) | public boolean init(boolean readOnly) {
method isLoaded (line 79) | public boolean isLoaded() {
method init (line 83) | public boolean init() {
method loadDataVersion (line 87) | public boolean loadDataVersion() {
method loadData (line 101) | public boolean loadData(BiConsumer<byte[], byte[]> biConsumer) {
method start (line 115) | public void start() {
method stop (line 118) | public boolean stop() {
method flushWAL (line 126) | public void flushWAL() {
method put (line 145) | public void put(final byte[] keyBytes, final byte[] valueBytes) throws...
method put (line 149) | public void put(String cf, String key, String value) throws Exception {
method put (line 154) | public void put(String cf, final byte[] keyBytes, final byte[] valueBy...
method delete (line 158) | public void delete(final byte[] keyBytes) throws Exception {
method updateKvDataVersion (line 162) | public void updateKvDataVersion() throws Exception {
method getKvDataVersion (line 168) | public DataVersion getKvDataVersion() {
method writeBatchPutOperation (line 173) | public void writeBatchPutOperation(WriteBatch writeBatch, final byte[]...
method batchPutWithWal (line 177) | public void batchPutWithWal(final WriteBatch batch) throws Exception {
method getStatistics (line 181) | public Statistics getStatistics() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBConsumerOffsetManager.java
class RocksDBConsumerOffsetManager (line 40) | public class RocksDBConsumerOffsetManager extends ConsumerOffsetManager {
method RocksDBConsumerOffsetManager (line 51) | public RocksDBConsumerOffsetManager(BrokerController brokerController,...
method RocksDBConsumerOffsetManager (line 69) | public RocksDBConsumerOffsetManager(BrokerController brokerController,...
method RocksDBConsumerOffsetManager (line 73) | public RocksDBConsumerOffsetManager(BrokerController brokerController) {
method load (line 77) | @Override
method loadConsumerOffset (line 91) | public boolean loadConsumerOffset() {
method merge (line 95) | private boolean merge() {
method stop (line 121) | @Override
method removeConsumerOffset (line 126) | @Override
method decodeOffset (line 136) | protected void decodeOffset(final byte[] key, final byte[] body) {
method rocksdbConfigFilePath (line 144) | public String rocksdbConfigFilePath(String storePathRootDir, boolean u...
method configFilePath (line 155) | @Override
method persist (line 160) | @Override
method commitOffset (line 185) | @Override
method exportToJson (line 214) | public synchronized void exportToJson() {
method putWriteBatch (line 219) | private void putWriteBatch(final WriteBatch writeBatch, final String t...
method loadDataVersion (line 227) | @Override
method getDataVersion (line 232) | @Override
method updateDataVersion (line 237) | @Override
method migrateFromSeparateRocksDBs (line 253) | private void migrateFromSeparateRocksDBs() {
method importConsumerOffset (line 332) | private void importConsumerOffset(final byte[] key, final byte[] body) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBLmqSubscriptionGroupManager.java
class RocksDBLmqSubscriptionGroupManager (line 23) | public class RocksDBLmqSubscriptionGroupManager extends RocksDBSubscript...
method RocksDBLmqSubscriptionGroupManager (line 25) | public RocksDBLmqSubscriptionGroupManager(BrokerController brokerContr...
method findSubscriptionGroupConfig (line 29) | @Override
method updateSubscriptionGroupConfig (line 39) | @Override
method containsSubscriptionGroup (line 47) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBLmqTopicConfigManager.java
class RocksDBLmqTopicConfigManager (line 24) | public class RocksDBLmqTopicConfigManager extends RocksDBTopicConfigMana...
method RocksDBLmqTopicConfigManager (line 26) | public RocksDBLmqTopicConfigManager(BrokerController brokerController) {
method selectTopicConfig (line 30) | @Override
method updateTopicConfig (line 38) | @Override
method containsTopic (line 46) | @Override
method simpleLmqTopicConfig (line 54) | private TopicConfig simpleLmqTopicConfig(String topic) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBOffsetSerializeWrapper.java
class RocksDBOffsetSerializeWrapper (line 23) | public class RocksDBOffsetSerializeWrapper extends RemotingSerializable {
method getOffsetTable (line 26) | public ConcurrentMap<Integer, Long> getOffsetTable() {
method setOffsetTable (line 30) | public void setOffsetTable(ConcurrentMap<Integer, Long> offsetTable) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBSubscriptionGroupManager.java
class RocksDBSubscriptionGroupManager (line 39) | public class RocksDBSubscriptionGroupManager extends SubscriptionGroupMa...
method RocksDBSubscriptionGroupManager (line 50) | public RocksDBSubscriptionGroupManager(BrokerController brokerControll...
method RocksDBSubscriptionGroupManager (line 68) | public RocksDBSubscriptionGroupManager(BrokerController brokerControll...
method RocksDBSubscriptionGroupManager (line 72) | public RocksDBSubscriptionGroupManager(BrokerController brokerControll...
method load (line 76) | @Override
method loadDataVersion (line 91) | public boolean loadDataVersion() {
method loadSubscriptionGroupAndForbidden (line 95) | public boolean loadSubscriptionGroupAndForbidden() {
method loadForbidden (line 101) | public boolean loadForbidden(BiConsumer<byte[], byte[]> biConsumer) {
method merge (line 111) | private boolean merge() {
method stop (line 154) | @Override
method putSubscriptionGroupConfig (line 159) | @Override
method putSubscriptionGroupConfigIfAbsent (line 174) | @Override
method removeSubscriptionGroupConfig (line 190) | @Override
method decodeSubscriptionGroup (line 202) | protected void decodeSubscriptionGroup(byte[] key, byte[] body) {
method persist (line 210) | @Override
method exportToJson (line 217) | public synchronized void exportToJson() {
method rocksdbConfigFilePath (line 222) | public String rocksdbConfigFilePath(String storePathRootDir, boolean u...
method configFilePath (line 233) | @Override
method getDataVersion (line 238) | @Override
method updateDataVersion (line 243) | @Override
method decodeForbidden (line 253) | protected void decodeForbidden(byte[] key, byte[] body) {
method updateForbidden (line 265) | @Override
method setForbidden (line 276) | @Override
method clearForbidden (line 287) | @Override
method migrateFromSeparateRocksDBs (line 304) | private void migrateFromSeparateRocksDBs() {
method importSubscriptionGroup (line 395) | private void importSubscriptionGroup(byte[] key, byte[] body) {
method importForbidden (line 410) | private void importForbidden(byte[] key, byte[] body) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBTopicConfigManager.java
class RocksDBTopicConfigManager (line 36) | public class RocksDBTopicConfigManager extends TopicConfigManager {
method RocksDBTopicConfigManager (line 44) | public RocksDBTopicConfigManager(BrokerController brokerController, bo...
method RocksDBTopicConfigManager (line 62) | public RocksDBTopicConfigManager(BrokerController brokerController, bo...
method RocksDBTopicConfigManager (line 66) | public RocksDBTopicConfigManager(BrokerController brokerController) {
method load (line 70) | @Override
method loadTopicConfig (line 85) | public boolean loadTopicConfig() {
method loadDataVersion (line 89) | public boolean loadDataVersion() {
method merge (line 93) | private boolean merge() {
method stop (line 127) | @Override
method decodeTopicConfig (line 132) | protected void decodeTopicConfig(byte[] key, byte[] body) {
method putTopicConfig (line 140) | @Override
method removeTopicConfig (line 154) | @Override
method persist (line 165) | @Override
method exportToJson (line 172) | public synchronized void exportToJson() {
method rocksdbConfigFilePath (line 177) | public String rocksdbConfigFilePath(String storePathRootDir, boolean u...
method configFilePath (line 188) | @Override
method getDataVersion (line 193) | @Override
method updateDataVersion (line 198) | @Override
method migrateFromSeparateRocksDBs (line 214) | private void migrateFromSeparateRocksDBs() {
method importTopicConfig (line 289) | private void importTopicConfig(byte[] key, byte[] body) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v2/ConfigHelper.java
class ConfigHelper (line 31) | public class ConfigHelper {
method loadDataVersion (line 46) | public static Optional<ByteBuf> loadDataVersion(ConfigStorage configSt...
method stampDataVersion (line 67) | public static void stampDataVersion(WriteBatch writeBatch, TableId tab...
method onDataVersionLoad (line 91) | public static void onDataVersionLoad(ByteBuf buf, DataVersion dataVers...
method keyBufOf (line 103) | public static ByteBuf keyBufOf(TableId tableId, final String name) {
method valueBufOf (line 116) | public static ByteBuf valueBufOf(final Object config, SerializationTyp...
method readBytes (line 127) | public static byte[] readBytes(final ByteBuf buf) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v2/ConfigStorage.java
class ConfigStorage (line 53) | public class ConfigStorage extends AbstractRocksDBStorage {
method ConfigStorage (line 71) | public ConfigStorage(MessageStoreConfig messageStoreConfig) {
method statNettyMemory (line 84) | private void statNettyMemory() {
method start (line 89) | @Override
method postLoad (line 102) | @Override
method preShutdown (line 128) | @Override
method initOptions (line 134) | protected void initOptions() {
method initAbleWalWriteOptions (line 139) | @Override
method get (line 153) | public byte[] get(ByteBuffer key) throws RocksDBException {
method write (line 159) | public void write(WriteBatch writeBatch) throws RocksDBException {
method accountWriteOps (line 164) | private void accountWriteOps(long dataSize) {
method iterate (line 169) | public RocksIterator iterate(ByteBuffer beginKey, ByteBuffer endKey) {
class FlushSyncService (line 195) | class FlushSyncService extends ServiceThread {
method getServiceName (line 205) | @Override
method run (line 210) | @Override
method flushAndSyncWAL (line 233) | private void flushAndSyncWAL(boolean onExit) throws RocksDBException {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v2/ConsumerOffsetManagerV2.java
class ConsumerOffsetManagerV2 (line 46) | public class ConsumerOffsetManagerV2 extends ConsumerOffsetManager {
method ConsumerOffsetManagerV2 (line 50) | public ConsumerOffsetManagerV2(BrokerController brokerController, Conf...
method removeConsumerOffset (line 55) | @Override
method removeOffset (line 111) | @Override
method commitOffset (line 191) | @Override
method keyOfConsumerOffset (line 229) | private ByteBuf keyOfConsumerOffset(String group, String topic, int qu...
method keyOfPullOffset (line 250) | private ByteBuf keyOfPullOffset(String group, String topic, int queueI...
method load (line 271) | @Override
method persist (line 276) | @Override
method loadDataVersion (line 296) | public boolean loadDataVersion() {
method loadConsumerOffsets (line 307) | private boolean loadConsumerOffsets() {
method onConsumerOffsetRecordLoad (line 374) | private void onConsumerOffsetRecordLoad(String topic, String group, in...
method queryOffset (line 386) | @Override
method commitPullOffset (line 407) | @Override
method queryPullOffset (line 430) | @Override
method assignResetOffset (line 451) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v2/RecordPrefix.java
type RecordPrefix (line 19) | public enum RecordPrefix {
method RecordPrefix (line 26) | RecordPrefix(byte value) {
method getValue (line 30) | public byte getValue() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v2/SerializationType.java
type SerializationType (line 19) | public enum SerializationType {
method SerializationType (line 30) | SerializationType(byte value) {
method getValue (line 34) | public byte getValue() {
method valueOf (line 38) | public static SerializationType valueOf(byte value) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v2/SubscriptionGroupManagerV2.java
class SubscriptionGroupManagerV2 (line 32) | public class SubscriptionGroupManagerV2 extends SubscriptionGroupManager {
method SubscriptionGroupManagerV2 (line 36) | public SubscriptionGroupManagerV2(BrokerController brokerController, C...
method load (line 41) | @Override
method loadDataVersion (line 46) | public boolean loadDataVersion() {
method loadSubscriptions (line 59) | private boolean loadSubscriptions() {
method parseSubscription (line 86) | private SubscriptionGroupConfig parseSubscription(byte[] key, byte[] v...
method persist (line 111) | @Override
method findSubscriptionGroupConfig (line 120) | @Override
method updateSubscriptionGroupConfig (line 130) | @Override
method containsSubscriptionGroup (line 153) | @Override
method removeSubscriptionGroupConfig (line 162) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v2/TableId.java
type TableId (line 22) | public enum TableId {
method TableId (line 31) | TableId(short value) {
method getValue (line 35) | public short getValue() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v2/TablePrefix.java
type TablePrefix (line 19) | public enum TablePrefix {
method TablePrefix (line 25) | TablePrefix(byte value) {
method getValue (line 29) | public byte getValue() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/config/v2/TopicConfigManagerV2.java
class TopicConfigManagerV2 (line 37) | public class TopicConfigManagerV2 extends TopicConfigManager {
method TopicConfigManagerV2 (line 40) | public TopicConfigManagerV2(BrokerController brokerController, ConfigS...
method load (line 45) | @Override
method loadDataVersion (line 50) | public boolean loadDataVersion() {
method loadTopicConfig (line 61) | private boolean loadTopicConfig() {
method parseTopicConfig (line 98) | private TopicConfig parseTopicConfig(byte[] key, byte[] value) {
method persist (line 125) | @Override
method selectTopicConfig (line 134) | @Override
method updateTopicConfig (line 142) | @Override
method removeTopicConfig (line 166) | @Override
method containsTopic (line 182) | @Override
method simpleLmqTopicConfig (line 190) | private TopicConfig simpleLmqTopicConfig(String topic) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java
class ReplicasManager (line 67) | public class ReplicasManager {
method ReplicasManager (line 106) | public ReplicasManager(final BrokerController brokerController) {
type State (line 122) | enum State {
type RegisterState (line 130) | enum RegisterState {
method start (line 137) | public void start() {
method startBasicService (line 163) | private boolean startBasicService() {
method shutdown (line 217) | public void shutdown() {
method changeBrokerRole (line 225) | public synchronized void changeBrokerRole(final Long newMasterBrokerId...
method changeToMaster (line 237) | public void changeToMaster(final int newMasterEpoch, final int syncSta...
method changeToSlave (line 281) | public void changeToSlave(final String newMasterAddress, final int new...
method registerBrokerWhenRoleChange (line 321) | public void registerBrokerWhenRoleChange() {
method changeSyncStateSet (line 337) | private void changeSyncStateSet(final Set<Long> newSyncStateSet, final...
method handleSlaveSynchronize (line 348) | private void handleSlaveSynchronize(final BrokerRole role) {
method brokerElect (line 375) | private boolean brokerElect() {
method sendHeartbeatToController (line 401) | public void sendHeartbeatToController() {
method register (line 427) | private boolean register() {
method getNextBrokerId (line 486) | private Long getNextBrokerId() {
method createTempMetadataFile (line 503) | private boolean createTempMetadataFile(Long brokerId) {
method applyBrokerId (line 521) | private boolean applyBrokerId() {
method createMetadataFileAndDeleteTemp (line 538) | private boolean createMetadataFileAndDeleteTemp() {
method registerBrokerToController (line 559) | private boolean registerBrokerToController() {
method confirmNowRegisteringState (line 586) | private void confirmNowRegisteringState() {
method checkMetadataValid (line 610) | private boolean checkMetadataValid() {
method schedulingSyncBrokerMetadata (line 641) | private void schedulingSyncBrokerMetadata() {
method schedulingSyncControllerMetadata (line 691) | private boolean schedulingSyncControllerMetadata() {
method updateControllerMetadata (line 714) | private boolean updateControllerMetadata() {
method schedulingCheckSyncStateSet (line 733) | private void schedulingCheckSyncStateSet() {
method checkSyncStateSetAndDoReport (line 741) | private void checkSyncStateSetAndDoReport() {
method doReportSyncStateSetChanged (line 759) | private void doReportSyncStateSetChanged(Set<Long> newSyncStateSet) {
method stopCheckSyncStateSet (line 771) | private void stopCheckSyncStateSet() {
method scanAvailableControllerAddresses (line 777) | private void scanAvailableControllerAddresses() {
method updateControllerAddr (line 808) | private void updateControllerAddr() {
method getLastEpoch (line 822) | public int getLastEpoch() {
method getBrokerRole (line 826) | public BrokerRole getBrokerRole() {
method isMasterState (line 830) | public boolean isMasterState() {
method getSyncStateSet (line 834) | public SyncStateSet getSyncStateSet() {
method getBrokerAddress (line 838) | public String getBrokerAddress() {
method getMasterAddress (line 842) | public String getMasterAddress() {
method getMasterEpoch (line 846) | public int getMasterEpoch() {
method getControllerAddresses (line 850) | public List<String> getControllerAddresses() {
method getEpochEntries (line 854) | public List<EpochEntry> getEpochEntries() {
method getAvailableControllerAddresses (line 858) | public List<String> getAvailableControllerAddresses() {
method getBrokerControllerId (line 862) | public Long getBrokerControllerId() {
method getRegisterState (line 866) | public RegisterState getRegisterState() {
method getState (line 870) | public State getState() {
method getBrokerMetadata (line 874) | public BrokerMetadata getBrokerMetadata() {
method getTempBrokerMetadata (line 878) | public TempBrokerMetadata getTempBrokerMetadata() {
method setFenced (line 882) | public void setFenced(boolean fenced) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/dledger/DLedgerRoleChangeHandler.java
class DLedgerRoleChangeHandler (line 36) | public class DLedgerRoleChangeHandler implements DLedgerLeaderElector.Ro...
method DLedgerRoleChangeHandler (line 47) | public DLedgerRoleChangeHandler(BrokerController brokerController, Def...
method handle (line 56) | @Override
method handleSlaveSynchronize (line 106) | private void handleSlaveSynchronize(BrokerRole role) {
method changeToSlave (line 136) | public void changeToSlave(int brokerId) {
method changeToMaster (line 156) | public void changeToMaster(BrokerRole role) {
method startup (line 179) | @Override
method shutdown (line 184) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/failover/EscapeBridge.java
class EscapeBridge (line 57) | public class EscapeBridge {
method EscapeBridge (line 68) | public EscapeBridge(BrokerController brokerController) {
method start (line 74) | public void start() throws Exception {
method shutdown (line 89) | public void shutdown() {
method putMessage (line 95) | public PutMessageResult putMessage(MessageExtBrokerInner messageExt) {
method putMessageToRemoteBroker (line 117) | public SendResult putMessageToRemoteBroker(MessageExtBrokerInner messa...
method asyncPutMessage (line 178) | public CompletableFuture<PutMessageResult> asyncPutMessage(MessageExtB...
method getProducerGroup (line 214) | private String getProducerGroup(MessageExtBrokerInner messageExt) {
method putMessageToSpecificQueue (line 225) | public PutMessageResult putMessageToSpecificQueue(MessageExtBrokerInne...
method asyncPutMessageToSpecificQueue (line 238) | public CompletableFuture<PutMessageResult> asyncPutMessageToSpecificQu...
method asyncRemotePutMessageToSpecificQueue (line 246) | public CompletableFuture<PutMessageResult> asyncRemotePutMessageToSpec...
method transformSendResult2PutResult (line 281) | private PutMessageResult transformSendResult2PutResult(SendResult send...
method getMessage (line 299) | public Triple<MessageExt, String, Boolean> getMessage(String topic, lo...
method getMessageAsync (line 305) | public CompletableFuture<Triple<MessageExt, String, Boolean>> getMessa...
method decodeMsgList (line 331) | protected List<MessageExt> decodeMsgList(GetMessageResult getMessageRe...
method getMessageFromRemote (line 359) | protected Triple<MessageExt, String, Boolean> getMessageFromRemote(Str...
method getMessageFromRemoteAsync (line 365) | protected CompletableFuture<Triple<MessageExt, String, Boolean>> getMe...
FILE: broker/src/main/java/org/apache/rocketmq/broker/filter/CommitLogDispatcherCalcBitMap.java
class CommitLogDispatcherCalcBitMap (line 35) | public class CommitLogDispatcherCalcBitMap implements CommitLogDispatcher {
method CommitLogDispatcherCalcBitMap (line 42) | public CommitLogDispatcherCalcBitMap(BrokerConfig brokerConfig, Consum...
method dispatch (line 47) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/filter/ConsumerFilterData.java
class ConsumerFilterData (line 32) | public class ConsumerFilterData {
method isDead (line 44) | public boolean isDead() {
method howLongAfterDeath (line 48) | public long howLongAfterDeath() {
method isMsgInLive (line 58) | public boolean isMsgInLive(long msgStoreTime) {
method getConsumerGroup (line 62) | public String getConsumerGroup() {
method setConsumerGroup (line 66) | public void setConsumerGroup(final String consumerGroup) {
method getTopic (line 70) | public String getTopic() {
method setTopic (line 74) | public void setTopic(final String topic) {
method getExpression (line 78) | public String getExpression() {
method setExpression (line 82) | public void setExpression(final String expression) {
method getExpressionType (line 86) | public String getExpressionType() {
method setExpressionType (line 90) | public void setExpressionType(final String expressionType) {
method getCompiledExpression (line 94) | public Expression getCompiledExpression() {
method setCompiledExpression (line 98) | public void setCompiledExpression(final Expression compiledExpression) {
method getBornTime (line 102) | public long getBornTime() {
method setBornTime (line 106) | public void setBornTime(final long bornTime) {
method getDeadTime (line 110) | public long getDeadTime() {
method setDeadTime (line 114) | public void setDeadTime(final long deadTime) {
method getBloomFilterData (line 118) | public BloomFilterData getBloomFilterData() {
method setBloomFilterData (line 122) | public void setBloomFilterData(final BloomFilterData bloomFilterData) {
method getClientVersion (line 126) | public long getClientVersion() {
method setClientVersion (line 130) | public void setClientVersion(long clientVersion) {
method equals (line 134) | @Override
method hashCode (line 139) | @Override
method toString (line 144) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/filter/ConsumerFilterManager.java
class ConsumerFilterManager (line 43) | public class ConsumerFilterManager extends ConfigManager {
method ConsumerFilterManager (line 55) | public ConsumerFilterManager() {
method ConsumerFilterManager (line 60) | public ConsumerFilterManager(BrokerController brokerController) {
method build (line 77) | public static ConsumerFilterData build(final String topic, final Strin...
method register (line 104) | public void register(final String consumerGroup, final Collection<Subs...
method register (line 137) | public boolean register(final String topic, final String consumerGroup...
method unRegister (line 160) | public void unRegister(final String consumerGroup) {
method get (line 166) | public ConsumerFilterData get(final String topic, final String consume...
method getByGroup (line 177) | public Collection<ConsumerFilterData> getByGroup(final String consumer...
method get (line 198) | public final Collection<ConsumerFilterData> get(final String topic) {
method getBloomFilter (line 209) | public BloomFilter getBloomFilter() {
method encode (line 213) | @Override
method configFilePath (line 218) | @Override
method decode (line 228) | @Override
method encode (line 281) | @Override
method clean (line 290) | public void clean() {
method getFilterDataByTopic (line 315) | public ConcurrentMap<String, FilterDataMapByTopic> getFilterDataByTopi...
method setFilterDataByTopic (line 319) | public void setFilterDataByTopic(final ConcurrentHashMap<String, Filte...
class FilterDataMapByTopic (line 323) | public static class FilterDataMapByTopic {
method FilterDataMapByTopic (line 330) | public FilterDataMapByTopic() {
method FilterDataMapByTopic (line 333) | public FilterDataMapByTopic(String topic) {
method unRegister (line 337) | public void unRegister(String consumerGroup) {
method register (line 355) | public boolean register(String consumerGroup, String expression, Str...
method reAlive (line 442) | protected void reAlive(ConsumerFilterData filterData) {
method get (line 448) | public final ConsumerFilterData get(String consumerGroup) {
method getGroupFilterData (line 452) | public final ConcurrentMap<String, ConsumerFilterData> getGroupFilte...
method setGroupFilterData (line 456) | public void setGroupFilterData(final ConcurrentHashMap<String, Consu...
method getTopic (line 460) | public String getTopic() {
method setTopic (line 464) | public void setTopic(final String topic) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/filter/ExpressionForRetryMessageFilter.java
class ExpressionForRetryMessageFilter (line 33) | public class ExpressionForRetryMessageFilter extends ExpressionMessageFi...
method ExpressionForRetryMessageFilter (line 34) | public ExpressionForRetryMessageFilter(SubscriptionData subscriptionDa...
method isMatchedByCommitLog (line 39) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/filter/ExpressionMessageFilter.java
class ExpressionMessageFilter (line 33) | public class ExpressionMessageFilter implements MessageFilter {
method ExpressionMessageFilter (line 42) | public ExpressionMessageFilter(SubscriptionData subscriptionData, Cons...
method isMatchedByConsumeQueue (line 59) | @Override
method isMatchedByCommitLog (line 116) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/filter/MessageEvaluationContext.java
class MessageEvaluationContext (line 29) | public class MessageEvaluationContext implements EvaluationContext {
method MessageEvaluationContext (line 33) | public MessageEvaluationContext(Map<String, String> properties) {
method get (line 37) | @Override
method keyValues (line 45) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/latency/BrokerFastFailure.java
class BrokerFastFailure (line 41) | public class BrokerFastFailure {
method BrokerFastFailure (line 50) | public BrokerFastFailure(final BrokerController brokerController) {
method initCleanExpiredRequestQueueList (line 58) | private void initCleanExpiredRequestQueueList() {
method castRunnable (line 68) | public static RequestTask castRunnable(final Runnable runnable) {
method start (line 81) | public void start() {
method cleanExpiredRequest (line 92) | private void cleanExpiredRequest() {
method cleanExpiredRequestInQueue (line 122) | void cleanExpiredRequestInQueue(final BlockingQueue<Runnable> blocking...
method addCleanExpiredRequestQueue (line 156) | public synchronized void addCleanExpiredRequestQueue(BlockingQueue<Run...
method shutdown (line 161) | public void shutdown() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/AbstractLiteLifecycleManager.java
class AbstractLiteLifecycleManager (line 42) | public abstract class AbstractLiteLifecycleManager extends ServiceThread {
method AbstractLiteLifecycleManager (line 52) | public AbstractLiteLifecycleManager(BrokerController brokerController,...
method init (line 58) | public void init() {
method getMaxOffsetInQueue (line 66) | public abstract long getMaxOffsetInQueue(String lmqName);
method collectExpiredLiteTopic (line 72) | public abstract List<Pair<String, String>> collectExpiredLiteTopic();
method collectByParentTopic (line 78) | public abstract List<String> collectByParentTopic(String parentTopic);
method isSubscriptionActive (line 86) | public boolean isSubscriptionActive(String parentTopic, String lmqName) {
method getLiteTopicCount (line 90) | public int getLiteTopicCount(String parentTopic) {
method isLmqExist (line 97) | public boolean isLmqExist(String lmqName) {
method cleanExpiredLiteTopic (line 101) | public void cleanExpiredLiteTopic() {
method cleanByParentTopic (line 115) | public void cleanByParentTopic(String parentTopic) {
method run (line 129) | @Override
method updateMetadata (line 146) | public void updateMetadata() {
method isLiteTopicExpired (line 151) | public boolean isLiteTopicExpired(String parentTopic, String lmqName, ...
method deleteLmq (line 179) | public void deleteLmq(String parentTopic, String lmqName) {
method hasConsumerLag (line 203) | public boolean hasConsumerLag(String lmqName, long maxOffset, long lat...
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/LiteCtlListener.java
type LiteCtlListener (line 20) | public interface LiteCtlListener {
method onRegister (line 22) | void onRegister(String clientId, String group, String lmqName);
method onUnregister (line 24) | void onUnregister(String clientId, String group, String lmqName);
method onRemoveAll (line 26) | void onRemoveAll(String clientId, String group);
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/LiteEventDispatcher.java
class LiteEventDispatcher (line 52) | public class LiteEventDispatcher extends ServiceThread {
method LiteEventDispatcher (line 77) | public LiteEventDispatcher(BrokerController brokerController,
method init (line 85) | public void init() {
method dispatch (line 99) | public void dispatch(String group, String lmqName, int queueId, long o...
method doDispatch (line 109) | @SuppressWarnings("unchecked")
method selectAndDispatch (line 136) | @VisibleForTesting
method tryDispatchToClient (line 194) | @VisibleForTesting
method getEventIterator (line 210) | public Iterator<String> getEventIterator(String clientId) {
method doFullDispatch (line 227) | public void doFullDispatch(String clientId, String group) {
method doFullDispatchByGroup (line 278) | public void doFullDispatchByGroup(String group) {
method scheduleFullDispatch (line 286) | public void scheduleFullDispatch(String clientId, String group, boolea...
method getAllSubscriber (line 306) | @VisibleForTesting
method getClientLastAccessTime (line 341) | public long getClientLastAccessTime(String clientId) {
method getServiceName (line 349) | @Override
method run (line 357) | @Override
method scan (line 376) | public void scan() {
method getEventMapSize (line 417) | public int getEventMapSize() {
class ClientEventSet (line 426) | class ClientEventSet {
method ClientEventSet (line 433) | public ClientEventSet(String group) {
method offer (line 439) | public boolean offer(String event) {
method poll (line 455) | public String poll() {
method maybeBlock (line 465) | public boolean maybeBlock() {
method isLowWaterMark (line 471) | public boolean isLowWaterMark() {
method isActiveConsuming (line 476) | public boolean isActiveConsuming() {
method size (line 480) | public int size() {
class LiteCtlListenerImpl (line 485) | class LiteCtlListenerImpl implements LiteCtlListener {
method onRegister (line 487) | @Override
method onUnregister (line 494) | @Override
method onRemoveAll (line 501) | @Override
class EventSetIterator (line 515) | static class EventSetIterator implements Iterator<String> {
method EventSetIterator (line 518) | public EventSetIterator(ClientEventSet eventSet) {
method hasNext (line 522) | @Override
method next (line 527) | @Override
class LiteSubscriptionIterator (line 533) | static class LiteSubscriptionIterator implements Iterator<String> {
method LiteSubscriptionIterator (line 536) | public LiteSubscriptionIterator(String parentTopic, Iterator<String>...
method hasNext (line 540) | @Override
method next (line 545) | @Override
class FullDispatchRequest (line 551) | static class FullDispatchRequest {
method FullDispatchRequest (line 555) | public FullDispatchRequest(String clientId, String group, long delay...
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/LiteLifecycleManager.java
class LiteLifecycleManager (line 36) | public class LiteLifecycleManager extends AbstractLiteLifecycleManager {
method LiteLifecycleManager (line 39) | public LiteLifecycleManager(BrokerController brokerController, LiteSha...
method getMaxOffsetInQueue (line 43) | @Override
method collectByParentTopic (line 49) | @Override
method collectExpiredLiteTopic (line 66) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/LiteMetadataUtil.java
class LiteMetadataUtil (line 30) | public class LiteMetadataUtil {
method isConsumeEnable (line 32) | public static boolean isConsumeEnable(String group, BrokerController b...
method isLiteMessageType (line 41) | public static boolean isLiteMessageType(String parentTopic, BrokerCont...
method isLiteGroupType (line 49) | public static boolean isLiteGroupType(String group, BrokerController b...
method getLiteBindTopic (line 58) | public static String getLiteBindTopic(String group, BrokerController b...
method isSubLiteExclusive (line 67) | public static boolean isSubLiteExclusive(String group, BrokerControlle...
method isResetOffsetInExclusiveMode (line 76) | public static boolean isResetOffsetInExclusiveMode(String group, Broke...
method isResetOffsetOnUnsubscribe (line 85) | public static boolean isResetOffsetOnUnsubscribe(String group, BrokerC...
method getMaxClientEventCount (line 94) | public static int getMaxClientEventCount(String group, BrokerControlle...
method getTopicTtlMap (line 106) | public static Map<String, Integer> getTopicTtlMap(BrokerController bro...
method getSubscriberGroupMap (line 121) | public static Map<String, Set<String>> getSubscriberGroupMap(BrokerCon...
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/LiteQuotaException.java
class LiteQuotaException (line 20) | public class LiteQuotaException extends RuntimeException {
method LiteQuotaException (line 21) | public LiteQuotaException(String message) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/LiteSharding.java
type LiteSharding (line 20) | public interface LiteSharding {
method shardingByLmqName (line 22) | String shardingByLmqName(String parentTopic, String lmqName);
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/LiteShardingImpl.java
class LiteShardingImpl (line 31) | public class LiteShardingImpl implements LiteSharding {
method LiteShardingImpl (line 36) | public LiteShardingImpl(BrokerController brokerController, TopicRouteI...
method shardingByLmqName (line 41) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/LiteSubscriptionRegistry.java
type LiteSubscriptionRegistry (line 28) | public interface LiteSubscriptionRegistry {
method updateClientChannel (line 30) | void updateClientChannel(String clientId, Channel channel);
method getLiteSubscription (line 32) | LiteSubscription getLiteSubscription(String clientId);
method getActiveSubscriptionNum (line 34) | int getActiveSubscriptionNum();
method addPartialSubscription (line 36) | void addPartialSubscription(String clientId, String group, String topi...
method removePartialSubscription (line 38) | void removePartialSubscription(String clientId, String group, String t...
method addCompleteSubscription (line 40) | void addCompleteSubscription(String clientId, String group, String top...
method removeCompleteSubscription (line 42) | void removeCompleteSubscription(String clientId);
method addListener (line 44) | void addListener(LiteCtlListener listener);
method getSubscriber (line 46) | Set<ClientGroup> getSubscriber(String lmqName);
method getAllClientIdByGroup (line 48) | List<String> getAllClientIdByGroup(String group);
method cleanSubscription (line 50) | void cleanSubscription(String lmqName, boolean notifyClient);
method start (line 52) | void start();
method shutdown (line 54) | void shutdown();
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/LiteSubscriptionRegistryImpl.java
class LiteSubscriptionRegistryImpl (line 44) | public class LiteSubscriptionRegistryImpl extends ServiceThread implemen...
method LiteSubscriptionRegistryImpl (line 55) | public LiteSubscriptionRegistryImpl(BrokerController brokerController,
method updateClientChannel (line 65) | @Override
method addPartialSubscription (line 70) | @Override
method removePartialSubscription (line 96) | @Override
method addCompleteSubscription (line 107) | @Override
method removeCompleteSubscription (line 131) | @Override
method addListener (line 148) | @Override
method getSubscriber (line 153) | @Override
method cleanSubscription (line 164) | @Override
method addTopicGroup (line 184) | protected void addTopicGroup(ClientGroup clientGroup, String lmqName) {
method removeTopicGroup (line 195) | protected void removeTopicGroup(ClientGroup clientGroup, String lmqNam...
method excludeClientByLmqName (line 218) | protected void excludeClientByLmqName(String newClientId, String group...
method notifyUnsubscribeLite (line 243) | private void notifyUnsubscribeLite(String clientId, String group, Stri...
method getLiteSubscription (line 261) | @Override
method getActiveSubscriptionNum (line 266) | @Override
method getAllClientIdByGroup (line 271) | @Override
method resetOffset (line 279) | protected void resetOffset(String lmqName, String group, String client...
method getOrCreateLiteSubscription (line 314) | private LiteSubscription getOrCreateLiteSubscription(String clientId, ...
method run (line 321) | @Override
method cleanupExpiredSubscriptions (line 339) | @VisibleForTesting
FILE: broker/src/main/java/org/apache/rocketmq/broker/lite/RocksDBLiteLifecycleManager.java
class RocksDBLiteLifecycleManager (line 40) | public class RocksDBLiteLifecycleManager extends AbstractLiteLifecycleMa...
method RocksDBLiteLifecycleManager (line 45) | public RocksDBLiteLifecycleManager(BrokerController brokerController, ...
method getMaxOffsetInQueue (line 49) | @Override
method collectByParentTopic (line 54) | @Override
method collectExpiredLiteTopic (line 72) | @Override
method init (line 91) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/loadbalance/MessageRequestModeManager.java
class MessageRequestModeManager (line 26) | public class MessageRequestModeManager extends ConfigManager {
method MessageRequestModeManager (line 33) | public MessageRequestModeManager() {
method MessageRequestModeManager (line 37) | public MessageRequestModeManager(BrokerController brokerController) {
method setMessageRequestMode (line 41) | public void setMessageRequestMode(String topic, String consumerGroup, ...
method getMessageRequestMode (line 54) | public SetMessageRequestModeRequestBody getMessageRequestMode(String t...
method getMessageRequestModeMap (line 63) | public ConcurrentHashMap<String, ConcurrentHashMap<String, SetMessageR...
method setMessageRequestModeMap (line 67) | public void setMessageRequestModeMap(ConcurrentHashMap<String, Concurr...
method encode (line 71) | @Override
method configFilePath (line 76) | @Override
method decode (line 81) | @Override
method encode (line 91) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/LmqPullRequestHoldService.java
class LmqPullRequestHoldService (line 25) | public class LmqPullRequestHoldService extends PullRequestHoldService {
method LmqPullRequestHoldService (line 28) | public LmqPullRequestHoldService(BrokerController brokerController) {
method getServiceName (line 32) | @Override
method checkHoldRequest (line 40) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/ManyPullRequest.java
class ManyPullRequest (line 22) | public class ManyPullRequest {
method addPullRequest (line 25) | public synchronized void addPullRequest(final PullRequest pullRequest) {
method addPullRequest (line 29) | public synchronized void addPullRequest(final List<PullRequest> many) {
method cloneListAndClear (line 33) | public synchronized List<PullRequest> cloneListAndClear() {
method getPullRequestList (line 43) | public ArrayList<PullRequest> getPullRequestList() {
method isEmpty (line 47) | public synchronized boolean isEmpty() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/NotificationRequest.java
class NotificationRequest (line 25) | public class NotificationRequest {
method NotificationRequest (line 31) | public NotificationRequest(RemotingCommand remotingCommand, Channel ch...
method getChannel (line 37) | public Channel getChannel() {
method getRemotingCommand (line 41) | public RemotingCommand getRemotingCommand() {
method isTimeout (line 45) | public boolean isTimeout() {
method complete (line 49) | public boolean complete() {
method toString (line 53) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/NotifyMessageArrivingListener.java
class NotifyMessageArrivingListener (line 28) | public class NotifyMessageArrivingListener implements MessageArrivingLis...
method NotifyMessageArrivingListener (line 34) | public NotifyMessageArrivingListener(final PullRequestHoldService pull...
method arriving (line 41) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/PollingHeader.java
class PollingHeader (line 23) | public class PollingHeader {
method PollingHeader (line 30) | public PollingHeader(PopMessageRequestHeader requestHeader) {
method PollingHeader (line 38) | public PollingHeader(NotificationRequestHeader requestHeader) {
method getConsumerGroup (line 46) | public String getConsumerGroup() {
method getTopic (line 50) | public String getTopic() {
method getQueueId (line 54) | public int getQueueId() {
method getBornTime (line 58) | public long getBornTime() {
method getPollTime (line 62) | public long getPollTime() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/PollingResult.java
type PollingResult (line 20) | public enum PollingResult {
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/PopCommandCallback.java
class PopCommandCallback (line 25) | public class PopCommandCallback implements CommandCallback {
method PopCommandCallback (line 32) | public PopCommandCallback(
method accept (line 43) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/PopLiteLongPollingService.java
class PopLiteLongPollingService (line 46) | public class PopLiteLongPollingService extends ServiceThread {
method PopLiteLongPollingService (line 57) | public PopLiteLongPollingService(BrokerController brokerController, Ne...
method getServiceName (line 65) | @Override
method run (line 73) | @Override
method notifyMessageArriving (line 148) | public boolean notifyMessageArriving(final String clientId, boolean fo...
method wakeUp (line 165) | public boolean wakeUp(final PopRequest request) {
method polling (line 197) | public PollingResult polling(final ChannelHandlerContext ctx, Remoting...
method cleanUnusedResource (line 246) | private void cleanUnusedResource() {
method pollRemotingCommands (line 260) | private PopRequest pollRemotingCommands(ConcurrentSkipListSet<PopReque...
method getPollingKey (line 281) | private String getPollingKey(String clientId, String group) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/PopLongPollingService.java
class PopLongPollingService (line 55) | public class PopLongPollingService extends ServiceThread {
method PopLongPollingService (line 68) | public PopLongPollingService(BrokerController brokerController, NettyR...
method getServiceName (line 85) | @Override
method run (line 93) | @Override
method notifyMessageArrivingWithRetryTopic (line 168) | public void notifyMessageArrivingWithRetryTopic(final String topic, fi...
method notifyMessageArrivingWithRetryTopic (line 172) | public void notifyMessageArrivingWithRetryTopic(final String topic, fi...
method notifyMessageArrivingFromRetry (line 181) | private void notifyMessageArrivingFromRetry(String topic, int queueId,...
method notifyMessageArriving (line 201) | public void notifyMessageArriving(final String topic, final int queueI...
method notifyMessageArriving (line 217) | public boolean notifyMessageArriving(final String topic, final int que...
method notifyMessageArriving (line 222) | public boolean notifyMessageArriving(final String topic, final int que...
method notifyMessageArriving (line 227) | public boolean notifyMessageArriving(final String topic, final int que...
method wakeUp (line 259) | public boolean wakeUp(final PopRequest request) {
method wakeUp (line 263) | public boolean wakeUp(final PopRequest request, CommandCallback callba...
method polling (line 309) | public PollingResult polling(final ChannelHandlerContext ctx, Remoting...
method polling (line 314) | public PollingResult polling(final ChannelHandlerContext ctx, Remoting...
method getPollingMap (line 357) | public Cache<String, ConcurrentSkipListSet<PopRequest>> getPollingMap() {
method getTopicCidMap (line 361) | public Cache<String, ConcurrentHashMap<String, Byte>> getTopicCidMap() {
method cleanUnusedResource (line 365) | private void cleanUnusedResource() {
method pollRemotingCommands (line 420) | private PopRequest pollRemotingCommands(ConcurrentSkipListSet<PopReque...
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/PopRequest.java
class PopRequest (line 28) | public class PopRequest {
method PopRequest (line 40) | public PopRequest(RemotingCommand remotingCommand, ChannelHandlerConte...
method getChannel (line 50) | public Channel getChannel() {
method getCtx (line 54) | public ChannelHandlerContext getCtx() {
method getRemotingCommand (line 58) | public RemotingCommand getRemotingCommand() {
method isTimeout (line 62) | public boolean isTimeout() {
method complete (line 66) | public boolean complete() {
method getExpired (line 70) | public long getExpired() {
method getSubscriptionData (line 74) | public SubscriptionData getSubscriptionData() {
method getMessageFilter (line 78) | public MessageFilter getMessageFilter() {
method toString (line 82) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/PullRequest.java
class PullRequest (line 24) | public class PullRequest {
method PullRequest (line 33) | public PullRequest(RemotingCommand requestCommand, Channel clientChann...
method getRequestCommand (line 45) | public RemotingCommand getRequestCommand() {
method getClientChannel (line 49) | public Channel getClientChannel() {
method getTimeoutMillis (line 53) | public long getTimeoutMillis() {
method getSuspendTimestamp (line 57) | public long getSuspendTimestamp() {
method getPullFromThisOffset (line 61) | public long getPullFromThisOffset() {
method getSubscriptionData (line 65) | public SubscriptionData getSubscriptionData() {
method getMessageFilter (line 69) | public MessageFilter getMessageFilter() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/longpolling/PullRequestHoldService.java
class PullRequestHoldService (line 33) | public class PullRequestHoldService extends ServiceThread {
method PullRequestHoldService (line 41) | public PullRequestHoldService(final BrokerController brokerController) {
method suspendPullRequest (line 45) | public void suspendPullRequest(final String topic, final int queueId, ...
method buildKey (line 60) | private String buildKey(final String topic, final int queueId) {
method run (line 68) | @Override
method getServiceName (line 93) | @Override
method checkHoldRequest (line 101) | protected void checkHoldRequest() {
method notifyMessageArriving (line 119) | public void notifyMessageArriving(final String topic, final int queueI...
method notifyMessageArriving (line 123) | public void notifyMessageArriving(final String topic, final int queueI...
method notifyMasterOnline (line 186) | public void notifyMasterOnline() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsConstant.java
class BrokerMetricsConstant (line 19) | public class BrokerMetricsConstant {
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
class BrokerMetricsManager (line 117) | public class BrokerMetricsManager {
method BrokerMetricsManager (line 175) | public BrokerMetricsManager(BrokerController brokerController) {
method newAttributesBuilder (line 186) | public AttributesBuilder newAttributesBuilder() {
method buildLagAttributes (line 196) | private Attributes buildLagAttributes(ConsumerLagCalculator.BaseCalcul...
method isRetryOrDlqTopic (line 205) | public static boolean isRetryOrDlqTopic(String topic) {
method isSystemGroup (line 212) | public static boolean isSystemGroup(String group) {
method isSystem (line 225) | public static boolean isSystem(String topic, String group) {
method getMessageType (line 229) | public static TopicMessageType getMessageType(SendMessageRequestHeader...
method getBrokerMeter (line 247) | public Meter getBrokerMeter() {
method getMessagesInTotal (line 252) | public LongCounter getMessagesInTotal() {
method getMessagesOutTotal (line 256) | public LongCounter getMessagesOutTotal() {
method getThroughputInTotal (line 260) | public LongCounter getThroughputInTotal() {
method getThroughputOutTotal (line 264) | public LongCounter getThroughputOutTotal() {
method getMessageSize (line 268) | public LongHistogram getMessageSize() {
method getSendToDlqMessages (line 272) | public LongCounter getSendToDlqMessages() {
method getCommitMessagesTotal (line 276) | public LongCounter getCommitMessagesTotal() {
method getRollBackMessagesTotal (line 280) | public LongCounter getRollBackMessagesTotal() {
method getTransactionFinishLatency (line 284) | public LongHistogram getTransactionFinishLatency() {
method getTopicCreateExecuteTime (line 288) | public LongHistogram getTopicCreateExecuteTime() {
method getConsumerGroupCreateExecuteTime (line 292) | public LongHistogram getConsumerGroupCreateExecuteTime() {
method setAttributesBuilderSupplier (line 297) | public void setAttributesBuilderSupplier(Supplier<AttributesBuilder> a...
method checkConfig (line 301) | private boolean checkConfig() {
method init (line 321) | private void init() {
method registerMetricsView (line 432) | private void registerMetricsView(SdkMeterProviderBuilder providerBuild...
method initStatsMetrics (line 532) | private void initStatsMetrics() {
method initRequestMetrics (line 571) | private void initRequestMetrics() {
method initConnectionMetrics (line 610) | private void initConnectionMetrics() {
method initLagAndDlqMetrics (line 670) | private void initLagAndDlqMetrics() {
method initTransactionMetrics (line 736) | private void initTransactionMetrics() {
method initOtherMetrics (line 769) | private void initOtherMetrics() {
method getLiteConsumerLagCalculator (line 781) | public LiteConsumerLagCalculator getLiteConsumerLagCalculator() {
method shutdown (line 785) | public void shutdown() {
method getRemotingMetricsManager (line 828) | public RemotingMetricsManager getRemotingMetricsManager() {
method getPopMetricsManager (line 832) | public PopMetricsManager getPopMetricsManager() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/ConsumerAttr.java
class ConsumerAttr (line 23) | public class ConsumerAttr {
method ConsumerAttr (line 29) | public ConsumerAttr(String group, LanguageCode language, int version, ...
method equals (line 36) | @Override
method hashCode (line 46) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/ConsumerLagCalculator.java
class ConsumerLagCalculator (line 61) | public class ConsumerLagCalculator {
method ConsumerLagCalculator (line 76) | public ConsumerLagCalculator(BrokerController brokerController) {
class ProcessGroupInfo (line 89) | public static class ProcessGroupInfo {
method ProcessGroupInfo (line 95) | public ProcessGroupInfo(String group, String topic, boolean isPop,
class BaseCalculateResult (line 104) | public static class BaseCalculateResult {
method BaseCalculateResult (line 109) | public BaseCalculateResult(String group, String topic, boolean isRet...
class CalculateLagResult (line 116) | public static class CalculateLagResult extends BaseCalculateResult {
method CalculateLagResult (line 120) | public CalculateLagResult(String group, String topic, boolean isRetr...
method getLagLatency (line 124) | public long getLagLatency() {
class CalculateInflightResult (line 129) | public static class CalculateInflightResult extends BaseCalculateResult {
method CalculateInflightResult (line 133) | public CalculateInflightResult(String group, String topic, boolean i...
class CalculateAvailableResult (line 138) | public static class CalculateAvailableResult extends BaseCalculateResu...
method CalculateAvailableResult (line 141) | public CalculateAvailableResult(String group, String topic, boolean ...
method processAllGroup (line 146) | private void processAllGroup(Consumer<ProcessGroupInfo> consumer) {
method calculateLag (line 229) | public void calculateLag(Consumer<CalculateLagResult> lagRecorder) {
method calculate (line 269) | public void calculate(ProcessGroupInfo info, Consumer<CalculateLagResu...
method calculateInflight (line 298) | public void calculateInflight(Consumer<CalculateInflightResult> inflig...
method calculateAvailable (line 329) | public void calculateAvailable(Consumer<CalculateAvailableResult> avai...
method getConsumerLagStats (line 354) | public Pair<Long, Long> getConsumerLagStats(String group, String topic...
method getConsumerLagStats (line 383) | public Pair<Long, Long> getConsumerLagStats(String group, String topic...
method getInFlightMsgStats (line 415) | public Pair<Long, Long> getInFlightMsgStats(String group, String topic...
method getInFlightMsgStats (line 441) | public Pair<Long, Long> getInFlightMsgStats(String group, String topic...
method getAvailableMsgCount (line 471) | public long getAvailableMsgCount(String group, String topic, boolean i...
method getAvailableMsgCount (line 490) | public long getAvailableMsgCount(String group, String topic, int queue...
method getStoreTimeStamp (line 513) | public long getStoreTimeStamp(String topic, int queueId, long offset) {
method calculateMessageCount (line 522) | public long calculateMessageCount(String group, String topic, int queu...
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/InvocationStatus.java
type InvocationStatus (line 20) | public enum InvocationStatus {
method InvocationStatus (line 26) | InvocationStatus(String name) {
method getName (line 30) | public String getName() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/LiteConsumerLagCalculator.java
class LiteConsumerLagCalculator (line 43) | public class LiteConsumerLagCalculator {
method LiteConsumerLagCalculator (line 53) | public LiteConsumerLagCalculator(BrokerController brokerController) {
method removeLagInfo (line 57) | public void removeLagInfo(String group, String bindTopic, String lmqNa...
method updateLagInfo (line 64) | public void updateLagInfo(String group, String bindTopic, String lmqNa...
method getStoreTimestamp (line 76) | @VisibleForTesting
method getOffset (line 81) | @VisibleForTesting
method getMaxOffset (line 86) | @VisibleForTesting
method offsetDiff (line 91) | private long offsetDiff(Long offset, String lmqName) {
method calculateLiteLagCount (line 100) | public void calculateLiteLagCount(Consumer<ConsumerLagCalculator.Calcu...
method calculateLiteLagLatency (line 126) | public void calculateLiteLagLatency(Consumer<ConsumerLagCalculator.Cal...
method getLagTimestampTopK (line 159) | public Pair<List<LiteLagInfo>/*topK*/, Long/*timestamp*/> getLagTimest...
method getLagCountTopK (line 209) | public Pair<List<LiteLagInfo>, Long> getLagCountTopK(
method offsetTableForEachByGroup (line 250) | protected void offsetTableForEachByGroup(
class LagTimeInfo (line 275) | protected static class LagTimeInfo {
method LagTimeInfo (line 280) | public LagTimeInfo(String lmqName, long lagTimestamp) {
method getLmqName (line 285) | public String getLmqName() {
method getLagTimestamp (line 289) | public long getLagTimestamp() {
method equals (line 293) | @Override
method hashCode (line 302) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/PopMetricsConstant.java
class PopMetricsConstant (line 19) | public class PopMetricsConstant {
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/PopMetricsManager.java
class PopMetricsManager (line 62) | public class PopMetricsManager {
method PopMetricsManager (line 72) | public PopMetricsManager() {
method getMetricsView (line 75) | public List<Pair<InstrumentSelector, ViewBuilder>> getMetricsView() {
method initMetrics (line 94) | public void initMetrics(Meter meter, BrokerController brokerController,
method calculatePopBufferOffsetSize (line 133) | private void calculatePopBufferOffsetSize(BrokerController brokerContr...
method calculatePopBufferCkSize (line 139) | private void calculatePopBufferCkSize(BrokerController brokerController,
method calculatePopReviveLatency (line 145) | private void calculatePopReviveLatency(BrokerController brokerController,
method calculatePopReviveLag (line 159) | private void calculatePopReviveLag(BrokerController brokerController,
method incPopReviveAckPutCount (line 173) | public void incPopReviveAckPutCount(AckMsg ackMsg, PutMessageStatus st...
method incPopReviveCkPutCount (line 177) | public void incPopReviveCkPutCount(PopCheckPoint checkPoint, PutMessag...
method incPopRevivePutCount (line 181) | public void incPopRevivePutCount(String group, String topic, PopRevive...
method incPopReviveAckGetCount (line 192) | public void incPopReviveAckGetCount(AckMsg ackMsg, int queueId) {
method incPopReviveCkGetCount (line 196) | public void incPopReviveCkGetCount(PopCheckPoint checkPoint, int queue...
method incPopReviveGetCount (line 200) | public void incPopReviveGetCount(String group, String topic, PopRevive...
method incPopReviveRetryMessageCount (line 212) | public void incPopReviveRetryMessageCount(PopCheckPoint checkPoint, Pu...
method recordPopBufferScanTimeConsume (line 222) | public void recordPopBufferScanTimeConsume(long time) {
method newAttributesBuilder (line 226) | public AttributesBuilder newAttributesBuilder() {
method getPopBufferScanTimeConsume (line 231) | public LongHistogram getPopBufferScanTimeConsume() {
method getPopRevivePutTotal (line 235) | public LongCounter getPopRevivePutTotal() {
method getPopReviveGetTotal (line 239) | public LongCounter getPopReviveGetTotal() {
method getPopReviveRetryMessageTotal (line 243) | public LongCounter getPopReviveRetryMessageTotal() {
method getAttributesBuilderSupplier (line 247) | public Supplier<AttributesBuilder> getAttributesBuilderSupplier() {
method setAttributesBuilderSupplier (line 252) | public void setAttributesBuilderSupplier(Supplier<AttributesBuilder> a...
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/PopReviveMessageType.java
type PopReviveMessageType (line 19) | public enum PopReviveMessageType {
FILE: broker/src/main/java/org/apache/rocketmq/broker/metrics/ProducerAttr.java
class ProducerAttr (line 22) | public class ProducerAttr {
method ProducerAttr (line 26) | public ProducerAttr(LanguageCode language, int version) {
method equals (line 31) | @Override
method hashCode (line 41) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/mqtrace/ConsumeMessageContext.java
class ConsumeMessageContext (line 24) | public class ConsumeMessageContext {
method getConsumerGroup (line 52) | public String getConsumerGroup() {
method setConsumerGroup (line 56) | public void setConsumerGroup(String consumerGroup) {
method getTopic (line 60) | public String getTopic() {
method setTopic (line 64) | public void setTopic(String topic) {
method getQueueId (line 68) | public Integer getQueueId() {
method setQueueId (line 72) | public void setQueueId(Integer queueId) {
method getClientHost (line 76) | public String getClientHost() {
method setClientHost (line 80) | public void setClientHost(String clientHost) {
method getStoreHost (line 84) | public String getStoreHost() {
method setStoreHost (line 88) | public void setStoreHost(String storeHost) {
method getMessageIds (line 92) | public Map<String, Long> getMessageIds() {
method setMessageIds (line 96) | public void setMessageIds(Map<String, Long> messageIds) {
method isSuccess (line 100) | public boolean isSuccess() {
method setSuccess (line 104) | public void setSuccess(boolean success) {
method getStatus (line 108) | public String getStatus() {
method setStatus (line 112) | public void setStatus(String status) {
method getMqTraceContext (line 116) | public Object getMqTraceContext() {
method setMqTraceContext (line 120) | public void setMqTraceContext(Object mqTraceContext) {
method getTopicConfig (line 124) | public TopicConfig getTopicConfig() {
method setTopicConfig (line 128) | public void setTopicConfig(TopicConfig topicConfig) {
method getBodyLength (line 132) | public int getBodyLength() {
method setBodyLength (line 136) | public void setBodyLength(int bodyLength) {
method getAccountAuthType (line 140) | public String getAccountAuthType() {
method setAccountAuthType (line 144) | public void setAccountAuthType(String accountAuthType) {
method getAccountOwnerParent (line 148) | public String getAccountOwnerParent() {
method setAccountOwnerParent (line 152) | public void setAccountOwnerParent(String accountOwnerParent) {
method getAccountOwnerSelf (line 156) | public String getAccountOwnerSelf() {
method setAccountOwnerSelf (line 160) | public void setAccountOwnerSelf(String accountOwnerSelf) {
method getRcvMsgNum (line 164) | public int getRcvMsgNum() {
method setRcvMsgNum (line 168) | public void setRcvMsgNum(int rcvMsgNum) {
method getRcvMsgSize (line 172) | public int getRcvMsgSize() {
method setRcvMsgSize (line 176) | public void setRcvMsgSize(int rcvMsgSize) {
method getRcvStat (line 180) | public BrokerStatsManager.StatsType getRcvStat() {
method setRcvStat (line 184) | public void setRcvStat(BrokerStatsManager.StatsType rcvStat) {
method getCommercialRcvMsgNum (line 188) | public int getCommercialRcvMsgNum() {
method setCommercialRcvMsgNum (line 192) | public void setCommercialRcvMsgNum(int commercialRcvMsgNum) {
method getCommercialOwner (line 196) | public String getCommercialOwner() {
method setCommercialOwner (line 200) | public void setCommercialOwner(final String commercialOwner) {
method getCommercialRcvStats (line 204) | public BrokerStatsManager.StatsType getCommercialRcvStats() {
method setCommercialRcvStats (line 208) | public void setCommercialRcvStats(final BrokerStatsManager.StatsType c...
method getCommercialRcvTimes (line 212) | public int getCommercialRcvTimes() {
method setCommercialRcvTimes (line 216) | public void setCommercialRcvTimes(final int commercialRcvTimes) {
method getCommercialRcvSize (line 220) | public int getCommercialRcvSize() {
method setCommercialRcvSize (line 224) | public void setCommercialRcvSize(final int commercialRcvSize) {
method getNamespace (line 228) | public String getNamespace() {
method setNamespace (line 232) | public void setNamespace(String namespace) {
method getFilterMessageCount (line 236) | public int getFilterMessageCount() {
method setFilterMessageCount (line 240) | public void setFilterMessageCount(int filterMessageCount) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/mqtrace/ConsumeMessageHook.java
type ConsumeMessageHook (line 19) | public interface ConsumeMessageHook {
method hookName (line 20) | String hookName();
method consumeMessageBefore (line 22) | void consumeMessageBefore(final ConsumeMessageContext context);
method consumeMessageAfter (line 24) | void consumeMessageAfter(final ConsumeMessageContext context);
FILE: broker/src/main/java/org/apache/rocketmq/broker/mqtrace/SendMessageContext.java
class SendMessageContext (line 24) | public class SendMessageContext {
method getNamespace (line 70) | public String getNamespace() {
method setNamespace (line 74) | public void setNamespace(String namespace) {
method isSuccess (line 78) | public boolean isSuccess() {
method setSuccess (line 82) | public void setSuccess(final boolean success) {
method getMsgType (line 86) | public MessageType getMsgType() {
method setMsgType (line 90) | public void setMsgType(final MessageType msgType) {
method getMsgUniqueKey (line 94) | public String getMsgUniqueKey() {
method setMsgUniqueKey (line 98) | public void setMsgUniqueKey(final String msgUniqueKey) {
method getBornTimeStamp (line 102) | public long getBornTimeStamp() {
method setBornTimeStamp (line 106) | public void setBornTimeStamp(final long bornTimeStamp) {
method getRequestTimeStamp (line 110) | public long getRequestTimeStamp() {
method setRequestTimeStamp (line 114) | public void setRequestTimeStamp(long requestTimeStamp) {
method getBrokerRegionId (line 118) | public String getBrokerRegionId() {
method setBrokerRegionId (line 122) | public void setBrokerRegionId(final String brokerRegionId) {
method getProducerGroup (line 126) | public String getProducerGroup() {
method setProducerGroup (line 130) | public void setProducerGroup(String producerGroup) {
method getTopic (line 134) | public String getTopic() {
method setTopic (line 138) | public void setTopic(String topic) {
method getMsgId (line 142) | public String getMsgId() {
method setMsgId (line 146) | public void setMsgId(String msgId) {
method getOriginMsgId (line 150) | public String getOriginMsgId() {
method setOriginMsgId (line 154) | public void setOriginMsgId(String originMsgId) {
method getQueueId (line 158) | public Integer getQueueId() {
method setQueueId (line 162) | public void setQueueId(Integer queueId) {
method getQueueOffset (line 166) | public Long getQueueOffset() {
method setQueueOffset (line 170) | public void setQueueOffset(Long queueOffset) {
method getBrokerAddr (line 174) | public String getBrokerAddr() {
method setBrokerAddr (line 178) | public void setBrokerAddr(String brokerAddr) {
method getBornHost (line 182) | public String getBornHost() {
method setBornHost (line 186) | public void setBornHost(String bornHost) {
method getBodyLength (line 190) | public int getBodyLength() {
method setBodyLength (line 194) | public void setBodyLength(int bodyLength) {
method getCode (line 198) | public int getCode() {
method setCode (line 202) | public void setCode(int code) {
method getErrorMsg (line 206) | public String getErrorMsg() {
method setErrorMsg (line 210) | public void setErrorMsg(String errorMsg) {
method getMsgProps (line 214) | public String getMsgProps() {
method setMsgProps (line 218) | public void setMsgProps(String msgProps) {
method getMqTraceContext (line 222) | public Object getMqTraceContext() {
method setMqTraceContext (line 226) | public void setMqTraceContext(Object mqTraceContext) {
method getExtProps (line 230) | public Properties getExtProps() {
method setExtProps (line 234) | public void setExtProps(Properties extProps) {
method getCommercialOwner (line 238) | public String getCommercialOwner() {
method setCommercialOwner (line 242) | public void setCommercialOwner(final String commercialOwner) {
method getAccountAuthType (line 246) | public String getAccountAuthType() {
method setAccountAuthType (line 250) | public void setAccountAuthType(String accountAuthType) {
method getAccountOwnerParent (line 254) | public String getAccountOwnerParent() {
method setAccountOwnerParent (line 258) | public void setAccountOwnerParent(String accountOwnerParent) {
method getAccountOwnerSelf (line 262) | public String getAccountOwnerSelf() {
method setAccountOwnerSelf (line 266) | public void setAccountOwnerSelf(String accountOwnerSelf) {
method getSendMsgNum (line 270) | public int getSendMsgNum() {
method setSendMsgNum (line 274) | public void setSendMsgNum(int sendMsgNum) {
method getSendMsgSize (line 278) | public int getSendMsgSize() {
method setSendMsgSize (line 282) | public void setSendMsgSize(int sendMsgSize) {
method getSendStat (line 286) | public BrokerStatsManager.StatsType getSendStat() {
method setSendStat (line 290) | public void setSendStat(BrokerStatsManager.StatsType sendStat) {
method getCommercialSendStats (line 294) | public BrokerStatsManager.StatsType getCommercialSendStats() {
method getCommercialSendMsgNum (line 298) | public int getCommercialSendMsgNum() {
method setCommercialSendMsgNum (line 302) | public void setCommercialSendMsgNum(int commercialSendMsgNum) {
method setCommercialSendStats (line 306) | public void setCommercialSendStats(final BrokerStatsManager.StatsType ...
method getCommercialSendSize (line 310) | public int getCommercialSendSize() {
method setCommercialSendSize (line 314) | public void setCommercialSendSize(final int commercialSendSize) {
method getCommercialSendTimes (line 318) | public int getCommercialSendTimes() {
method setCommercialSendTimes (line 322) | public void setCommercialSendTimes(final int commercialSendTimes) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/mqtrace/SendMessageHook.java
type SendMessageHook (line 19) | public interface SendMessageHook {
method hookName (line 20) | String hookName();
method sendMessageBefore (line 22) | void sendMessageBefore(final SendMessageContext context);
method sendMessageAfter (line 24) | void sendMessageAfter(final SendMessageContext context);
FILE: broker/src/main/java/org/apache/rocketmq/broker/offset/BroadcastOffsetManager.java
class BroadcastOffsetManager (line 34) | public class BroadcastOffsetManager extends ServiceThread {
method BroadcastOffsetManager (line 46) | public BroadcastOffsetManager(BrokerController brokerController) {
method updateOffset (line 51) | public void updateOffset(String topic, String group, int queueId, long...
method queryInitOffset (line 75) | public Long queryInitOffset(String topic, String groupId, int queueId,...
method getOffset (line 106) | private long getOffset(BroadcastTimedOffsetStore offsetStore, String t...
method scanOffsetData (line 131) | protected void scanOffsetData() {
method buildKey (line 176) | private String buildKey(String topic, String group) {
method broadcastGroupId (line 184) | private static String broadcastGroupId(String group) {
method getServiceName (line 188) | @Override
method run (line 193) | @Override
method onWaitEnd (line 200) | @Override
class BroadcastOffsetData (line 205) | public static class BroadcastOffsetData {
method BroadcastOffsetData (line 210) | public BroadcastOffsetData(String topic, String group) {
class BroadcastTimedOffsetStore (line 217) | public static class BroadcastTimedOffsetStore {
method BroadcastTimedOffsetStore (line 234) | public BroadcastTimedOffsetStore(boolean fromProxy) {
FILE: broker/src/main/java/org/apache/rocketmq/broker/offset/BroadcastOffsetStore.java
class BroadcastOffsetStore (line 25) | public class BroadcastOffsetStore {
method updateOffset (line 29) | public void updateOffset(int queueId, long offset, boolean increaseOnl...
method readOffset (line 44) | public long readOffset(int queueId) {
method queueList (line 52) | public Set<Integer> queueList() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/offset/ConsumerOffsetManager.java
class ConsumerOffsetManager (line 42) | public class ConsumerOffsetManager extends ConfigManager {
method ConsumerOffsetManager (line 61) | public ConsumerOffsetManager() {
method ConsumerOffsetManager (line 64) | public ConsumerOffsetManager(BrokerController brokerController) {
method removeConsumerOffset (line 68) | public void removeConsumerOffset(String topicAtGroup) {
method cleanOffset (line 72) | public void cleanOffset(String group) {
method cleanOffsetByTopic (line 88) | public void cleanOffsetByTopic(String topic) {
method scanUnsubscribedTopic (line 106) | public void scanUnsubscribedTopic() {
method offsetBehindMuchThanData (line 126) | private boolean offsetBehindMuchThanData(final String topic, Concurren...
method whichTopicByConsumer (line 140) | public Set<String> whichTopicByConsumer(final String group) {
method whichGroupByTopic (line 158) | public Set<String> whichGroupByTopic(final String topic) {
method getGroupTopicMap (line 176) | public Map<String, Set<String>> getGroupTopicMap() {
method commitOffset (line 198) | public void commitOffset(final String clientHost, final String group, ...
method commitOffset (line 205) | private void commitOffset(final String clientHost, final String key, f...
method commitPullOffset (line 222) | public void commitPullOffset(final String clientHost, final String gro...
method queryOffset (line 239) | public long queryOffset(final String group, final String topic, final ...
method queryPullOffset (line 268) | public long queryPullOffset(final String group, final String topic, fi...
method clearPullOffset (line 285) | public void clearPullOffset(final String group, final String topic) {
method encode (line 289) | @Override
method configFilePath (line 294) | @Override
method decode (line 299) | @Override
method encode (line 310) | @Override
method getOffsetTable (line 315) | public ConcurrentMap<String, ConcurrentMap<Integer, Long>> getOffsetTa...
method setOffsetTable (line 319) | public void setOffsetTable(ConcurrentMap<String, ConcurrentMap<Integer...
method getPullOffsetTable (line 323) | public ConcurrentMap<String, ConcurrentMap<Integer, Long>> getPullOffs...
method queryMinOffsetInAllGroup (line 327) | public Map<Integer, Long> queryMinOffsetInAllGroup(final String topic,...
method queryOffset (line 365) | public Map<Integer, Long> queryOffset(final String group, final String...
method cloneOffset (line 371) | public void cloneOffset(final String srcGroup, final String destGroup,...
method getDataVersion (line 378) | public DataVersion getDataVersion() {
method updateDataVersion (line 382) | public void updateDataVersion() {
method setDataVersion (line 388) | public void setDataVersion(DataVersion dataVersion) {
method loadDataVersion (line 392) | public boolean loadDataVersion() {
method removeOffset (line 411) | public void removeOffset(final String group) {
method assignResetOffset (line 437) | public void assignResetOffset(String topic, String group, int queueId,...
method hasOffsetReset (line 455) | public boolean hasOffsetReset(String topic, String group, int queueId) {
method queryThenEraseResetOffset (line 464) | public Long queryThenEraseResetOffset(String topic, String group, Inte...
FILE: broker/src/main/java/org/apache/rocketmq/broker/offset/LmqConsumerOffsetManager.java
class LmqConsumerOffsetManager (line 31) | public class LmqConsumerOffsetManager extends ConsumerOffsetManager {
method LmqConsumerOffsetManager (line 34) | public LmqConsumerOffsetManager() {
method LmqConsumerOffsetManager (line 38) | public LmqConsumerOffsetManager(BrokerController brokerController) {
method queryOffset (line 42) | @Override
method queryOffset (line 56) | @Override
method commitOffset (line 71) | @Override
method encode (line 83) | @Override
method configFilePath (line 88) | @Override
method decode (line 93) | @Override
method encode (line 104) | @Override
method getLmqOffsetTable (line 109) | public ConcurrentHashMap<String, Long> getLmqOffsetTable() {
method setLmqOffsetTable (line 113) | public void setLmqOffsetTable(ConcurrentHashMap<String, Long> lmqOffse...
method removeOffset (line 117) | @Override
method assignResetOffset (line 138) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/offset/MemoryConsumerOrderInfoManager.java
class MemoryConsumerOrderInfoManager (line 34) | public class MemoryConsumerOrderInfoManager extends QueueLevelConsumerMa...
method MemoryConsumerOrderInfoManager (line 36) | public MemoryConsumerOrderInfoManager(BrokerController brokerControlle...
method updateLockFreeTimestamp (line 40) | @Override
method persist (line 49) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/out/BrokerOuterAPI.java
class BrokerOuterAPI (line 162) | public class BrokerOuterAPI {
method BrokerOuterAPI (line 172) | public BrokerOuterAPI(final NettyClientConfig nettyClientConfig, AuthC...
method BrokerOuterAPI (line 176) | private BrokerOuterAPI(final NettyClientConfig nettyClientConfig, Auth...
method newAclRPCHook (line 184) | private RPCHook newAclRPCHook(AuthConfig config) {
method start (line 196) | public void start() {
method shutdown (line 200) | public void shutdown() {
method getNameServerAddressList (line 205) | public List<String> getNameServerAddressList() {
method fetchNameServerAddr (line 209) | public String fetchNameServerAddr() {
method dnsLookupAddressByDomain (line 226) | public List<String> dnsLookupAddressByDomain(String domain) {
method checkAddressReachable (line 244) | public boolean checkAddressReachable(String address) {
method updateNameServerAddressList (line 248) | public void updateNameServerAddressList(final String addrs) {
method updateNameServerAddressListByDnsLookup (line 254) | public void updateNameServerAddressListByDnsLookup(final String domain) {
method syncBrokerMemberGroup (line 259) | public BrokerMemberGroup syncBrokerMemberGroup(String clusterName, Str...
method syncBrokerMemberGroup (line 264) | public BrokerMemberGroup syncBrokerMemberGroup(String clusterName, Str...
method getBrokerMemberGroup (line 274) | public BrokerMemberGroup getBrokerMemberGroup(String clusterName, Stri...
method getBrokerMemberGroupCompatible (line 305) | public BrokerMemberGroup getBrokerMemberGroupCompatible(String cluster...
method sendHeartbeatViaDataVersion (line 341) | public void sendHeartbeatViaDataVersion(
method sendHeartbeat (line 372) | public void sendHeartbeat(final String clusterName,
method retrieveBrokerHaInfo (line 403) | public BrokerSyncInfo retrieveBrokerHaInfo(String masterBrokerAddr)
method sendBrokerHaInfo (line 425) | public void sendBrokerHaInfo(String brokerAddr, String masterHaAddr, l...
method registerBrokerAll (line 448) | public List<RegisterBrokerResult> registerBrokerAll(
method registerBrokerAll (line 491) | public List<RegisterBrokerResult> registerBrokerAll(
method registerBroker (line 560) | private RegisterBrokerResult registerBroker(
method unregisterBrokerAll (line 600) | public void unregisterBrokerAll(
method unregisterBroker (line 619) | public void unregisterBroker(
method registerSingleTopicAll (line 650) | public void registerSingleTopicAll(
method needRegister (line 704) | public List<Boolean> needRegister(
method getAllTopicConfig (line 770) | public TopicConfigAndMappingSerializeWrapper getAllTopicConfig(final S...
method getTimerCheckPoint (line 852) | public TimerCheckpoint getTimerCheckPoint(
method getTimerMetrics (line 870) | public TimerMetrics.TimerMetricsSerializeWrapper getTimerMetrics(
method getAllConsumerOffset (line 888) | public ConsumerOffsetSerializeWrapper getAllConsumerOffset(
method getAllDelayOffset (line 905) | public String getAllDelayOffset(
method getAllSubscriptionGroupConfig (line 922) | public SubscriptionGroupWrapper getAllSubscriptionGroupConfig(final St...
method registerRPCHook (line 1000) | public void registerRPCHook(RPCHook rpcHook) {
method clearRPCHook (line 1004) | public void clearRPCHook() {
method getMaxOffset (line 1008) | public long getMaxOffset(final String addr, final String topic, final ...
method getMinOffset (line 1032) | public long getMinOffset(final String addr, final String topic, final ...
method lockBatchMQAsync (line 1054) | public void lockBatchMQAsync(
method unlockBatchMQAsync (line 1093) | public void unlockBatchMQAsync(
method getRemotingClient (line 1130) | public RemotingClient getRemotingClient() {
method sendMessageToSpecificBroker (line 1134) | public SendResult sendMessageToSpecificBroker(String brokerAddr, final...
method sendMessageToSpecificBrokerAsync (line 1143) | public CompletableFuture<SendResult> sendMessageToSpecificBrokerAsync(...
method buildSendMessageRequest (line 1180) | private static RemotingCommand buildSendMessageRequest(MessageExt msg,...
method buildSendMessageRequestHeaderV2 (line 1188) | private static SendMessageRequestHeaderV2 buildSendMessageRequestHeade...
method processSendResponse (line 1206) | private SendResult processSendResponse(
method getBrokerOuterExecutor (line 1266) | public ExecutorService getBrokerOuterExecutor() {
method getTopicRouteInfoFromNameServer (line 1270) | public TopicRouteData getTopicRouteInfoFromNameServer(final String top...
method getTopicRouteInfoFromNameServer (line 1275) | public TopicRouteData getTopicRouteInfoFromNameServer(final String top...
method getBrokerClusterInfo (line 1305) | public ClusterInfo getBrokerClusterInfo() throws InterruptedException,...
method forwardRequest (line 1320) | public void forwardRequest(String brokerAddr, RemotingCommand request,...
method refreshMetadata (line 1325) | public void refreshMetadata() throws Exception {
method getClientMetadata (line 1330) | public ClientMetadata getClientMetadata() {
method getRpcClient (line 1334) | public RpcClient getRpcClient() {
method getAllMessageRequestMode (line 1338) | public MessageRequestModeSerializeWrapper getAllMessageRequestMode(
method getControllerMetaData (line 1355) | public GetMetaDataResponseHeader getControllerMetaData(final String co...
method alterSyncStateSet (line 1368) | public SyncStateSet alterSyncStateSet(
method brokerElect (line 1391) | public Pair<ElectMasterResponseHeader, Set<Long>> brokerElect(String c...
method getNextBrokerId (line 1411) | public GetNextBrokerIdResponseHeader getNextBrokerId(final String clus...
method applyBrokerId (line 1423) | public ApplyBrokerIdResponseHeader applyBrokerId(final String clusterN...
method registerBrokerToController (line 1435) | public Pair<RegisterBrokerToControllerResponseHeader, Set<Long>> regis...
method getReplicaInfo (line 1453) | public Pair<GetReplicaInfoResponseHeader, SyncStateSet> getReplicaInfo...
method sendHeartbeatToController (line 1473) | public void sendHeartbeatToController(final String controllerAddress,
method pullMessageFromSpecificBrokerAsync (line 1514) | public CompletableFuture<Triple<PullResult, String, Boolean>> pullMess...
method processPullResponse (line 1560) | private PullResultExt processPullResponse(
method processPullResult (line 1589) | private PullResult processPullResult(final PullResultExt pullResult, S...
method getMaxPageSize (line 1625) | private int getMaxPageSize() {
method getTimeoutMillis (line 1629) | private long getTimeoutMillis() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/pagecache/ManyMessageTransfer.java
class ManyMessageTransfer (line 27) | public class ManyMessageTransfer extends AbstractReferenceCounted implem...
method ManyMessageTransfer (line 36) | public ManyMessageTransfer(ByteBuffer byteBufferHeader, GetMessageResu...
method position (line 41) | @Override
method transfered (line 51) | @Override
method transferred (line 56) | @Override
method count (line 61) | @Override
method transferTo (line 66) | @Override
method retain (line 84) | @Override
method retain (line 90) | @Override
method touch (line 96) | @Override
method touch (line 101) | @Override
method close (line 106) | public void close() {
method deallocate (line 110) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/pagecache/OneMessageTransfer.java
class OneMessageTransfer (line 26) | public class OneMessageTransfer extends AbstractReferenceCounted impleme...
method OneMessageTransfer (line 35) | public OneMessageTransfer(ByteBuffer byteBufferHeader, SelectMappedBuf...
method position (line 40) | @Override
method transfered (line 45) | @Override
method transferred (line 50) | @Override
method count (line 55) | @Override
method transferTo (line 60) | @Override
method retain (line 74) | @Override
method retain (line 80) | @Override
method touch (line 86) | @Override
method touch (line 91) | @Override
method close (line 96) | public void close() {
method deallocate (line 100) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/pagecache/QueryMessageTransfer.java
class QueryMessageTransfer (line 27) | public class QueryMessageTransfer extends AbstractReferenceCounted imple...
method QueryMessageTransfer (line 36) | public QueryMessageTransfer(ByteBuffer byteBufferHeader, QueryMessageR...
method position (line 41) | @Override
method transfered (line 51) | @Override
method transferred (line 56) | @Override
method count (line 61) | @Override
method transferTo (line 66) | @Override
method retain (line 84) | @Override
method retain (line 90) | @Override
method touch (line 96) | @Override
method touch (line 101) | @Override
method close (line 106) | public void close() {
method deallocate (line 110) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/plugin/BrokerAttachedPlugin.java
type BrokerAttachedPlugin (line 22) | public interface BrokerAttachedPlugin {
method pluginName (line 29) | String pluginName();
method load (line 36) | boolean load();
method start (line 41) | void start();
method shutdown (line 46) | void shutdown();
method syncMetadata (line 51) | void syncMetadata();
method syncMetadataReverse (line 58) | void syncMetadataReverse(String brokerAddr) throws Exception;
method buildRuntimeInfo (line 65) | void buildRuntimeInfo(Map<String, String> runtimeInfo);
method statusChanged (line 72) | void statusChanged(boolean shouldStart);
FILE: broker/src/main/java/org/apache/rocketmq/broker/plugin/PullMessageResultHandler.java
type PullMessageResultHandler (line 29) | public interface PullMessageResultHandler {
method handle (line 45) | RemotingCommand handle(final GetMessageResult getMessageResult,
FILE: broker/src/main/java/org/apache/rocketmq/broker/pop/PopConsumerCache.java
class PopConsumerCache (line 38) | public class PopConsumerCache extends ServiceThread {
method PopConsumerCache (line 51) | public PopConsumerCache(BrokerController brokerController, PopConsumer...
method getKey (line 62) | public String getKey(String groupId, String topicId, int queueId) {
method getKey (line 66) | public String getKey(PopConsumerRecord consumerRecord) {
method getCacheKeySize (line 70) | public int getCacheKeySize() {
method getCacheSize (line 74) | public int getCacheSize() {
method isCacheFull (line 78) | public boolean isCacheFull() {
method getMinOffsetInCache (line 82) | public long getMinOffsetInCache(String groupId, String topicId, int qu...
method getPopInFlightMessageCount (line 87) | public long getPopInFlightMessageCount(String groupId, String topicId,...
method writeRecords (line 92) | public void writeRecords(List<PopConsumerRecord> consumerRecordList) {
method deleteRecords (line 106) | public List<PopConsumerRecord> deleteRecords(List<PopConsumerRecord> c...
method cleanupRecords (line 119) | public int cleanupRecords(Consumer<PopConsumerRecord> consumer) {
method commitOffset (line 169) | public void commitOffset(String clientHost, String groupId, String top...
method removeRecords (line 186) | public void removeRecords(String groupId, String topicId, int queueId) {
method getServiceName (line 190) | @Override
method run (line 195) | @Override
class ConsumerRecords (line 208) | protected static class ConsumerRecords {
method ConsumerRecords (line 217) | public ConsumerRecords(BrokerConfig brokerConfig, String groupId, St...
method write (line 226) | public void write(PopConsumerRecord record) {
method delete (line 230) | public boolean delete(PopConsumerRecord record) {
method getMinOffsetInBuffer (line 234) | public long getMinOffsetInBuffer() {
method getInFlightRecordCount (line 243) | public int getInFlightRecordCount() {
method stageExpiredRecords (line 247) | public void stageExpiredRecords(long currentTime) {
method clearStagedRecords (line 262) | public void clearStagedRecords() {
method getRemoveTreeMap (line 266) | public ConcurrentSkipListMap<Long, PopConsumerRecord> getRemoveTreeM...
method getGroupId (line 270) | public String getGroupId() {
method getTopicId (line 274) | public String getTopicId() {
method getQueueId (line 278) | public int getQueueId() {
method toString (line 282) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/pop/PopConsumerContext.java
class PopConsumerContext (line 26) | public class PopConsumerContext {
method PopConsumerContext (line 54) | public PopConsumerContext(String clientHost,
method isFound (line 70) | public boolean isFound() {
method addGetMessageResult (line 75) | public void addGetMessageResult(GetMessageResult result,
method getClientHost (line 102) | public String getClientHost() {
method getGroupId (line 106) | public String getGroupId() {
method addRestCount (line 110) | public void addRestCount(long delta) {
method getRestCount (line 114) | public long getRestCount() {
method getPopTime (line 118) | public long getPopTime() {
method isFifo (line 122) | public boolean isFifo() {
method getInitMode (line 126) | public int getInitMode() {
method getInvisibleTime (line 130) | public long getInvisibleTime() {
method getAttemptId (line 134) | public String getAttemptId() {
method getMessageCount (line 138) | public int getMessageCount() {
method getStartOffsetInfo (line 143) | public String getStartOffsetInfo() {
method getMsgOffsetInfo (line 147) | public String getMsgOffsetInfo() {
method getOrderCountInfoBuilder (line 151) | public StringBuilder getOrderCountInfoBuilder() {
method getOrderCountInfo (line 155) | public String getOrderCountInfo() {
method getGetMessageResultList (line 159) | public List<GetMessageResult> getGetMessageResultList() {
method getPopConsumerRecordList (line 163) | public List<PopConsumerRecord> getPopConsumerRecordList() {
method toString (line 167) | @Override
FILE: broker/src/main/java/org/apache/rocketmq/broker/pop/PopConsumerKVStore.java
type PopConsumerKVStore (line 21) | public interface PopConsumerKVStore {
method start (line 26) | boolean start();
method shutdown (line 31) | boolean shutdown();
method getFilePath (line 37) | String getFilePath();
method writeRecords (line 43) | void writeRecords(List<PopConsumerRecord> consumerRecordList);
method deleteRecords (line 49) | void deleteRecords(List<PopConsumerRecord> consumerRecordList);
method scanExpiredRecords (line 60) | List<PopConsumerRecord> scanExpiredRecords(long lowerTime, long upperT...
FILE: broker/src/main/java/org/apache/rocketmq/broker/pop/PopConsumerLockService.java
class PopConsumerLockService (line 32) | public class PopConsumerLockService {
method PopConsumerLockService (line 39) | public PopConsumerLockService(long timeout) {
method tryLock (line 44) | public boolean tryLock(String key) {
method tryLock (line 49) | public boolean tryLock(String groupId, String topicId) {
method unlock (line 53) | public void unlock(String key) {
method unlock (line 60) | public void unlock(String groupId, String topicId) {
method isLockTimeout (line 65) | public boolean isLockTimeout(String groupId, String topicId) {
method removeTimeout (line 71) | public void removeTimeout() {
class TimedLock (line 83) | static class TimedLock {
method TimedLock (line 87) | public TimedLock() {
method tryLock (line 92) | public boolean tryLock() {
method unlock (line 100) | public void unlock() {
method getLockTime (line 104) | public long getLockTime() {
FILE: broker/src/main/java/org/apache/rocketmq/broker/pop/PopConsumerRecord.java
class PopConsumerRecord (line 25) | public class PopConsumerRecord {
type RetryType (line 27) | public enum RetryType {
method RetryType (line 37) | RetryType(int code) {
method getCode (line 41) | public int getCode() {
method PopConsumerRecord (line 77) | public PopConsumerRecord() {
method PopConsumerRecord (line 80) | public PopConsumerRecord(long popTime, String groupId, String topicId,...
method PopConsumerRecord (line 85) | public PopConsumerRecord(long popTime, String groupId, String topicId,...
method getVisibilityTimeout (line 99) | @JSONField(serialize = false)
method getKeyBytes (line 107) | @JSONField(seria
Copy disabled (too large)
Download .json
Condensed preview — 2627 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,420K chars).
[
{
"path": ".asf.yaml",
"chars": 1937,
"preview": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE f"
},
{
"path": ".bazelrc",
"chars": 2824,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": ".bazelversion",
"chars": 5,
"preview": "6.5.0"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 3838,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 969,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": ".github/ISSUE_TEMPLATE/doc.yml",
"chars": 2040,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": ".github/ISSUE_TEMPLATE/enhancement_request.yml",
"chars": 2857,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.yml",
"chars": 1953,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 788,
"preview": "<!-- Please make sure the target branch is right. In most case, the target branch should be `develop`. -->\n\n### Which Is"
},
{
"path": ".github/asf-deploy-settings.xml",
"chars": 1566,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n ~ Licensed to the Apache Software Foundation (ASF) under one or more\n ~ c"
},
{
"path": ".github/workflows/bazel.yml",
"chars": 493,
"preview": "name: Build and Run Tests by Bazel\non:\n pull_request:\n types: [opened, reopened, synchronize]\n push:\n branches:\n"
},
{
"path": ".github/workflows/codeql_analysis.yml",
"chars": 819,
"preview": "name: CodeQL Analysis\n\non:\n pull_request:\n types: [opened, reopened, synchronize]\n push:\n branches:\n - mast"
},
{
"path": ".github/workflows/coverage.yml",
"chars": 669,
"preview": "name: Coverage\non:\n pull_request:\n types: [opened, reopened, synchronize]\n push:\n branches: [master, develop]\njo"
},
{
"path": ".github/workflows/integration-test.yml",
"chars": 1208,
"preview": "name: Run Integration Tests\non:\n pull_request:\n types: [opened, reopened, synchronize]\n push:\n branches: [master"
},
{
"path": ".github/workflows/license-checker.yaml",
"chars": 1116,
"preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE f"
},
{
"path": ".github/workflows/maven.yaml",
"chars": 1562,
"preview": "name: Build and Run Tests by Maven\non:\n pull_request:\n types: [opened, reopened, synchronize]\n push:\n branches: "
},
{
"path": ".github/workflows/misspell_check.yml",
"chars": 485,
"preview": "name: Misspell Check\non:\n pull_request:\n types: [opened, reopened, synchronize]\n push:\n branches: [master, devel"
},
{
"path": ".github/workflows/pr-ci.yml",
"chars": 921,
"preview": "name: PR-CI\n\non:\n pull_request:\n types: [opened, reopened, synchronize]\n\njobs:\n dist-tar:\n name: Build distribut"
},
{
"path": ".github/workflows/pr-e2e-test.yml",
"chars": 9191,
"preview": "name: E2E test for pull request\n\n# read-write repo token\n# access to secrets\non:\n workflow_run:\n workflows: [\"PR-CI\""
},
{
"path": ".github/workflows/push-ci.yml",
"chars": 11799,
"preview": "name: PUSH-CI\n\non:\n push:\n branches: [master, develop]\n #schedule:\n # - cron: \"0 18 * * *\" # TimeZone: UTC 0\n\ncon"
},
{
"path": ".github/workflows/rerun-workflow.yml",
"chars": 670,
"preview": "name: Rerun workflow\non:\n workflow_run:\n workflows: [\"Build and Run Tests by Maven\" , \"Build and Run Tests by Bazel\""
},
{
"path": ".github/workflows/snapshot-automation.yml",
"chars": 9127,
"preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE f"
},
{
"path": ".github/workflows/stale.yml",
"chars": 1312,
"preview": "name: Close Stale Issues/PRs\n\npermissions:\n issues: write\n pull-requests: write\n\non:\n workflow_dispatch:\n schedule:\n"
},
{
"path": ".gitignore",
"chars": 284,
"preview": "*dependency-reduced-pom.xml\r\n.classpath\r\n.project\r\n.settings/\r\ntarget/\r\ndevenv\r\n*.log.*\r\n*.iml\r\n.idea/\r\n*.versionsBackup"
},
{
"path": ".licenserc.yaml",
"chars": 1661,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE"
},
{
"path": "BUILD.bazel",
"chars": 1482,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": "BUILDING",
"chars": 997,
"preview": "Build Instructions for Apache RocketMQ\n\n====================================================\n\n(1) Prerequisites\n\n JDK"
},
{
"path": "CONTRIBUTING.md",
"chars": 2846,
"preview": "## How To Contribute\n\nWe are always very happy to have contributions, whether for trivial cleanups or big new features.\n"
},
{
"path": "LICENSE",
"chars": 11356,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "MODULE.bazel",
"chars": 1184,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": "NOTICE",
"chars": 169,
"preview": "Apache RocketMQ\nCopyright 2016-2026 The Apache Software Foundation\n\nThis product includes software developed at\nThe Apac"
},
{
"path": "README.md",
"chars": 12270,
"preview": "## Apache RocketMQ\n\n[![Build Status][maven-build-image]][maven-build-url]\n[![CodeCov][codecov-image]][codecov-url]\n[![Ma"
},
{
"path": "WORKSPACE",
"chars": 7022,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": "auth/BUILD.bazel",
"chars": 2799,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": "auth/pom.xml",
"chars": 3151,
"preview": "<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor\n\tlicense agreements. See the NOTICE "
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/AuthenticationEvaluator.java",
"chars": 1761,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/AuthenticationContextBuilder.java",
"chars": 1286,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/builder/DefaultAuthenticationContextBuilder.java",
"chars": 6039,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/chain/DefaultAuthenticationHandler.java",
"chars": 3611,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/context/AuthenticationContext.java",
"chars": 2350,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/context/DefaultAuthenticationContext.java",
"chars": 1488,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/enums/SubjectType.java",
"chars": 1600,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/enums/UserStatus.java",
"chars": 1635,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/enums/UserType.java",
"chars": 1621,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/exception/AuthenticationException.java",
"chars": 1335,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/factory/AuthenticationFactory.java",
"chars": 7304,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/manager/AuthenticationMetadataManager.java",
"chars": 1496,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/manager/AuthenticationMetadataManagerImpl.java",
"chars": 9425,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/model/Subject.java",
"chars": 1816,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/model/User.java",
"chars": 2747,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/AuthenticationMetadataProvider.java",
"chars": 1503,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/AuthenticationProvider.java",
"chars": 1569,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/DefaultAuthenticationProvider.java",
"chars": 3834,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/provider/LocalAuthenticationMetadataProvider.java",
"chars": 7105,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/AbstractAuthenticationStrategy.java",
"chars": 3339,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/AuthenticationStrategy.java",
"chars": 1035,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/StatefulAuthenticationStrategy.java",
"chars": 3237,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authentication/strategy/StatelessAuthenticationStrategy.java",
"chars": 1377,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/AuthorizationEvaluator.java",
"chars": 1858,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/AuthorizationContextBuilder.java",
"chars": 1391,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java",
"chars": 27826,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/chain/AclAuthorizationHandler.java",
"chars": 7185,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/chain/UserAuthorizationHandler.java",
"chars": 3422,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/context/AuthorizationContext.java",
"chars": 2348,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/context/DefaultAuthorizationContext.java",
"chars": 2948,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/enums/Decision.java",
"chars": 1606,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/enums/PolicyType.java",
"chars": 1630,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/exception/AuthorizationException.java",
"chars": 1330,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/factory/AuthorizationFactory.java",
"chars": 7310,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/manager/AuthorizationMetadataManager.java",
"chars": 1642,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/manager/AuthorizationMetadataManagerImpl.java",
"chars": 12189,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/model/Acl.java",
"chars": 3555,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/model/Environment.java",
"chars": 2282,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/model/Policy.java",
"chars": 3591,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/model/PolicyEntry.java",
"chars": 3586,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/model/RequestContext.java",
"chars": 1725,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/model/Resource.java",
"chars": 6123,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/provider/AuthorizationMetadataProvider.java",
"chars": 1580,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/provider/AuthorizationProvider.java",
"chars": 1638,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/provider/DefaultAuthorizationProvider.java",
"chars": 4679,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/provider/LocalAuthorizationMetadataProvider.java",
"chars": 8683,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/strategy/AbstractAuthorizationStrategy.java",
"chars": 3308,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/strategy/AuthorizationStrategy.java",
"chars": 1030,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/strategy/StatefulAuthorizationStrategy.java",
"chars": 3376,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/authorization/strategy/StatelessAuthorizationStrategy.java",
"chars": 1370,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/config/AuthConfig.java",
"chars": 8685,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/migration/AuthMigrator.java",
"chars": 9965,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/migration/v1/AccessResource.java",
"chars": 887,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/migration/v1/AclConfig.java",
"chars": 1676,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/migration/v1/PlainAccessConfig.java",
"chars": 4080,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/migration/v1/PlainAccessData.java",
"chars": 3547,
"preview": "/*\r\n * Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the N"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/migration/v1/PlainAccessResource.java",
"chars": 4358,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/main/java/org/apache/rocketmq/auth/migration/v1/PlainPermissionManager.java",
"chars": 6147,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authentication/AuthenticationEvaluatorTest.java",
"chars": 5443,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authentication/builder/DefaultAuthenticationContextBuilderTest.java",
"chars": 4841,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authentication/manager/AuthenticationMetadataManagerTest.java",
"chars": 7283,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authentication/provider/LocalAuthenticationMetadataProviderTest.java",
"chars": 2155,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authorization/AuthorizationEvaluatorTest.java",
"chars": 17913,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilderTest.java",
"chars": 38168,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authorization/chain/AclAuthorizationHandlerTest.java",
"chars": 16393,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authorization/chain/UserAuthorizationHandlerTest.java",
"chars": 6475,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authorization/manager/AuthorizationMetadataManagerTest.java",
"chars": 13029,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authorization/model/ResourceTest.java",
"chars": 2219,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authorization/provider/LocalAuthorizationMetadataProviderTest.java",
"chars": 2151,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/authorization/strategy/StatefulAuthorizationStrategyTest.java",
"chars": 6388,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/helper/AuthTestHelper.java",
"chars": 10996,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "auth/src/test/java/org/apache/rocketmq/auth/migration/AuthMigratorTest.java",
"chars": 6342,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "bazel/BUILD.bazel",
"chars": 784,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": "bazel/GenTestRules.bzl",
"chars": 3656,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": "broker/BUILD.bazel",
"chars": 4757,
"preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements. See the NOTICE"
},
{
"path": "broker/pom.xml",
"chars": 4053,
"preview": "<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor\n\tlicense agreements. See the NOTICE "
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java",
"chars": 124351,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/BrokerPathConfigHelper.java",
"chars": 2947,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/BrokerPreOnlineService.java",
"chars": 14052,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java",
"chars": 14378,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/ConfigContext.java",
"chars": 4085,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/ShutdownHook.java",
"chars": 1041,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/auth/converter/AclConverter.java",
"chars": 5131,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/auth/converter/UserConverter.java",
"chars": 2198,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/auth/pipeline/AuthenticationPipeline.java",
"chars": 2919,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/auth/pipeline/AuthorizationPipeline.java",
"chars": 3024,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ClientChannelAttributeHelper.java",
"chars": 2885,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ClientChannelInfo.java",
"chars": 3265,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ClientHousekeepingService.java",
"chars": 3954,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerGroupEvent.java",
"chars": 1291,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerGroupInfo.java",
"chars": 9991,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerIdsChangeListener.java",
"chars": 989,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java",
"chars": 20294,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/DefaultConsumerIdsChangeListener.java",
"chars": 6959,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ProducerChangeListener.java",
"chars": 1108,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ProducerGroupEvent.java",
"chars": 1055,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/ProducerManager.java",
"chars": 16420,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/net/Broker2Client.java",
"chars": 15467,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/client/rebalance/RebalanceLockManager.java",
"chars": 11271,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/coldctr/ColdCtrStrategy.java",
"chars": 1568,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/coldctr/ColdDataCgCtrService.java",
"chars": 10941,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/coldctr/ColdDataPullRequestHoldService.java",
"chars": 4798,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/coldctr/PIDAdaptiveColdCtrStrategy.java",
"chars": 3296,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/coldctr/SimpleColdCtrStrategy.java",
"chars": 1997,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBConfigManager.java",
"chars": 7202,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBConsumerOffsetManager.java",
"chars": 14821,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBLmqSubscriptionGroupManager.java",
"chars": 2131,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBLmqTopicConfigManager.java",
"chars": 2046,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBOffsetSerializeWrapper.java",
"chars": 1314,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBSubscriptionGroupManager.java",
"chars": 18501,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBTopicConfigManager.java",
"chars": 12475,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/ConfigHelper.java",
"chars": 5794,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/ConfigStorage.java",
"chars": 11215,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/ConsumerOffsetManagerV2.java",
"chars": 21515,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/RecordPrefix.java",
"chars": 1105,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/SerializationType.java",
"chars": 1421,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/SubscriptionGroupManagerV2.java",
"chars": 7567,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/TableId.java",
"chars": 1289,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/TablePrefix.java",
"chars": 1079,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/TopicConfigManagerV2.java",
"chars": 7864,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/config/v2/package-info.java",
"chars": 1298,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/controller/ReplicasManager.java",
"chars": 41367,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/dledger/DLedgerRoleChangeHandler.java",
"chars": 8791,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/failover/EscapeBridge.java",
"chars": 21942,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/filter/CommitLogDispatcherCalcBitMap.java",
"chars": 4553,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/filter/ConsumerFilterData.java",
"chars": 4144,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/filter/ConsumerFilterManager.java",
"chars": 18897,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/filter/ExpressionForRetryMessageFilter.java",
"chars": 3830,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/filter/ExpressionMessageFilter.java",
"chars": 6220,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/filter/MessageEvaluationContext.java",
"chars": 1809,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/latency/BrokerFastFailure.java",
"chars": 8128,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/AbstractLiteLifecycleManager.java",
"chars": 8796,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/LiteCtlListener.java",
"chars": 1077,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/LiteEventDispatcher.java",
"chars": 24339,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/LiteLifecycleManager.java",
"chars": 3861,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/LiteMetadataUtil.java",
"chars": 6057,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/LiteQuotaException.java",
"chars": 984,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/LiteSharding.java",
"chars": 946,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/LiteShardingImpl.java",
"chars": 2667,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/LiteSubscriptionRegistry.java",
"chars": 1974,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/LiteSubscriptionRegistryImpl.java",
"chars": 16075,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/lite/RocksDBLiteLifecycleManager.java",
"chars": 5071,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/loadbalance/MessageRequestModeManager.java",
"chars": 3948,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/LmqPullRequestHoldService.java",
"chars": 2844,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/ManyPullRequest.java",
"chars": 1778,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/NotificationRequest.java",
"chars": 1856,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/NotifyMessageArrivingListener.java",
"chars": 2813,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/PollingHeader.java",
"chars": 2216,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/PollingResult.java",
"chars": 955,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/PopCommandCallback.java",
"chars": 1916,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/PopLiteLongPollingService.java",
"chars": 12355,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/PopLongPollingService.java",
"chars": 20586,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/PopRequest.java",
"chars": 3456,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/PullRequest.java",
"chars": 2554,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/longpolling/PullRequestHoldService.java",
"chars": 9219,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsConstant.java",
"chars": 4179,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java",
"chars": 41952,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/ConsumerAttr.java",
"chars": 1870,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/ConsumerLagCalculator.java",
"chars": 25683,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/InvocationStatus.java",
"chars": 1087,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/LiteConsumerLagCalculator.java",
"chars": 12509,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/PopMetricsConstant.java",
"chars": 1913,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/PopMetricsManager.java",
"chars": 12542,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/PopReviveMessageType.java",
"chars": 900,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
},
{
"path": "broker/src/main/java/org/apache/rocketmq/broker/metrics/ProducerAttr.java",
"chars": 1557,
"preview": "/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOT"
}
]
// ... and 2427 more files (download for full content)
About this extraction
This page contains the full source code of the apache/rocketmq GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2627 files (16.4 MB), approximately 4.1M tokens, and a symbol index with 23420 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.