This is an automated email from the ASF dual-hosted git repository. duhengforever pushed a commit to branch 5.0.0-preview in repository https://gitbox.apache.org/repos/asf/rocketmq.git
commit efe598db98ad3ad328cbd3804da83715ac4ab2b7 Merge: df1d93f 48fa70b Author: Heng Du <[email protected]> AuthorDate: Tue Jun 29 15:34:16 2021 +0800 Merge pull request #2867 from apache/pop_consumer [RIP-19] Server-side rebalance, lightweight consumer client support broker/pom.xml | 4 + .../apache/rocketmq/broker/BrokerController.java | 154 +++- .../rocketmq/broker/BrokerPathConfigHelper.java | 8 + .../broker/loadbalance/AssignmentManager.java | 149 ++++ .../loadbalance/MessageRequestModeManager.java | 99 +++ .../longpolling/NotifyMessageArrivingListener.java | 9 +- .../rocketmq/broker/longpolling/PopRequest.java | 87 ++ .../broker/offset/ConsumerOrderInfoManager.java | 426 +++++++++ .../apache/rocketmq/broker/out/BrokerOuterAPI.java | 42 +- .../broker/processor/AckMessageProcessor.java | 188 ++++ .../processor/ChangeInvisibleTimeProcessor.java | 195 +++++ .../broker/processor/PopBufferMergeService.java | 731 ++++++++++++++++ .../broker/processor/PopMessageProcessor.java | 967 +++++++++++++++++++++ .../broker/processor/PopReviveService.java | 470 ++++++++++ .../broker/processor/QueryAssignmentProcessor.java | 307 +++++++ .../org/apache/rocketmq/broker/util/MsgUtil.java | 34 +- .../broker/processor/AckMessageProcessorTest.java | 132 +++ .../ChangeInvisibleTimeProcessorTest.java | 133 +++ .../processor/PopBufferMergeServiceTest.java | 124 +++ .../broker/processor/PopMessageProcessorTest.java | 191 ++++ .../processor/QueryAssignmentProcessorTest.java | 153 ++++ .../rocketmq/client/consumer/AckCallback.java | 22 +- .../apache/rocketmq/client/consumer/AckResult.java | 38 +- .../apache/rocketmq/client/consumer/AckStatus.java | 29 +- .../client/consumer/DefaultMQPushConsumer.java | 51 ++ .../rocketmq/client/consumer/PopCallback.java | 25 +- .../apache/rocketmq/client/consumer/PopResult.java | 82 ++ .../apache/rocketmq/client/consumer/PopStatus.java | 38 +- .../rebalance/AllocateMessageQueueAveragely.java | 12 +- .../AllocateMessageQueueAveragelyByCircle.java | 12 +- .../rocketmq/client/impl/BaseInvokeCallback.java | 23 +- .../rocketmq/client/impl/MQClientAPIImpl.java | 286 +++++- .../ConsumeMessageConcurrentlyService.java | 8 +- .../consumer/ConsumeMessageOrderlyService.java | 14 +- ...a => ConsumeMessagePopConcurrentlyService.java} | 265 +++--- .../consumer/ConsumeMessagePopOrderlyService.java | 408 +++++++++ .../impl/consumer/ConsumeMessageService.java | 5 + .../impl/consumer/DefaultLitePullConsumerImpl.java | 8 +- .../impl/consumer/DefaultMQPushConsumerImpl.java | 331 ++++++- .../client/impl/consumer/MessageQueueLock.java | 29 +- ...sumeMessageService.java => MessageRequest.java} | 27 +- .../client/impl/consumer/PopProcessQueue.java | 84 ++ .../consumer/{PullRequest.java => PopRequest.java} | 71 +- .../client/impl/consumer/PullAPIWrapper.java | 55 +- .../client/impl/consumer/PullMessageService.java | 47 +- .../rocketmq/client/impl/consumer/PullRequest.java | 8 +- .../client/impl/consumer/RebalanceImpl.java | 482 ++++++++-- .../impl/consumer/RebalanceLitePullImpl.java | 25 +- .../client/impl/consumer/RebalancePullImpl.java | 26 +- .../client/impl/consumer/RebalancePushImpl.java | 56 +- .../client/impl/factory/MQClientInstance.java | 37 +- .../consumer/DefaultLitePullConsumerTest.java | 8 + .../client/consumer/DefaultMQPushConsumerTest.java | 121 ++- .../rocketmq/client/impl/MQClientAPIImplTest.java | 490 ++++++++++- .../consumer/DefaultMQPushConsumerImplTest.java | 69 ++ .../impl/consumer/RebalancePushImplTest.java | 53 +- .../client/impl/factory/MQClientInstanceTest.java | 1 + .../client/producer/DefaultMQProducerTest.java | 5 +- .../powermock/extensions/configuration.properties | 16 + .../org/apache/rocketmq/common/BrokerConfig.java | 154 ++++ .../org/apache/rocketmq/common/KeyBuilder.java | 28 +- .../apache/rocketmq/common/PopAckConstants.java | 28 +- .../rocketmq/common/constant/ConsumeInitMode.java | 23 +- .../rocketmq/common/constant/LoggerName.java | 1 + .../rocketmq/common/message/MessageConst.java | 4 + .../rocketmq/common/message/MessageDecoder.java | 2 +- .../common/message/MessageQueueAssignment.java | 83 ++ .../common/message/MessageRequestMode.java | 30 +- .../rocketmq/common/protocol/RequestCode.java | 7 + .../rocketmq/common/protocol/ResponseCode.java | 3 + .../common/protocol/body/ConsumerRunningInfo.java | 32 + .../common/protocol/body/PopProcessQueueInfo.java | 59 ++ .../protocol/body/QueryAssignmentRequestBody.java | 74 ++ .../protocol/body/QueryAssignmentResponseBody.java | 23 +- .../body/SetMessageRequestModeRequestBody.java | 70 ++ .../protocol/header/AckMessageRequestHeader.java | 85 ++ .../header/ChangeInvisibleTimeRequestHeader.java | 97 +++ .../header/ChangeInvisibleTimeResponseHeader.java | 61 ++ .../common/protocol/header/ExtraInfoUtil.java | 258 ++++++ .../protocol/header/PopMessageRequestHeader.java | 155 ++++ .../protocol/header/PopMessageResponseHeader.java | 102 +++ .../rocketmq/common/utils/DataConverter.java | 31 +- distribution/conf/logback_broker.xml | 29 + docs/en/Feature.md | 7 +- example/pom.xml | 4 + .../rocketmq/example/simple/PopPushConsumer.java | 62 ++ pom.xml | 5 + .../rocketmq/remoting/common/RemotingHelper.java | 9 +- .../apache/rocketmq/store/DefaultMessageStore.java | 3 +- .../apache/rocketmq/store/GetMessageResult.java | 10 + .../org/apache/rocketmq/store/MessageStore.java | 4 +- .../java/org/apache/rocketmq/store/pop/AckMsg.java | 87 ++ .../apache/rocketmq/store/pop/PopCheckPoint.java | 174 ++++ .../store/schedule/ScheduleMessageService.java | 20 +- .../rocketmq/test/client/rmq/RMQPopConsumer.java | 33 + .../rocketmq/test/factory/ConsumerFactory.java | 10 + .../rocketmq/test/base/IntegrationTestBase.java | 13 +- .../consumer/balance/NormalMsgStaticBalanceIT.java | 18 +- .../test/client/consumer/pop/PopSubCheckIT.java | 92 ++ .../test/smoke/NormalMessageSendAndRecvIT.java | 6 + .../rocketmq/tools/admin/DefaultMQAdminExt.java | 15 +- .../tools/admin/DefaultMQAdminExtImpl.java | 20 +- .../apache/rocketmq/tools/admin/MQAdminExt.java | 30 +- .../rocketmq/tools/command/MQAdminStartup.java | 4 +- .../command/consumer/SetConsumeModeSubCommand.java | 135 +++ 105 files changed, 9560 insertions(+), 610 deletions(-)
