├── .gitignore ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── HEADER ├── LICENSE ├── README.md ├── docker ├── bin │ ├── README.md │ ├── integrate_test.sh │ └── integration │ │ ├── benchmark │ │ ├── driver-joyqueue │ │ │ ├── joyqueue.yaml │ │ │ └── kafka.yaml │ │ └── workloads │ │ │ ├── 1-topic-5-partition-1kb-10P1C-async.yaml │ │ │ ├── 1-topic-5-partition-1kb-10P1C-sync.yaml │ │ │ ├── 1-topic-5-partition-1kb-1P1C-async.yaml │ │ │ ├── 1-topic-5-partition-1kb-1P1C-sync.yaml │ │ │ └── 1-topic-5-partition-1kb-50P1C-async.yaml │ │ ├── bootstrap.conf │ │ ├── bootstrap.py │ │ ├── configuration.py │ │ ├── model │ │ ├── task.py │ │ └── workspace.py │ │ ├── shell.py │ │ └── workflow.py ├── jenkins │ ├── Dockerfile │ ├── Jenkinsfile │ ├── README.md │ └── plugins.txt ├── pom.xml ├── server │ ├── Dockerfile │ └── pom.xml └── web │ ├── Dockerfile │ └── pom.xml ├── docs ├── cn │ ├── README.md │ ├── client.md │ ├── client_protocol.md │ ├── cluster.md │ ├── concepts.md │ ├── configurations.md │ ├── how_to_compile.md │ ├── index.md │ ├── performance.md │ ├── quickstart.md │ └── rest_api.md ├── diagrams │ └── JoyQueue Docs.vpp └── images │ └── cluster.png ├── joyqueue-client ├── joyqueue-client-all-shaded │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── joyqueue │ │ ├── FakeAll.java │ │ ├── FakeAllShade.java │ │ └── package-info.java ├── joyqueue-client-all │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── joyqueue │ │ ├── FakeAll.java │ │ └── package-info.java ├── joyqueue-client-core-shaded │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── joyqueue │ │ ├── Fake.java │ │ └── package-info.java ├── joyqueue-client-core │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ ├── io │ │ │ └── openmessaging │ │ │ │ └── joyqueue │ │ │ │ ├── JoyQueueBuiltinKeys.java │ │ │ │ ├── JoyQueueOMSConsts.java │ │ │ │ ├── MessagingAccessPointImpl.java │ │ │ │ ├── config │ │ │ │ ├── ExceptionConverter.java │ │ │ │ ├── KeyValueConverter.java │ │ │ │ └── KeyValueHelper.java │ │ │ │ ├── consumer │ │ │ │ ├── ConsumerIndex.java │ │ │ │ ├── ExtensionConsumer.java │ │ │ │ ├── extension │ │ │ │ │ └── ExtensionAdapter.java │ │ │ │ ├── interceptor │ │ │ │ │ ├── ContextAdapter.java │ │ │ │ │ └── ContextAttributeAdapter.java │ │ │ │ ├── message │ │ │ │ │ ├── MessageAdapter.java │ │ │ │ │ ├── MessageConverter.java │ │ │ │ │ ├── MessageExtensionHeaderAdapter.java │ │ │ │ │ ├── MessageHeaderAdapter.java │ │ │ │ │ ├── MessagePropertiesAdapter.java │ │ │ │ │ └── MessageReceiptAdapter.java │ │ │ │ └── support │ │ │ │ │ ├── BatchMessageListenerAdapter.java │ │ │ │ │ ├── BatchMessageListenerContextAdapter.java │ │ │ │ │ ├── ConsumerImpl.java │ │ │ │ │ ├── ConsumerInterceptorAdapter.java │ │ │ │ │ ├── MessageListenerAdapter.java │ │ │ │ │ └── MessageListenerContextAdapter.java │ │ │ │ ├── domain │ │ │ │ ├── JoyQueueConsumerBuiltinKeys.java │ │ │ │ ├── JoyQueueNameServerBuiltinKeys.java │ │ │ │ ├── JoyQueueProducerBuiltinKeys.java │ │ │ │ ├── JoyQueueTransportBuiltinKeys.java │ │ │ │ └── JoyQueueTxFeedbackBuiltinKeys.java │ │ │ │ ├── extension │ │ │ │ ├── AbstractExtensionAdapter.java │ │ │ │ ├── PartitionAdapter.java │ │ │ │ ├── QueueMetaDataAdapter.java │ │ │ │ └── TopicMetadataConverter.java │ │ │ │ ├── message │ │ │ │ ├── EmptyMessageReceipt.java │ │ │ │ └── ExtensionMessage.java │ │ │ │ ├── producer │ │ │ │ ├── ExtensionProducer.java │ │ │ │ ├── ExtensionTransactionalResult.java │ │ │ │ ├── extension │ │ │ │ │ ├── ExtensionAdapter.java │ │ │ │ │ └── ExtensionMessageFactory.java │ │ │ │ ├── interceptor │ │ │ │ │ ├── ContextAdapter.java │ │ │ │ │ └── ContextAttributeAdapter.java │ │ │ │ ├── message │ │ │ │ │ ├── ExtensionHeader.java │ │ │ │ │ ├── ExtensionMessageFactoryImpl.java │ │ │ │ │ ├── MessageAdapter.java │ │ │ │ │ ├── MessageExtensionHeaderAdapter.java │ │ │ │ │ ├── MessageHeaderAdapter.java │ │ │ │ │ ├── MessagePropertiesAdapter.java │ │ │ │ │ └── OMSProduceMessage.java │ │ │ │ └── support │ │ │ │ │ ├── ExtensionTransactionalResultAdapter.java │ │ │ │ │ ├── FutureAdapter.java │ │ │ │ │ ├── ProducerImpl.java │ │ │ │ │ ├── ProducerInterceptorAdapter.java │ │ │ │ │ ├── SendResultAdapter.java │ │ │ │ │ ├── SendResultConverter.java │ │ │ │ │ ├── TransactionProducerImpl.java │ │ │ │ │ ├── TransactionStateCheckListenerAdapter.java │ │ │ │ │ ├── TransactionalContextAdapter.java │ │ │ │ │ └── TransactionalResultAdapter.java │ │ │ │ └── support │ │ │ │ ├── AbstractServiceLifecycle.java │ │ │ │ ├── ConsumerWrapper.java │ │ │ │ ├── MessageAccessPointHolder.java │ │ │ │ └── ProducerWrapper.java │ │ └── org │ │ │ └── joyqueue │ │ │ └── client │ │ │ └── internal │ │ │ ├── ClientConsts.java │ │ │ ├── MessageAccessPoint.java │ │ │ ├── MessageAccessPointFactory.java │ │ │ ├── Plugins.java │ │ │ ├── cluster │ │ │ ├── ClusterClient.java │ │ │ ├── ClusterClientManager.java │ │ │ ├── ClusterClientManagerFactory.java │ │ │ ├── ClusterManager.java │ │ │ ├── ClusterManagerFactory.java │ │ │ ├── ClusterManagerWrapper.java │ │ │ ├── MetadataCacheManager.java │ │ │ ├── MetadataUpdater.java │ │ │ ├── TopicAndApp.java │ │ │ ├── domain │ │ │ │ └── TopicMetadataHolder.java │ │ │ └── exception │ │ │ │ └── ClusterException.java │ │ │ ├── common │ │ │ ├── compress │ │ │ │ ├── CompressUtils.java │ │ │ │ ├── Compressor.java │ │ │ │ ├── CompressorManager.java │ │ │ │ └── support │ │ │ │ │ ├── SnappyCompressor.java │ │ │ │ │ └── ZlibCompressor.java │ │ │ ├── interceptor │ │ │ │ └── BaseInterceptor.java │ │ │ └── ordered │ │ │ │ ├── Ordered.java │ │ │ │ ├── OrderedComparator.java │ │ │ │ └── OrderedSorter.java │ │ │ ├── consumer │ │ │ ├── BaseMessageListener.java │ │ │ ├── BatchMessageListener.java │ │ │ ├── BrokerLoadBalance.java │ │ │ ├── ConsumerIndexManager.java │ │ │ ├── MessageConsumer.java │ │ │ ├── MessageConsumerFactory.java │ │ │ ├── MessageFetcher.java │ │ │ ├── MessageFetcherFactory.java │ │ │ ├── MessageListener.java │ │ │ ├── MessageListenerContainer.java │ │ │ ├── MessagePoller.java │ │ │ ├── MessagePollerFactory.java │ │ │ ├── callback │ │ │ │ ├── BatchFetchListener.java │ │ │ │ ├── BatchPartitionFetchListener.java │ │ │ │ ├── FetchListener.java │ │ │ │ ├── PartitionConsumerListener.java │ │ │ │ ├── PartitionFetchListener.java │ │ │ │ └── PollerListener.java │ │ │ ├── config │ │ │ │ ├── ConsumerConfig.java │ │ │ │ └── FetcherConfig.java │ │ │ ├── container │ │ │ │ ├── DefaultMessageListenerContainer.java │ │ │ │ ├── MessageListenerContainerFactory.java │ │ │ │ └── MessageListenerContainerWrapper.java │ │ │ ├── converter │ │ │ │ ├── BrokerAssignmentConverter.java │ │ │ │ ├── BrokerMessageConverter.java │ │ │ │ ├── ConsumeMessageConverter.java │ │ │ │ ├── MessageConvertSupport.java │ │ │ │ ├── MessageConverter.java │ │ │ │ └── TopicMetadataConverter.java │ │ │ ├── coordinator │ │ │ │ ├── ConsumerCoordinator.java │ │ │ │ ├── CoordinatorManager.java │ │ │ │ ├── PartitionAssignmentManager.java │ │ │ │ └── domain │ │ │ │ │ ├── BrokerAssignment.java │ │ │ │ │ ├── BrokerAssignments.java │ │ │ │ │ ├── BrokerAssignmentsHolder.java │ │ │ │ │ ├── PartitionAssignment.java │ │ │ │ │ └── PartitionAssignmentHolder.java │ │ │ ├── domain │ │ │ │ ├── ConsumeMessage.java │ │ │ │ ├── ConsumeReply.java │ │ │ │ ├── FetchIndexData.java │ │ │ │ ├── FetchMessageData.java │ │ │ │ └── LocalIndexData.java │ │ │ ├── exception │ │ │ │ ├── ConsumerException.java │ │ │ │ └── IgnoreAckException.java │ │ │ ├── interceptor │ │ │ │ ├── ConsumeContext.java │ │ │ │ ├── ConsumerInterceptor.java │ │ │ │ ├── ConsumerInterceptorManager.java │ │ │ │ ├── ConsumerInvocation.java │ │ │ │ ├── ConsumerInvoker.java │ │ │ │ └── GlobalConsumerInterceptorManager.java │ │ │ ├── support │ │ │ │ ├── BatchConsumerInvoker.java │ │ │ │ ├── BindThreadBrokerLoadBalance.java │ │ │ │ ├── BroadcastMessagePoller.java │ │ │ │ ├── BrokerLoadBalanceManager.java │ │ │ │ ├── CompletableFuturePollerListener.java │ │ │ │ ├── ConsumerLocalIndexStore.java │ │ │ │ ├── DefaultConsumerIndexManager.java │ │ │ │ ├── DefaultMessageConsumer.java │ │ │ │ ├── DefaultMessageFetcher.java │ │ │ │ ├── DefaultMessagePoller.java │ │ │ │ ├── LocalConsumerIndexManager.java │ │ │ │ ├── MessageConsumerWrapper.java │ │ │ │ ├── MessageFetcherWrapper.java │ │ │ │ ├── MessageListenerManager.java │ │ │ │ ├── MessagePollerInner.java │ │ │ │ ├── MessagePollerWrapper.java │ │ │ │ ├── OnceConsumerInvoker.java │ │ │ │ ├── PartitionMessagePoller.java │ │ │ │ ├── RandomBrokerLoadBalance.java │ │ │ │ ├── RoundRobinBrokerLoadBalance.java │ │ │ │ ├── TopicMessageConsumer.java │ │ │ │ ├── TopicMessageConsumerDispatcher.java │ │ │ │ └── TopicMessageConsumerScheduler.java │ │ │ └── transport │ │ │ │ ├── ConsumerClient.java │ │ │ │ ├── ConsumerClientConnectionListener.java │ │ │ │ ├── ConsumerClientGroup.java │ │ │ │ ├── ConsumerClientManager.java │ │ │ │ ├── ConsumerClientManagerFactory.java │ │ │ │ └── ConsumerConnectionState.java │ │ │ ├── exception │ │ │ ├── ClientException.java │ │ │ └── SecurityException.java │ │ │ ├── metadata │ │ │ ├── MetadataManager.java │ │ │ ├── converter │ │ │ │ └── ClusterMetadataConverter.java │ │ │ ├── domain │ │ │ │ ├── ClusterMetadata.java │ │ │ │ ├── PartitionGroupMetadata.java │ │ │ │ ├── PartitionMetadata.java │ │ │ │ ├── PartitionNode.java │ │ │ │ └── TopicMetadata.java │ │ │ └── exception │ │ │ │ └── MetadataException.java │ │ │ ├── nameserver │ │ │ ├── NameServerConfig.java │ │ │ ├── NameServerConfigChecker.java │ │ │ └── helper │ │ │ │ └── NameServerHelper.java │ │ │ ├── producer │ │ │ ├── MessageProducer.java │ │ │ ├── MessageProducerFactory.java │ │ │ ├── MessageSender.java │ │ │ ├── MessageSenderFactory.java │ │ │ ├── MessageSenderWrapper.java │ │ │ ├── PartitionSelector.java │ │ │ ├── TransactionMessageProducer.java │ │ │ ├── TxFeedbackManager.java │ │ │ ├── TxFeedbackManagerFactory.java │ │ │ ├── callback │ │ │ │ ├── AsyncBatchProduceCallback.java │ │ │ │ ├── AsyncBatchProduceCallbackAdapter.java │ │ │ │ ├── AsyncBatchSendCallback.java │ │ │ │ ├── AsyncMultiBatchSendCallback.java │ │ │ │ ├── AsyncProduceCallback.java │ │ │ │ ├── AsyncSendCallback.java │ │ │ │ ├── CompletableFutureAsyncBatchProduceCallback.java │ │ │ │ ├── CompletableFutureAsyncProduceCallback.java │ │ │ │ └── TxFeedbackCallback.java │ │ │ ├── checker │ │ │ │ └── ProduceMessageChecker.java │ │ │ ├── config │ │ │ │ ├── ProducerConfig.java │ │ │ │ └── SenderConfig.java │ │ │ ├── converter │ │ │ │ ├── MessageSenderConverter.java │ │ │ │ └── ProduceMessageConverter.java │ │ │ ├── domain │ │ │ │ ├── FeedbackData.java │ │ │ │ ├── FetchFeedbackData.java │ │ │ │ ├── ProduceMessage.java │ │ │ │ ├── ProduceResult.java │ │ │ │ ├── SendBatchResultData.java │ │ │ │ ├── SendPrepareResult.java │ │ │ │ ├── SendResult.java │ │ │ │ ├── SendResultData.java │ │ │ │ └── TransactionStatus.java │ │ │ ├── exception │ │ │ │ ├── NeedRetryException.java │ │ │ │ └── ProducerException.java │ │ │ ├── feedback │ │ │ │ ├── DefaultTxFeedbackManager.java │ │ │ │ ├── TxFeedbackDispatcher.java │ │ │ │ ├── TxFeedbackManagerWrapper.java │ │ │ │ ├── TxFeedbackScheduler.java │ │ │ │ └── config │ │ │ │ │ ├── TxFeedbackConfig.java │ │ │ │ │ └── TxFeedbackConfigChecker.java │ │ │ ├── helper │ │ │ │ └── ProducerHelper.java │ │ │ ├── interceptor │ │ │ │ ├── GlobalProducerInterceptorManager.java │ │ │ │ ├── ProduceContext.java │ │ │ │ ├── ProducerInterceptor.java │ │ │ │ ├── ProducerInterceptorManager.java │ │ │ │ ├── ProducerInvocation.java │ │ │ │ └── ProducerInvoker.java │ │ │ ├── support │ │ │ │ ├── AbstractPartitionSelector.java │ │ │ │ ├── AdaptivePartitionSelector.java │ │ │ │ ├── DefaultMessageProducer.java │ │ │ │ ├── DefaultMessageSender.java │ │ │ │ ├── DefaultTransactionMessageProducer.java │ │ │ │ ├── MessageProducerInner.java │ │ │ │ ├── MessageProducerWrapper.java │ │ │ │ ├── PartitionSelectorManager.java │ │ │ │ └── WeightedPartitionSelector.java │ │ │ └── transport │ │ │ │ ├── ProducerClient.java │ │ │ │ ├── ProducerClientConnectionListener.java │ │ │ │ ├── ProducerClientGroup.java │ │ │ │ ├── ProducerClientManager.java │ │ │ │ ├── ProducerClientManagerFactory.java │ │ │ │ └── ProducerConnectionState.java │ │ │ ├── support │ │ │ └── DefaultMessageAccessPoint.java │ │ │ ├── trace │ │ │ ├── Trace.java │ │ │ ├── TraceBuilder.java │ │ │ ├── TraceCaller.java │ │ │ ├── TraceContext.java │ │ │ ├── TraceManager.java │ │ │ ├── TraceType.java │ │ │ ├── interceptor │ │ │ │ ├── TraceConsumerInterceptor.java │ │ │ │ └── TraceProducerInterceptor.java │ │ │ └── support │ │ │ │ ├── CompositeTrace.java │ │ │ │ ├── CompositeTraceCaller.java │ │ │ │ ├── NoneTrace.java │ │ │ │ ├── NoneTraceCaller.java │ │ │ │ └── TraceWrapper.java │ │ │ └── transport │ │ │ ├── Client.java │ │ │ ├── ClientConnectionInfo.java │ │ │ ├── ClientConnectionListener.java │ │ │ ├── ClientConnectionState.java │ │ │ ├── ClientGroup.java │ │ │ ├── ClientGroupManager.java │ │ │ ├── ClientHeartbeatThread.java │ │ │ ├── ClientManager.java │ │ │ ├── ClientState.java │ │ │ ├── ConnectionState.java │ │ │ └── config │ │ │ ├── TransportConfig.java │ │ │ └── TransportConfigChecker.java │ │ └── resources │ │ └── META-INF │ │ ├── joyqueue │ │ └── version.properties │ │ └── services │ │ ├── org.joyqueue.client.internal.common.compress.Compressor │ │ ├── org.joyqueue.client.internal.consumer.BrokerLoadBalance │ │ ├── org.joyqueue.client.internal.consumer.interceptor.ConsumerInterceptor │ │ ├── org.joyqueue.client.internal.producer.PartitionSelector │ │ └── org.joyqueue.client.internal.producer.interceptor.ProducerInterceptor ├── joyqueue-client-kafka │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── joyqueue │ │ │ └── client │ │ │ └── internal │ │ │ └── consumer │ │ │ └── converter │ │ │ └── kafka │ │ │ ├── KafkaBufferUtils.java │ │ │ ├── KafkaMessageConverter.java │ │ │ └── compressor │ │ │ ├── KafkaCompressionCodec.java │ │ │ ├── KafkaCompressionCodecFactory.java │ │ │ ├── lz4 │ │ │ ├── KafkaLZ4BlockInputStream.java │ │ │ └── KafkaLZ4BlockOutputStream.java │ │ │ └── stream │ │ │ └── ByteBufferInputStream.java │ │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.joyqueue.client.internal.consumer.converter.MessageConverter ├── joyqueue-client-loadbalance-adaptive │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── joyqueue │ │ │ └── client │ │ │ └── loadbalance │ │ │ └── adaptive │ │ │ ├── AdaptiveLoadBalance.java │ │ │ ├── RandomLoadBalance.java │ │ │ ├── ScoreJudge.java │ │ │ ├── ScoreJudgeManager.java │ │ │ ├── WeightLoadBalance.java │ │ │ ├── config │ │ │ └── AdaptiveLoadBalanceConfig.java │ │ │ ├── judge │ │ │ ├── AvailableScoreJudge.java │ │ │ ├── AvgScoreJudge.java │ │ │ └── RegionScoreJudge.java │ │ │ └── node │ │ │ ├── Metric.java │ │ │ ├── Metrics.java │ │ │ ├── Node.java │ │ │ ├── Nodes.java │ │ │ └── WeightNode.java │ │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.joyqueue.client.loadbalance.adaptive.ScoreJudge ├── joyqueue-client-samples │ ├── joyqueue-client-samples-kafka │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── client │ │ │ │ └── samples │ │ │ │ └── kafka │ │ │ │ ├── SimpleKafkaConsumer.java │ │ │ │ └── SimpleKafkaProducer.java │ │ │ └── resources │ │ │ └── log4j2.xml │ ├── joyqueue-client-samples-openmessaging │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── client │ │ │ │ └── samples │ │ │ │ └── api │ │ │ │ ├── consumer │ │ │ │ ├── BatchConsumer.java │ │ │ │ ├── BatchReceiveConsumer.java │ │ │ │ ├── JoyQueueSimpleConsumerInterceptor.java │ │ │ │ ├── PartitionIndexReceiveConsumer.java │ │ │ │ ├── PartitionReceiveConsumer.java │ │ │ │ ├── ReceiveConsumer.java │ │ │ │ ├── SimpleConsumer.java │ │ │ │ └── SimpleConsumerInterceptor.java │ │ │ │ ├── interceptor │ │ │ │ ├── SimpleMessageFilterConsts.java │ │ │ │ ├── SimpleMessageFilterConsumerInterceptor.java │ │ │ │ └── SimpleMessageFilterProducerInterceptor.java │ │ │ │ ├── metadata │ │ │ │ └── SimpleMetadata.java │ │ │ │ └── producer │ │ │ │ ├── AsyncBatchProducer.java │ │ │ │ ├── AsyncProducer.java │ │ │ │ ├── BatchProducer.java │ │ │ │ ├── ExtensionTransactionProducer.java │ │ │ │ ├── FutureProducer.java │ │ │ │ ├── JoyQueueSimpleProducerInterceptor.java │ │ │ │ ├── SimpleProducer.java │ │ │ │ ├── SimpleProducerInterceptor.java │ │ │ │ └── TransactionProducer.java │ │ │ └── resources │ │ │ ├── log4j2.xml │ │ │ └── services │ │ │ ├── com.jd.joyqueue.client.internal.consumer.interceptor.ConsumerInterceptor │ │ │ └── com.jd.joyqueue.client.internal.producer.interceptor.ProducerInterceptor │ ├── joyqueue-client-samples-spring │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── client │ │ │ │ └── samples │ │ │ │ └── spring │ │ │ │ ├── SimpleConsumerInterceptor.java │ │ │ │ ├── SimpleMessageListener.java │ │ │ │ ├── SimpleProducerInterceptor.java │ │ │ │ ├── SimpleTransactionStateCheckListener.java │ │ │ │ └── SpringMain.java │ │ │ └── resources │ │ │ ├── log4j2.xml │ │ │ └── spring-sample.xml │ ├── joyqueue-client-samples-springboot │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── client │ │ │ │ └── samples │ │ │ │ └── springboot │ │ │ │ ├── SimpleMessageListener1.java │ │ │ │ ├── SimpleMessageListener2.java │ │ │ │ ├── SimpleProducerInterceptor.java │ │ │ │ ├── SimpleTransactionStateCheckListener.java │ │ │ │ ├── SipmleConsumerInterceptor.java │ │ │ │ └── SpringBootMain.java │ │ │ └── resources │ │ │ ├── application.properties │ │ │ └── log4j2.xml │ ├── joyqueue-client-samples-springcloud-stream │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── client │ │ │ │ └── samples │ │ │ │ └── springcloud │ │ │ │ └── stream │ │ │ │ ├── CustomProcessor.java │ │ │ │ ├── StreamBootstrap.java │ │ │ │ └── StreamListenerService.java │ │ │ └── resources │ │ │ ├── application-stream.yml │ │ │ └── application.yml │ └── pom.xml └── pom.xml ├── joyqueue-common ├── joyqueue-datasource │ ├── joyqueue-datasource-api │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── datasource │ │ │ ├── DataSourceBuilder.java │ │ │ ├── DataSourceConfig.java │ │ │ ├── DataSourceFactory.java │ │ │ └── XDataSource.java │ ├── joyqueue-datasource-hikaricp │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── datasource │ │ │ │ ├── HikariDataSourceBuilder.java │ │ │ │ └── HikariXDataSource.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.joyqueue.datasource.DataSourceBuilder │ └── pom.xml ├── joyqueue-hbase │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── joyqueue │ │ └── hbase │ │ └── HBaseClient.java ├── joyqueue-model │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── joyqueue │ │ │ ├── config │ │ │ └── BrokerConfigKey.java │ │ │ ├── domain │ │ │ ├── AllMetadata.java │ │ │ ├── AppToken.java │ │ │ ├── Broker.java │ │ │ ├── ClientType.java │ │ │ ├── Config.java │ │ │ ├── ConsumeRetry.java │ │ │ ├── Consumer.java │ │ │ ├── ConsumerPolicy.java │ │ │ ├── CoordinatorDetail.java │ │ │ ├── CoordinatorGroup.java │ │ │ ├── CoordinatorGroupExpiredMember.java │ │ │ ├── CoordinatorGroupMember.java │ │ │ ├── CoordinatorGroupMemberExtension.java │ │ │ ├── DataCenter.java │ │ │ ├── Namespace.java │ │ │ ├── Partition.java │ │ │ ├── PartitionGroup.java │ │ │ ├── Producer.java │ │ │ ├── ProducerPolicy.java │ │ │ ├── QosLevel.java │ │ │ ├── Replica.java │ │ │ ├── Subscription.java │ │ │ ├── Topic.java │ │ │ ├── TopicConfig.java │ │ │ ├── TopicName.java │ │ │ └── TopicType.java │ │ │ ├── event │ │ │ ├── BrokerEvent.java │ │ │ ├── ConfigEvent.java │ │ │ ├── ConsumerEvent.java │ │ │ ├── DataCenterEvent.java │ │ │ ├── EventType.java │ │ │ ├── MetaEvent.java │ │ │ ├── NameServerEvent.java │ │ │ ├── PartitionGroupEvent.java │ │ │ ├── ProducerEvent.java │ │ │ └── TopicEvent.java │ │ │ ├── exception │ │ │ ├── JoyQueueCode.java │ │ │ ├── JoyQueueConfigException.java │ │ │ └── JoyQueueException.java │ │ │ ├── helper │ │ │ └── PortHelper.java │ │ │ ├── manage │ │ │ ├── BrokerMetadata.java │ │ │ ├── IndexItem.java │ │ │ ├── PartitionGroupMetric.java │ │ │ ├── PartitionGroupPosition.java │ │ │ ├── PartitionMetric.java │ │ │ ├── PartitionPosition.java │ │ │ └── TopicMetric.java │ │ │ ├── message │ │ │ ├── BrokerCommit.java │ │ │ ├── BrokerMessage.java │ │ │ ├── BrokerPrepare.java │ │ │ ├── BrokerRollback.java │ │ │ ├── JoyQueueLog.java │ │ │ ├── Message.java │ │ │ ├── MessageId.java │ │ │ ├── MessageLocation.java │ │ │ ├── SourceType.java │ │ │ └── exception │ │ │ │ └── MessageException.java │ │ │ ├── model │ │ │ ├── BrokerMetadata.java │ │ │ ├── ListQuery.java │ │ │ ├── MonitorRecord.java │ │ │ ├── PageResult.java │ │ │ ├── Pager.java │ │ │ ├── Pagination.java │ │ │ ├── QKeyword.java │ │ │ ├── QOperator.java │ │ │ ├── QPageQuery.java │ │ │ └── Query.java │ │ │ ├── monitor │ │ │ ├── ArchiveMonitorInfo.java │ │ │ ├── BaseMonitorInfo.java │ │ │ ├── BrokerMessageInfo.java │ │ │ ├── BrokerMonitorInfo.java │ │ │ ├── BrokerMonitorInfoExt.java │ │ │ ├── BrokerStartupInfo.java │ │ │ ├── BufferPoolMonitorInfo.java │ │ │ ├── Client.java │ │ │ ├── ConnectionMonitorDetailInfo.java │ │ │ ├── ConnectionMonitorInfo.java │ │ │ ├── ConsumerMonitorInfo.java │ │ │ ├── ConsumerPartitionGroupMonitorInfo.java │ │ │ ├── ConsumerPartitionMonitorInfo.java │ │ │ ├── DeQueueMonitorInfo.java │ │ │ ├── DefaultPointTracer.java │ │ │ ├── ElectionMonitorInfo.java │ │ │ ├── EnQueueMonitorInfo.java │ │ │ ├── MqttAcknowledgedInfo.java │ │ │ ├── MqttConnectionInfo.java │ │ │ ├── MqttConsumeInfo.java │ │ │ ├── MqttDeliveryDetailInfo.java │ │ │ ├── MqttDeliveryInfo.java │ │ │ ├── MqttPublishInfo.java │ │ │ ├── MqttSessionInfo.java │ │ │ ├── MqttSubscriptionInfo.java │ │ │ ├── MqttSummaryInfo.java │ │ │ ├── MqttThreadClientInfo.java │ │ │ ├── MqttThreadDetailInfo.java │ │ │ ├── NameServerMonitorInfo.java │ │ │ ├── PartitionAckMonitorInfo.java │ │ │ ├── PartitionGroupMonitorInfo.java │ │ │ ├── PartitionGroupNodeMonitorInfo.java │ │ │ ├── PartitionLeaderAckMonitorInfo.java │ │ │ ├── PartitionMonitorInfo.java │ │ │ ├── PendingMonitorInfo.java │ │ │ ├── PointTracer.java │ │ │ ├── ProducerMonitorInfo.java │ │ │ ├── ProducerPartitionGroupMonitorInfo.java │ │ │ ├── ProducerPartitionMonitorInfo.java │ │ │ ├── ReplicationMonitorInfo.java │ │ │ ├── RestResponse.java │ │ │ ├── RestResponseCode.java │ │ │ ├── RetryMonitorInfo.java │ │ │ ├── StoreMonitorInfo.java │ │ │ ├── StringResponse.java │ │ │ ├── TopicMonitorInfo.java │ │ │ └── TraceStat.java │ │ │ └── response │ │ │ ├── BooleanResponse.java │ │ │ └── Response.java │ │ └── resources │ │ └── META-INF │ │ └── services │ │ ├── org.joyqueue.monitor.PointTracer │ │ └── org.joyqueue.toolkit.config.PropertyDef ├── joyqueue-network │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── joyqueue │ │ └── network │ │ ├── codec │ │ ├── AddConnectionRequestCodec.java │ │ ├── AddConnectionResponseCodec.java │ │ ├── AddConsumerRequestCodec.java │ │ ├── AddConsumerResponseCodec.java │ │ ├── AddProducerRequestCodec.java │ │ ├── AddProducerResponseCodec.java │ │ ├── AuthorizationCodec.java │ │ ├── BooleanAckCodec.java │ │ ├── CommitAckRequestCodec.java │ │ ├── CommitAckResponseCodec.java │ │ ├── CommitIndexRequestCodec.java │ │ ├── CommitIndexResponseCodec.java │ │ ├── FetchAssignedPartitionRequestCodec.java │ │ ├── FetchAssignedPartitionResponseCodec.java │ │ ├── FetchClusterRequestCodec.java │ │ ├── FetchClusterResponseCodec.java │ │ ├── FetchHealthRequestCodec.java │ │ ├── FetchHealthResponseCodec.java │ │ ├── FetchIndexRequestCodec.java │ │ ├── FetchIndexResponseCodec.java │ │ ├── FetchPartitionMessageRequestCodec.java │ │ ├── FetchPartitionMessageResponseCodec.java │ │ ├── FetchProduceFeedbackRequestCodec.java │ │ ├── FetchProduceFeedbackResponseCodec.java │ │ ├── FetchTopicMessageRequestCodec.java │ │ ├── FetchTopicMessageResponseCodec.java │ │ ├── FindCoordinatorRequestCodec.java │ │ ├── FindCoordinatorResponseCodec.java │ │ ├── GetTopicsAckCodec.java │ │ ├── GetTopicsCodec.java │ │ ├── HeartbeatRequestCodec.java │ │ ├── JoyQueueCodecFactory.java │ │ ├── NullPayloadCodec.java │ │ ├── ProduceMessageCommitRequestCodec.java │ │ ├── ProduceMessageCommitResponseCodec.java │ │ ├── ProduceMessagePrepareRequestCodec.java │ │ ├── ProduceMessagePrepareResponseCodec.java │ │ ├── ProduceMessageRequestCodec.java │ │ ├── ProduceMessageResponseCodec.java │ │ ├── ProduceMessageRollbackRequestCodec.java │ │ ├── ProduceMessageRollbackResponseCodec.java │ │ ├── RemoveConnectionRequestCodec.java │ │ ├── RemoveConsumerRequestCodec.java │ │ ├── RemoveProducerRequestCodec.java │ │ ├── SubscribeAckCodec.java │ │ ├── SubscribeCodec.java │ │ └── UnSubscribeCodec.java │ │ ├── command │ │ ├── AddConnectionRequest.java │ │ ├── AddConnectionResponse.java │ │ ├── AddConsumerRequest.java │ │ ├── AddConsumerResponse.java │ │ ├── AddProducerRequest.java │ │ ├── AddProducerResponse.java │ │ ├── Authorization.java │ │ ├── BooleanAck.java │ │ ├── CommandType.java │ │ ├── CommitAckData.java │ │ ├── CommitAckRequest.java │ │ ├── CommitAckResponse.java │ │ ├── CommitAckResult.java │ │ ├── CommitIndexRequest.java │ │ ├── CommitIndexResponse.java │ │ ├── FetchAssignedPartitionAckData.java │ │ ├── FetchAssignedPartitionData.java │ │ ├── FetchAssignedPartitionRequest.java │ │ ├── FetchAssignedPartitionResponse.java │ │ ├── FetchClusterRequest.java │ │ ├── FetchClusterResponse.java │ │ ├── FetchHealthRequest.java │ │ ├── FetchHealthResponse.java │ │ ├── FetchIndexData.java │ │ ├── FetchIndexRequest.java │ │ ├── FetchIndexResponse.java │ │ ├── FetchPartitionMessageAckData.java │ │ ├── FetchPartitionMessageData.java │ │ ├── FetchPartitionMessageRequest.java │ │ ├── FetchPartitionMessageResponse.java │ │ ├── FetchProduceFeedbackAckData.java │ │ ├── FetchProduceFeedbackRequest.java │ │ ├── FetchProduceFeedbackResponse.java │ │ ├── FetchTopicMessageAckData.java │ │ ├── FetchTopicMessageData.java │ │ ├── FetchTopicMessageRequest.java │ │ ├── FetchTopicMessageResponse.java │ │ ├── FindCoordinatorAckData.java │ │ ├── FindCoordinatorRequest.java │ │ ├── FindCoordinatorResponse.java │ │ ├── GetTopics.java │ │ ├── GetTopicsAck.java │ │ ├── HeartbeatRequest.java │ │ ├── JoyQueueCommandType.java │ │ ├── JoyQueuePayloadCodecRegistry.java │ │ ├── ProduceMessageAckData.java │ │ ├── ProduceMessageAckItemData.java │ │ ├── ProduceMessageCommitRequest.java │ │ ├── ProduceMessageCommitResponse.java │ │ ├── ProduceMessageData.java │ │ ├── ProduceMessagePrepareRequest.java │ │ ├── ProduceMessagePrepareResponse.java │ │ ├── ProduceMessageRequest.java │ │ ├── ProduceMessageResponse.java │ │ ├── ProduceMessageRollbackRequest.java │ │ ├── ProduceMessageRollbackResponse.java │ │ ├── RemoveConnectionRequest.java │ │ ├── RemoveConsumerRequest.java │ │ ├── RemoveProducerRequest.java │ │ ├── RetryType.java │ │ ├── Subscribe.java │ │ ├── SubscribeAck.java │ │ ├── SystemCmd.java │ │ ├── Topic.java │ │ ├── TopicPartition.java │ │ ├── TopicPartitionGroup.java │ │ ├── TxStatus.java │ │ └── UnSubscribe.java │ │ ├── domain │ │ ├── BrokerNode.java │ │ ├── BrokerPermission.java │ │ └── BrokerSysCode.java │ │ ├── event │ │ ├── TransportEvent.java │ │ ├── TransportEventHandler.java │ │ └── TransportEventType.java │ │ ├── handler │ │ ├── ClientConnectionHandler.java │ │ ├── ConnectionHandler.java │ │ └── ExceptionChannelHandler.java │ │ ├── protocol │ │ ├── ChannelHandlerProvider.java │ │ ├── CommandHandlerProvider.java │ │ ├── ExceptionHandlerProvider.java │ │ ├── Protocol.java │ │ ├── ProtocolException.java │ │ ├── ProtocolServer.java │ │ ├── ProtocolService.java │ │ ├── ProtocolTransport.java │ │ ├── TransportEventBusAware.java │ │ └── annotation │ │ │ ├── CommonHandler.java │ │ │ ├── FetchHandler.java │ │ │ └── ProduceHandler.java │ │ ├── serializer │ │ ├── BatchMessageSerializer.java │ │ ├── JoyQueueMapTools.java │ │ └── Serializer.java │ │ ├── session │ │ ├── ClientId.java │ │ ├── Connection.java │ │ ├── ConnectionId.java │ │ ├── Consumer.java │ │ ├── ConsumerId.java │ │ ├── Joint.java │ │ ├── Language.java │ │ ├── Producer.java │ │ ├── ProducerId.java │ │ └── TransactionId.java │ │ └── transport │ │ ├── ChannelTransport.java │ │ ├── RequestBarrier.java │ │ ├── ResponseFuture.java │ │ ├── Transport.java │ │ ├── TransportAttribute.java │ │ ├── TransportClient.java │ │ ├── TransportClientFactory.java │ │ ├── TransportClientSupport.java │ │ ├── TransportHelper.java │ │ ├── TransportServer.java │ │ ├── TransportServerFactory.java │ │ ├── TransportServerSupport.java │ │ ├── TransportState.java │ │ ├── codec │ │ ├── Codec.java │ │ ├── CodecFactory.java │ │ ├── Decoder.java │ │ ├── DefaultDecoder.java │ │ ├── DefaultEncoder.java │ │ ├── Encoder.java │ │ ├── JoyQueueHeader.java │ │ ├── JoyQueueHeaderCodec.java │ │ ├── PayloadCodec.java │ │ ├── PayloadCodecFactory.java │ │ ├── PayloadDecoder.java │ │ ├── PayloadEncoder.java │ │ └── support │ │ │ ├── DefaultCodec.java │ │ │ ├── DefaultCodecFactory.java │ │ │ ├── JoyQueueCodec.java │ │ │ ├── NettyDecoder.java │ │ │ └── NettyEncoder.java │ │ ├── command │ │ ├── Command.java │ │ ├── CommandCallback.java │ │ ├── CommandDispatcher.java │ │ ├── CommandDispatcherFactory.java │ │ ├── Direction.java │ │ ├── Header.java │ │ ├── JoyQueueCommand.java │ │ ├── JoyQueuePayload.java │ │ ├── Ordered.java │ │ ├── Payload.java │ │ ├── Releasable.java │ │ ├── Type.java │ │ ├── Types.java │ │ ├── handler │ │ │ ├── CommandHandler.java │ │ │ ├── CommandHandlerFactory.java │ │ │ ├── ExceptionHandler.java │ │ │ └── filter │ │ │ │ ├── CommandHandlerContext.java │ │ │ │ ├── CommandHandlerFilter.java │ │ │ │ ├── CommandHandlerFilterFactory.java │ │ │ │ └── CommandHandlerInvocation.java │ │ ├── provider │ │ │ └── ExecutorServiceProvider.java │ │ └── support │ │ │ ├── CommandExecuteTask.java │ │ │ ├── CommandHandlerFilterComparator.java │ │ │ ├── DefaultCommandDispatcher.java │ │ │ ├── DefaultCommandDispatcherFactory.java │ │ │ ├── DefaultCommandHandlerFactory.java │ │ │ ├── DefaultCommandHandlerFilterFactory.java │ │ │ ├── RequestHandler.java │ │ │ └── ResponseHandler.java │ │ ├── config │ │ ├── ClientConfig.java │ │ ├── ServerConfig.java │ │ ├── TransportConfig.java │ │ └── TransportConfigSupport.java │ │ ├── exception │ │ └── TransportException.java │ │ ├── handler │ │ └── CommandInvocation.java │ │ ├── session │ │ └── session │ │ │ ├── TransportSession.java │ │ │ ├── TransportSessionManager.java │ │ │ └── config │ │ │ ├── TransportSessionConfig.java │ │ │ └── TransportSessionConfigKey.java │ │ └── support │ │ ├── ChannelTransportServer.java │ │ ├── ChannelTransportServerFactory.java │ │ ├── DefaultChannelTransport.java │ │ ├── DefaultTransportAttribute.java │ │ ├── DefaultTransportClient.java │ │ ├── DefaultTransportClientFactory.java │ │ ├── DefaultTransportServer.java │ │ ├── DefaultTransportServerFactory.java │ │ ├── FailoverChannelTransport.java │ │ ├── FailoverGroupChannelTransport.java │ │ └── FailoverTransportClient.java ├── joyqueue-security │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── joyqueue │ │ └── security │ │ ├── Authentication.java │ │ ├── PasswordEncoder.java │ │ ├── UserDetails.java │ │ └── impl │ │ ├── DefaultAuthentication.java │ │ ├── DefaultPasswordEncoder.java │ │ └── DefaultUserDetail.java ├── joyqueue-toolkit │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── toolkit │ │ │ ├── URL.java │ │ │ ├── UrlAware.java │ │ │ ├── buffer │ │ │ └── RByteBuffer.java │ │ │ ├── concurrent │ │ │ ├── CAtomicLong.java │ │ │ ├── CasLock.java │ │ │ ├── EventBus.java │ │ │ ├── EventFuture.java │ │ │ ├── EventListener.java │ │ │ ├── Locks.java │ │ │ ├── LoopThread.java │ │ │ └── NamedThreadFactory.java │ │ │ ├── config │ │ │ ├── Binder.java │ │ │ ├── BinderListener.java │ │ │ ├── Binders.java │ │ │ ├── BindingBinder.java │ │ │ ├── BooleanBinder.java │ │ │ ├── Context.java │ │ │ ├── ContextKey.java │ │ │ ├── DateBinder.java │ │ │ ├── DoubleBinder.java │ │ │ ├── NumberBinder.java │ │ │ ├── ObjectBinder.java │ │ │ ├── Postman.java │ │ │ ├── PostmanUpdater.java │ │ │ ├── Property.java │ │ │ ├── PropertyDef.java │ │ │ ├── PropertySupplier.java │ │ │ ├── PropertySupplierAware.java │ │ │ ├── StringBinder.java │ │ │ └── annotation │ │ │ │ ├── Binding.java │ │ │ │ ├── BooleanBinding.java │ │ │ │ ├── DateBinding.java │ │ │ │ ├── DoubleBinding.java │ │ │ │ ├── NumberBinding.java │ │ │ │ ├── ObjectBinding.java │ │ │ │ └── StringBinding.java │ │ │ ├── db │ │ │ └── DaoUtil.java │ │ │ ├── delay │ │ │ ├── AbstractDelayedOperation.java │ │ │ ├── DelayedOperation.java │ │ │ ├── DelayedOperationKey.java │ │ │ ├── DelayedOperationManager.java │ │ │ ├── Timer.java │ │ │ ├── TimerTask.java │ │ │ ├── TimerTaskList.java │ │ │ └── TimingWheel.java │ │ │ ├── exception │ │ │ └── Abnormity.java │ │ │ ├── format │ │ │ └── Format.java │ │ │ ├── io │ │ │ ├── Compressor.java │ │ │ ├── Compressors.java │ │ │ ├── Directory.java │ │ │ ├── DoubleCopy.java │ │ │ ├── Files.java │ │ │ ├── Snappy.java │ │ │ ├── Zip.java │ │ │ ├── ZipDeflater.java │ │ │ ├── ZipInflater.java │ │ │ ├── ZipUtil.java │ │ │ ├── Zlib.java │ │ │ └── snappy │ │ │ │ ├── BufferRecycler.java │ │ │ │ ├── CorruptionException.java │ │ │ │ ├── SnappyCompressor.java │ │ │ │ ├── SnappyDecompressor.java │ │ │ │ ├── SnappyFramed.java │ │ │ │ ├── SnappyFramedInputStream.java │ │ │ │ └── SnappyFramedOutputStream.java │ │ │ ├── lang │ │ │ ├── Close.java │ │ │ ├── Getter.java │ │ │ ├── Getters.java │ │ │ ├── LifeCycle.java │ │ │ ├── ListUtil.java │ │ │ ├── Online.java │ │ │ └── Pair.java │ │ │ ├── metric │ │ │ └── Metric.java │ │ │ ├── network │ │ │ ├── IpUtil.java │ │ │ ├── Lan.java │ │ │ ├── Line.java │ │ │ ├── Ping.java │ │ │ ├── Segment.java │ │ │ ├── Topology.java │ │ │ └── http │ │ │ │ └── Get.java │ │ │ ├── os │ │ │ └── Systems.java │ │ │ ├── ref │ │ │ ├── Reference.java │ │ │ └── ReferenceCounter.java │ │ │ ├── reflect │ │ │ ├── Reflect.java │ │ │ └── ReflectException.java │ │ │ ├── retry │ │ │ ├── Retry.java │ │ │ └── RetryPolicy.java │ │ │ ├── security │ │ │ ├── Base64.java │ │ │ ├── Crc32.java │ │ │ ├── Crc32C.java │ │ │ ├── Decryptor.java │ │ │ ├── Des.java │ │ │ ├── Encrypt.java │ │ │ ├── Encryptor.java │ │ │ ├── EscapeUtils.java │ │ │ ├── Hex.java │ │ │ ├── Md5.java │ │ │ ├── Sha.java │ │ │ └── auth │ │ │ │ ├── AuthException.java │ │ │ │ ├── Authentication.java │ │ │ │ ├── PasswordEncoder.java │ │ │ │ └── UserDetails.java │ │ │ ├── serialize │ │ │ └── AbstractSerializer.java │ │ │ ├── service │ │ │ ├── Activity.java │ │ │ ├── Service.java │ │ │ └── ServiceThread.java │ │ │ ├── stat │ │ │ ├── TPStat.java │ │ │ ├── TPStatBuffer.java │ │ │ ├── TPStatDoubleBuffer.java │ │ │ └── TPStatSlice.java │ │ │ ├── time │ │ │ ├── CronExpression.java │ │ │ ├── DateTime.java │ │ │ ├── MicroPeriod.java │ │ │ ├── MilliPeriod.java │ │ │ ├── NanoPeriod.java │ │ │ ├── Period.java │ │ │ └── SystemClock.java │ │ │ ├── util │ │ │ ├── ASMUtils.java │ │ │ ├── BaseDirUtils.java │ │ │ └── ConvertUtils.java │ │ │ ├── validate │ │ │ ├── DoubleRangeValidator.java │ │ │ ├── NotEmptyValidator.java │ │ │ ├── NotNullValidator.java │ │ │ ├── PatternValidator.java │ │ │ ├── RangeValidator.java │ │ │ ├── SizeValidator.java │ │ │ ├── ValidValidator.java │ │ │ ├── ValidateException.java │ │ │ ├── Validator.java │ │ │ ├── Validators.java │ │ │ └── annotation │ │ │ │ ├── DoubleRange.java │ │ │ │ ├── NotEmpty.java │ │ │ │ ├── NotNull.java │ │ │ │ ├── Pattern.java │ │ │ │ ├── Range.java │ │ │ │ ├── Size.java │ │ │ │ └── Valid.java │ │ │ └── vm │ │ │ ├── DefaultGCNotificationParser.java │ │ │ ├── GCEvent.java │ │ │ ├── GCEventListener.java │ │ │ ├── GCEventType.java │ │ │ ├── GarbageCollectorMonitor.java │ │ │ ├── JVMMemorySectionInfo.java │ │ │ ├── JVMMonitorService.java │ │ │ └── MemoryStat.java │ │ └── test │ │ └── java │ │ └── org │ │ └── joyqueue │ │ └── toolkit │ │ ├── concurrent │ │ ├── EventBusTest.java │ │ └── PositionTest.java │ │ ├── config │ │ └── ContextTest.java │ │ ├── io │ │ ├── CompressorTest.java │ │ └── FileTest.java │ │ ├── network │ │ └── IpUtilTest.java │ │ ├── os │ │ └── SystemsTest.java │ │ ├── reflect │ │ └── ReflectTest.java │ │ ├── security │ │ ├── EncryptTest.java │ │ └── HexTest.java │ │ ├── stat │ │ └── TPStatBufferTest.java │ │ ├── time │ │ └── SystemClockTest.java │ │ ├── validate │ │ └── ValidateTest.java │ │ └── vm │ │ └── GCEventTest.java └── pom.xml ├── joyqueue-console ├── joyqueue-data │ ├── joyqueue-data-model │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── model │ │ │ ├── Codeable.java │ │ │ ├── Uniqueable.java │ │ │ ├── domain │ │ │ ├── AppName.java │ │ │ ├── AppUnsubscribedTopic.java │ │ │ ├── Application.java │ │ │ ├── ApplicationToken.java │ │ │ ├── ApplicationUser.java │ │ │ ├── Archive.java │ │ │ ├── Authority.java │ │ │ ├── BaseModel.java │ │ │ ├── Broker.java │ │ │ ├── BrokerClient.java │ │ │ ├── BrokerGroup.java │ │ │ ├── BrokerGroupRelated.java │ │ │ ├── BrokerMonitorInfoWithDC.java │ │ │ ├── BrokerMonitorRecord.java │ │ │ ├── BrokerTopicMonitor.java │ │ │ ├── BrokerTopicMonitorRecord.java │ │ │ ├── Checker.java │ │ │ ├── Client.java │ │ │ ├── Config.java │ │ │ ├── ConnectionMonitorInfoWithIp.java │ │ │ ├── Consumer.java │ │ │ ├── ConsumerConfig.java │ │ │ ├── CoordinatorBroker.java │ │ │ ├── DataCenter.java │ │ │ ├── DurationTime.java │ │ │ ├── EnumItem.java │ │ │ ├── EnumType.java │ │ │ ├── Identifier.java │ │ │ ├── Identity.java │ │ │ ├── LabelBaseModel.java │ │ │ ├── Metric.java │ │ │ ├── MqttProxyClient.java │ │ │ ├── MqttProxyThreadType.java │ │ │ ├── Namespace.java │ │ │ ├── OffsetMode.java │ │ │ ├── OperLog.java │ │ │ ├── PartitionGroupMaster.java │ │ │ ├── PartitionGroupReplica.java │ │ │ ├── PartitionGroupWeight.java │ │ │ ├── PartitionOffset.java │ │ │ ├── Permission.java │ │ │ ├── Producer.java │ │ │ ├── ProducerConfig.java │ │ │ ├── ProducerSendMessage.java │ │ │ ├── ResetOffsetInfo.java │ │ │ ├── Retry.java │ │ │ ├── RetryType.java │ │ │ ├── SimplifiedBrokeMessage.java │ │ │ ├── SlimApplication.java │ │ │ ├── SlimTopic.java │ │ │ ├── Subscribe.java │ │ │ ├── SubscribeType.java │ │ │ ├── SyncMode.java │ │ │ ├── Topic.java │ │ │ ├── TopicMirror.java │ │ │ ├── TopicMsgFilter.java │ │ │ ├── TopicPartitionGroup.java │ │ │ ├── TopicPubSub.java │ │ │ ├── TopicUnsubscribedApplication.java │ │ │ ├── Transition.java │ │ │ ├── UniqueFields.java │ │ │ ├── User.java │ │ │ ├── UserType.java │ │ │ ├── grafana │ │ │ │ ├── GrafanaConfig.java │ │ │ │ ├── GrafanaDashboard.java │ │ │ │ ├── GrafanaMetric.java │ │ │ │ ├── GrafanaMetricGranularity.java │ │ │ │ ├── GrafanaMetricVariable.java │ │ │ │ ├── GrafanaSearch.java │ │ │ │ ├── GrafanaVariable.java │ │ │ │ ├── GrafanaVariableParameter.java │ │ │ │ ├── GrafanaVariableQuery.java │ │ │ │ └── GrafanaVariableResult.java │ │ │ └── nsr │ │ │ │ └── BaseNsrModel.java │ │ │ ├── exception │ │ │ ├── BusinessException.java │ │ │ ├── DataException.java │ │ │ ├── DuplicateKeyException.java │ │ │ ├── NotFoundException.java │ │ │ ├── OptimisticLockException.java │ │ │ ├── ReferenceException.java │ │ │ ├── RepositoryException.java │ │ │ ├── StateException.java │ │ │ └── UniqueException.java │ │ │ └── query │ │ │ ├── QApplication.java │ │ │ ├── QApplicationToken.java │ │ │ ├── QApplicationUser.java │ │ │ ├── QArchive.java │ │ │ ├── QBroker.java │ │ │ ├── QBrokerGroup.java │ │ │ ├── QBrokerGroupRelated.java │ │ │ ├── QConfig.java │ │ │ ├── QConsumer.java │ │ │ ├── QDataCenter.java │ │ │ ├── QIdentity.java │ │ │ ├── QMetric.java │ │ │ ├── QMonitor.java │ │ │ ├── QMqttProxyMonitor.java │ │ │ ├── QNamespace.java │ │ │ ├── QOperLog.java │ │ │ ├── QPartitionGroupMonitor.java │ │ │ ├── QPartitionGroupReplica.java │ │ │ ├── QProducer.java │ │ │ ├── QRetry.java │ │ │ ├── QTopic.java │ │ │ ├── QTopicGroupMaster.java │ │ │ ├── QTopicMsgFilter.java │ │ │ ├── QTopicPartitionGroup.java │ │ │ └── QUser.java │ ├── joyqueue-data-repository │ │ ├── joyqueue-data-repository-api │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── repository │ │ │ │ ├── ApplicationRepository.java │ │ │ │ ├── ApplicationUserRepository.java │ │ │ │ ├── BrokerGroupRelatedRepository.java │ │ │ │ ├── BrokerGroupRepository.java │ │ │ │ ├── MetricRepository.java │ │ │ │ ├── OperLogRepository.java │ │ │ │ ├── PageRepository.java │ │ │ │ ├── Repository.java │ │ │ │ ├── TopicMsgFilterRepository.java │ │ │ │ └── UserRepository.java │ │ ├── joyqueue-data-repository-mybatis │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── joyqueue │ │ │ │ │ └── repository │ │ │ │ │ └── mybatis │ │ │ │ │ ├── handler │ │ │ │ │ ├── EnumItemHandler.java │ │ │ │ │ ├── ListTypeHandler.java │ │ │ │ │ └── MapTypeHandler.java │ │ │ │ │ └── interceptor │ │ │ │ │ ├── PageInterceptor.java │ │ │ │ │ ├── PageResultInterceptor.java │ │ │ │ │ ├── PageStatementInterceptor.java │ │ │ │ │ ├── PaginationInterceptor.java │ │ │ │ │ └── package-info.java │ │ │ │ └── resources │ │ │ │ ├── mapper │ │ │ │ ├── Application.xml │ │ │ │ ├── ApplicationUser.xml │ │ │ │ ├── BrokerGroup.xml │ │ │ │ ├── BrokerGroupRelated.xml │ │ │ │ ├── Metric.xml │ │ │ │ ├── OperLog.xml │ │ │ │ ├── TopicMsgFilter.xml │ │ │ │ └── User.xml │ │ │ │ ├── mybatis-config-mysql.xml │ │ │ │ └── mybatis-config.xml │ │ └── pom.xml │ ├── joyqueue-data-service │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ ├── api │ │ │ ├── Impl │ │ │ │ └── OpenAPIServiceImpl.java │ │ │ └── OpenAPIService.java │ │ │ ├── async │ │ │ ├── BrokerClusterQuery.java │ │ │ ├── BrokerMonitorClusterQuery.java │ │ │ ├── DefaultBrokerInfoFuture.java │ │ │ ├── RetrieveProvider.java │ │ │ └── UpdateProvider.java │ │ │ ├── context │ │ │ └── GlobalApplicationContext.java │ │ │ ├── convert │ │ │ ├── CodeConverter.java │ │ │ ├── Converter.java │ │ │ ├── NsrAppTokenConverter.java │ │ │ ├── NsrBrokerConverter.java │ │ │ ├── NsrConfigConverter.java │ │ │ ├── NsrConsumerConverter.java │ │ │ ├── NsrDataCenterConverter.java │ │ │ ├── NsrNameSpaceConverter.java │ │ │ ├── NsrPartitionGroupConverter.java │ │ │ ├── NsrProducerConverter.java │ │ │ ├── NsrReplicaConverter.java │ │ │ ├── NsrTopicConverter.java │ │ │ └── PartitionGroupConverter.java │ │ │ ├── exception │ │ │ ├── MessageDeserializeException.java │ │ │ ├── ServiceException.java │ │ │ └── ValidationException.java │ │ │ ├── nsr │ │ │ ├── AppTokenNameServerService.java │ │ │ ├── BrokerNameServerService.java │ │ │ ├── ConfigNameServerService.java │ │ │ ├── ConsumerNameServerService.java │ │ │ ├── DataCenterNameServerService.java │ │ │ ├── NameServerBase.java │ │ │ ├── NameSpaceServerService.java │ │ │ ├── NsrService.java │ │ │ ├── NsrServiceProvider.java │ │ │ ├── PartitionGroupServerService.java │ │ │ ├── ProducerNameServerService.java │ │ │ ├── ReplicaServerService.java │ │ │ ├── TopicNameServerService.java │ │ │ └── impl │ │ │ │ ├── AppTokenNameServerServiceImpl.java │ │ │ │ ├── BrokerNameServerServiceImpl.java │ │ │ │ ├── ConfigNameServerServiceImpl.java │ │ │ │ ├── ConsumerNameServerServiceImpl.java │ │ │ │ ├── DataCenterNameServerServiceImpl.java │ │ │ │ ├── NameSpaceServerServiceImpl.java │ │ │ │ ├── PartitionGroupServerServiceImpl.java │ │ │ │ ├── ProducerNameServerServiceImpl.java │ │ │ │ ├── ReplicaServerServiceImpl.java │ │ │ │ └── TopicNameServerServiceImpl.java │ │ │ ├── other │ │ │ ├── HttpRestService.java │ │ │ └── HttpRestServiceImpl.java │ │ │ ├── service │ │ │ ├── ApplicationService.java │ │ │ ├── ApplicationTokenService.java │ │ │ ├── ApplicationUserService.java │ │ │ ├── ArchiveService.java │ │ │ ├── BrokerGroupRelatedService.java │ │ │ ├── BrokerGroupService.java │ │ │ ├── BrokerManageService.java │ │ │ ├── BrokerMessageService.java │ │ │ ├── BrokerMonitorService.java │ │ │ ├── BrokerRestUrlMappingService.java │ │ │ ├── BrokerService.java │ │ │ ├── BrokerTopicMonitorService.java │ │ │ ├── ConfigService.java │ │ │ ├── ConsumeOffsetService.java │ │ │ ├── ConsumerService.java │ │ │ ├── CoordinatorMonitorService.java │ │ │ ├── DataCenterService.java │ │ │ ├── LeaderBrokerMonitorService.java │ │ │ ├── LeaderService.java │ │ │ ├── MessageDeserializer.java │ │ │ ├── MessagePreviewService.java │ │ │ ├── MetricService.java │ │ │ ├── NameServerService.java │ │ │ ├── NamespaceService.java │ │ │ ├── OperLogService.java │ │ │ ├── PageService.java │ │ │ ├── PartitionGroupReplicaService.java │ │ │ ├── ProducerService.java │ │ │ ├── RetryCacheService.java │ │ │ ├── RetryService.java │ │ │ ├── Service.java │ │ │ ├── TopicMsgFilterService.java │ │ │ ├── TopicPartitionGroupService.java │ │ │ ├── TopicService.java │ │ │ ├── UserService.java │ │ │ └── impl │ │ │ │ ├── AbstractBrokerService.java │ │ │ │ ├── ApplicationServiceImpl.java │ │ │ │ ├── ApplicationTokenServiceImpl.java │ │ │ │ ├── ApplicationUserServiceImpl.java │ │ │ │ ├── ArchiveServiceImpl.java │ │ │ │ ├── BrokerGroupRelatedServiceImpl.java │ │ │ │ ├── BrokerGroupServiceImpl.java │ │ │ │ ├── BrokerManageServiceImpl.java │ │ │ │ ├── BrokerMessageServiceImpl.java │ │ │ │ ├── BrokerMonitorServiceImpl.java │ │ │ │ ├── BrokerRestUrlMappingServiceImpl.java │ │ │ │ ├── BrokerServiceImpl.java │ │ │ │ ├── BrokerTopicMonitorServiceImpl.java │ │ │ │ ├── ConfigServiceImpl.java │ │ │ │ ├── ConsumeOffsetServiceImpl.java │ │ │ │ ├── ConsumerServiceImpl.java │ │ │ │ ├── CoordinatorMonitorServiceImpl.java │ │ │ │ ├── DataCenterServiceImpl.java │ │ │ │ ├── GBTextMessageDeserializer.java │ │ │ │ ├── LeaderServiceImpl.java │ │ │ │ ├── MessagePreviewServiceImpl.java │ │ │ │ ├── MetricServiceImpl.java │ │ │ │ ├── NameServerServiceImpl.java │ │ │ │ ├── NamespaceServiceImpl.java │ │ │ │ ├── OperLogServiceImpl.java │ │ │ │ ├── PageServiceSupport.java │ │ │ │ ├── PartitionGroupReplicaServiceImpl.java │ │ │ │ ├── ProducerServiceImpl.java │ │ │ │ ├── RetryServiceImpl.java │ │ │ │ ├── ServiceSupport.java │ │ │ │ ├── TimeLogAspectImpl.java │ │ │ │ ├── TopicMsgFilterServiceImpl.java │ │ │ │ ├── TopicPartitionGroupServiceImpl.java │ │ │ │ ├── TopicServiceImpl.java │ │ │ │ ├── UserServiceImpl.java │ │ │ │ └── Utf8TextMessageDeserializer.java │ │ │ ├── sync │ │ │ ├── ApplicationInfo.java │ │ │ ├── ApplicationSupplier.java │ │ │ ├── SyncService.java │ │ │ ├── SyncServiceImpl.java │ │ │ ├── UserInfo.java │ │ │ └── UserSupplier.java │ │ │ └── util │ │ │ ├── AsyncHttpClient.java │ │ │ ├── EnvironmentUtil.java │ │ │ ├── HttpUtil.java │ │ │ ├── JSONParser.java │ │ │ ├── LocalSession.java │ │ │ ├── NullUtil.java │ │ │ ├── ObjectUtil.java │ │ │ ├── UrlEncoderUtil.java │ │ │ └── serializer │ │ │ ├── BrokerMessageCoder.java │ │ │ └── Serializer.java │ ├── joyqueue-token │ │ ├── joyqueue-token-api │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── token │ │ │ │ └── TokenSupplier.java │ │ ├── joyqueue-token-uuid-starter │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── joyqueue │ │ │ │ │ └── token │ │ │ │ │ └── UuidTokenAutoConfiguration.java │ │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring.factories │ │ ├── joyqueue-token-uuid │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── token │ │ │ │ └── UuidTokenSupplier.java │ │ └── pom.xml │ └── pom.xml ├── joyqueue-message-filter │ ├── joyqueue-message-filter-api │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── msg │ │ │ └── filter │ │ │ ├── FilterResponse.java │ │ │ ├── OutputType.java │ │ │ ├── Plugins.java │ │ │ ├── TopicMsgFilterMatcher.java │ │ │ ├── TopicMsgFilterOutput.java │ │ │ └── support │ │ │ └── TopicMessageFilterSupport.java │ ├── joyqueue-message-filter-s3 │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── msg │ │ │ │ └── filter │ │ │ │ └── s3 │ │ │ │ ├── S3ConfigKey.java │ │ │ │ ├── S3Manager.java │ │ │ │ ├── TopicMsgFilterS3Matcher.java │ │ │ │ └── TopicMsgFilterS3Output.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ ├── org.joyqueue.msg.filter.TopicMsgFilterMatcher │ │ │ └── org.joyqueue.msg.filter.TopicMsgFilterOutput │ └── pom.xml ├── joyqueue-portal │ ├── .babelrc │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .postcssrc.js │ ├── build │ │ ├── build.js │ │ ├── check-versions.js │ │ ├── logo.png │ │ ├── utils.js │ │ ├── vue-loader.conf.js │ │ ├── webpack.base.conf.js │ │ ├── webpack.dev.conf.js │ │ └── webpack.prod.conf.js │ ├── config │ │ ├── dev.env.js │ │ ├── index.js │ │ └── prod.env.js │ ├── index.html │ ├── package.json │ ├── pom.xml │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ ├── 404_images │ │ │ │ ├── 404.png │ │ │ │ └── 404_cloud.png │ │ │ ├── css │ │ │ │ ├── common.css │ │ │ │ ├── dui.css │ │ │ │ ├── iconfont.css │ │ │ │ ├── iconfont.eot │ │ │ │ ├── iconfont.js │ │ │ │ ├── iconfont.svg │ │ │ │ ├── iconfont.ttf │ │ │ │ ├── iconfont.woff │ │ │ │ ├── img │ │ │ │ │ ├── diy │ │ │ │ │ │ ├── 1_close.png │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ └── 9.png │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ └── zTreeStandard.png │ │ │ │ ├── main.css │ │ │ │ ├── reset.css │ │ │ │ └── zTreeStyle.css │ │ │ ├── fonts │ │ │ │ ├── empty.txt │ │ │ │ ├── iconfont.eot │ │ │ │ ├── iconfont.svg │ │ │ │ ├── iconfont.ttf │ │ │ │ └── iconfont.woff │ │ │ ├── images │ │ │ │ ├── joyqueue-logo.png │ │ │ │ ├── lightbg.png │ │ │ │ └── resize.png │ │ │ └── js │ │ │ │ ├── jquery-2.0.3.min.js.js │ │ │ │ └── jquery.ztree.min.js │ │ ├── components │ │ │ ├── autocomplete │ │ │ │ ├── autocomplete-suggestions.vue │ │ │ │ ├── autocomplete.vue │ │ │ │ └── index.js │ │ │ ├── breadcrumb │ │ │ │ ├── breadcrumb-item.vue │ │ │ │ ├── breadcrumb.vue │ │ │ │ └── index.js │ │ │ ├── button │ │ │ │ ├── button-group.vue │ │ │ │ ├── button.vue │ │ │ │ └── index.js │ │ │ ├── checkbox │ │ │ │ ├── checkbox-group.vue │ │ │ │ ├── checkbox.vue │ │ │ │ └── index.js │ │ │ ├── common │ │ │ │ ├── header.vue │ │ │ │ ├── myDialog.vue │ │ │ │ ├── myTable.vue │ │ │ │ └── sideBar.vue │ │ │ ├── date-picker │ │ │ │ ├── basic │ │ │ │ │ ├── date-table.vue │ │ │ │ │ ├── month-table.vue │ │ │ │ │ ├── time-spinner.vue │ │ │ │ │ └── year-table.vue │ │ │ │ ├── index.js │ │ │ │ ├── panel │ │ │ │ │ ├── date-range.vue │ │ │ │ │ ├── date.vue │ │ │ │ │ ├── time-range.vue │ │ │ │ │ ├── time-select.vue │ │ │ │ │ └── time.vue │ │ │ │ ├── picker.vue │ │ │ │ ├── picker │ │ │ │ │ ├── date-picker.js │ │ │ │ │ ├── time-picker.js │ │ │ │ │ └── time-select.js │ │ │ │ └── util │ │ │ │ │ └── index.js │ │ │ ├── dialog │ │ │ │ ├── dialog.vue │ │ │ │ ├── index.js │ │ │ │ └── status-dialog.js │ │ │ ├── dropdown │ │ │ │ ├── dropdown-item.vue │ │ │ │ ├── dropdown-menu.vue │ │ │ │ ├── dropdown.vue │ │ │ │ └── index.js │ │ │ ├── form │ │ │ │ ├── form-item.vue │ │ │ │ ├── form.vue │ │ │ │ └── index.js │ │ │ ├── grid │ │ │ │ ├── col.vue │ │ │ │ ├── index.js │ │ │ │ └── row.vue │ │ │ ├── icon │ │ │ │ ├── icon.vue │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── input │ │ │ │ ├── index.js │ │ │ │ └── input.vue │ │ │ ├── layout │ │ │ │ ├── container.vue │ │ │ │ ├── content.vue │ │ │ │ ├── footer.vue │ │ │ │ ├── header.vue │ │ │ │ ├── index.js │ │ │ │ └── sider.vue │ │ │ ├── loading │ │ │ │ ├── index.js │ │ │ │ ├── loading.js │ │ │ │ └── loading.vue │ │ │ ├── menu │ │ │ │ ├── index.js │ │ │ │ ├── menu-group.vue │ │ │ │ ├── menu-item.vue │ │ │ │ ├── menu.vue │ │ │ │ ├── mixin.js │ │ │ │ └── submenu.vue │ │ │ ├── message │ │ │ │ ├── index.js │ │ │ │ ├── message.js │ │ │ │ └── message.vue │ │ │ ├── notification │ │ │ │ ├── index.js │ │ │ │ ├── notification.js │ │ │ │ └── notification.vue │ │ │ ├── pagination │ │ │ │ ├── index.js │ │ │ │ └── pagination.vue │ │ │ ├── radio │ │ │ │ ├── index.js │ │ │ │ ├── radio-group.vue │ │ │ │ └── radio.vue │ │ │ ├── scrollbar │ │ │ │ ├── bar.js │ │ │ │ ├── index.js │ │ │ │ ├── main.js │ │ │ │ └── util.js │ │ │ ├── select │ │ │ │ ├── dropdown-select.vue │ │ │ │ ├── functional-options.vue │ │ │ │ ├── index.js │ │ │ │ ├── option-group.vue │ │ │ │ ├── option.vue │ │ │ │ ├── select-head.vue │ │ │ │ └── select.vue │ │ │ ├── spin │ │ │ │ ├── index.js │ │ │ │ ├── spin.js │ │ │ │ └── spin.vue │ │ │ ├── step │ │ │ │ ├── index.js │ │ │ │ ├── step.vue │ │ │ │ └── steps.vue │ │ │ ├── switch │ │ │ │ ├── index.js │ │ │ │ └── switch.vue │ │ │ ├── tab-pane │ │ │ │ ├── index.js │ │ │ │ └── tab-pane.vue │ │ │ ├── table │ │ │ │ ├── expand.js │ │ │ │ ├── index.js │ │ │ │ ├── render.js │ │ │ │ └── table.vue │ │ │ ├── tabs │ │ │ │ ├── index.js │ │ │ │ └── tabs.vue │ │ │ ├── tag │ │ │ │ ├── index.js │ │ │ │ └── tag.vue │ │ │ ├── tooltip │ │ │ │ ├── index.js │ │ │ │ └── tooltip.js │ │ │ └── tree │ │ │ │ ├── index.js │ │ │ │ └── src │ │ │ │ ├── model │ │ │ │ ├── node.js │ │ │ │ ├── tree-store.js │ │ │ │ └── util.js │ │ │ │ ├── tree-node.vue │ │ │ │ └── tree.vue │ │ ├── config │ │ │ └── index.js │ │ ├── directives │ │ │ ├── dialog-drag.js │ │ │ ├── dialog-resize.js │ │ │ ├── repeat-click.js │ │ │ └── transfer-dom.js │ │ ├── filter │ │ │ └── index.js │ │ ├── i18n │ │ │ ├── components.json │ │ │ ├── index.js │ │ │ ├── langs.json │ │ │ ├── navs.json │ │ │ └── views.json │ │ ├── locale │ │ │ ├── format.js │ │ │ ├── index.js │ │ │ ├── lang.js │ │ │ └── lang │ │ │ │ ├── en-US.js │ │ │ │ └── zh-CN.js │ │ ├── main.js │ │ ├── mixins │ │ │ ├── assist.js │ │ │ ├── crud.js │ │ │ ├── detail.js │ │ │ ├── emitter.js │ │ │ ├── focus.js │ │ │ ├── form.js │ │ │ ├── link.js │ │ │ ├── locale.js │ │ │ ├── migrating.js │ │ │ ├── scrollbar.js │ │ │ └── submenu.js │ │ ├── router │ │ │ └── index.js │ │ ├── store │ │ │ └── index.js │ │ ├── transitions │ │ │ └── collapse-transition.js │ │ ├── utils │ │ │ ├── apiRequest.js │ │ │ ├── apiUrl.js │ │ │ ├── assist.js │ │ │ ├── calcTextareaHeight.js │ │ │ ├── common.js │ │ │ ├── cookie.js │ │ │ ├── date.js │ │ │ ├── dateTimeUtils.js │ │ │ ├── index.js │ │ │ ├── loading.js │ │ │ ├── popper.js │ │ │ ├── popup │ │ │ │ ├── index.js │ │ │ │ └── popup-manager.js │ │ │ ├── position.js │ │ │ ├── resize-event.js │ │ │ ├── scroll-into-view.js │ │ │ ├── validate.js │ │ │ └── vue-popper.js │ │ └── views │ │ │ ├── 404.vue │ │ │ ├── application │ │ │ ├── appAddForm.vue │ │ │ ├── broker.vue │ │ │ ├── consumer.vue │ │ │ ├── detail.vue │ │ │ ├── index.vue │ │ │ ├── myAppConfig.vue │ │ │ ├── myAppToken.vue │ │ │ ├── myAppUsers.vue │ │ │ ├── producer.vue │ │ │ └── slot │ │ │ │ └── detailSlot.vue │ │ │ ├── monitor │ │ │ ├── consumerBase.vue │ │ │ ├── consumerConfigForm.vue │ │ │ ├── detail │ │ │ │ ├── broker.vue │ │ │ │ ├── clientConnection.vue │ │ │ │ ├── consumerDetail.vue │ │ │ │ ├── coordinatorGroupMember.vue │ │ │ │ ├── detailTable.vue │ │ │ │ ├── offset.vue │ │ │ │ ├── partition.vue │ │ │ │ ├── partitionExpand.vue │ │ │ │ └── producerDetail.vue │ │ │ ├── msgDetail.vue │ │ │ ├── msgPreview.vue │ │ │ ├── producerBase.vue │ │ │ ├── producerConfigForm.vue │ │ │ ├── producerSendMessageForm.vue │ │ │ ├── producerWeightForm.vue │ │ │ ├── rateLimit.vue │ │ │ └── subscribe.vue │ │ │ ├── setting │ │ │ ├── broker.vue │ │ │ ├── brokerConnectionMonitor.vue │ │ │ ├── brokerGroup.vue │ │ │ ├── brokerGroupDetail.vue │ │ │ ├── brokerMonitor.vue │ │ │ ├── brokerPartitionGroupMonitor.vue │ │ │ ├── brokerServerMonitor.vue │ │ │ ├── brokerStoreTreeViewMonitor.vue │ │ │ ├── config.vue │ │ │ ├── configForm.vue │ │ │ ├── dataCenter.vue │ │ │ ├── index.vue │ │ │ ├── metric.vue │ │ │ ├── metricForm.vue │ │ │ ├── mqttBaseMonitor.vue │ │ │ ├── mqttProxyOverview.vue │ │ │ ├── namespace.vue │ │ │ ├── retryMonitor.vue │ │ │ └── userManage.vue │ │ │ ├── tool │ │ │ ├── archive.vue │ │ │ ├── index.vue │ │ │ ├── messageFilter.vue │ │ │ ├── operateHistory.vue │ │ │ ├── preview.vue │ │ │ └── retry.vue │ │ │ └── topic │ │ │ ├── addBroker.vue │ │ │ ├── addBrokerGroup.vue │ │ │ ├── broker.vue │ │ │ ├── brokerMonitor.vue │ │ │ ├── consumer.vue │ │ │ ├── detail.vue │ │ │ ├── groupDetail.vue │ │ │ ├── groupMerge.vue │ │ │ ├── groupNew.vue │ │ │ ├── groupPosition.vue │ │ │ ├── groupScale.vue │ │ │ ├── index.vue │ │ │ ├── partitionGroup.vue │ │ │ ├── positionExpand.vue │ │ │ ├── producer.vue │ │ │ ├── slot │ │ │ └── detailSlot.vue │ │ │ └── topicForm.vue │ └── static │ │ ├── .gitkeep │ │ └── favicon.ico ├── joyqueue-web │ ├── joyqueue-web-application │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── joyqueue │ │ │ │ │ └── application │ │ │ │ │ ├── DefaultNsrServiceProvider.java │ │ │ │ │ ├── H2DBServer.java │ │ │ │ │ ├── H2DBServerAutoConfiguration.java │ │ │ │ │ ├── H2Driver.java │ │ │ │ │ ├── HBaseClientConfig.java │ │ │ │ │ └── WebApplication.java │ │ │ └── resources │ │ │ │ ├── application.properties │ │ │ │ ├── logback.xml │ │ │ │ ├── routing.xml │ │ │ │ └── schema │ │ │ │ └── schema.sql │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── test │ │ │ └── ConfigITTest.java │ ├── joyqueue-web-handler │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── handler │ │ │ │ ├── Constants.java │ │ │ │ ├── annotation │ │ │ │ ├── GenericValue.java │ │ │ │ ├── Operator.java │ │ │ │ └── PageQuery.java │ │ │ │ ├── binder │ │ │ │ ├── GenericValueBinder.java │ │ │ │ ├── OperatorBinder.java │ │ │ │ └── PageQueryBinder.java │ │ │ │ ├── error │ │ │ │ ├── ConfigException.java │ │ │ │ ├── ConfigExceptionSupplier.java │ │ │ │ ├── ErrorCode.java │ │ │ │ ├── HttpStatusExceptionSupplier.java │ │ │ │ ├── IdentifierException.java │ │ │ │ ├── SQLExceptionSupplier.java │ │ │ │ ├── ThrowableSupplier.java │ │ │ │ └── ValidationExceptionSupplier.java │ │ │ │ ├── message │ │ │ │ ├── AuditLogMessage.java │ │ │ │ ├── AuditLogMessageCodec.java │ │ │ │ ├── AuditLogMessageHandler.java │ │ │ │ ├── MessageType.java │ │ │ │ ├── OperLogMessage.java │ │ │ │ ├── OperLogMessageCodec.java │ │ │ │ └── OperLogMessageHandler.java │ │ │ │ ├── render │ │ │ │ └── PropertiesRender.java │ │ │ │ ├── routing │ │ │ │ ├── AdminLoginHandler.java │ │ │ │ ├── GetLoginUserHandler.java │ │ │ │ ├── command │ │ │ │ │ ├── CommandSupport.java │ │ │ │ │ ├── NsrCommandSupport.java │ │ │ │ │ ├── application │ │ │ │ │ │ ├── ApplicationCommand.java │ │ │ │ │ │ ├── ApplicationTokenCommand.java │ │ │ │ │ │ ├── ApplicationUserCommand.java │ │ │ │ │ │ └── SyncApplicationCommand.java │ │ │ │ │ ├── archive │ │ │ │ │ │ └── ArchiveCommand.java │ │ │ │ │ ├── broker │ │ │ │ │ │ ├── BrokerCommand.java │ │ │ │ │ │ └── BrokerGroupCommand.java │ │ │ │ │ ├── chart │ │ │ │ │ │ ├── GrafanaCommand.java │ │ │ │ │ │ └── MetricCommand.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── ConfigCommand.java │ │ │ │ │ │ └── DataCenterCommand.java │ │ │ │ │ ├── log │ │ │ │ │ │ └── OperLogCommand.java │ │ │ │ │ ├── monitor │ │ │ │ │ │ ├── BrokerMonitorCommand.java │ │ │ │ │ │ ├── ConsumeOffsetCommand.java │ │ │ │ │ │ ├── ConsumerCommand.java │ │ │ │ │ │ └── ProducerCommand.java │ │ │ │ │ ├── retry │ │ │ │ │ │ └── RetryCommand.java │ │ │ │ │ ├── topic │ │ │ │ │ │ ├── NamespaceCommand.java │ │ │ │ │ │ ├── PartitionGroupReplicaCommand.java │ │ │ │ │ │ ├── TopicCommand.java │ │ │ │ │ │ ├── TopicMsgFilterCommand.java │ │ │ │ │ │ └── TopicPartitionGroupCommand.java │ │ │ │ │ └── user │ │ │ │ │ │ ├── SyncUserCommand.java │ │ │ │ │ │ └── UserCommand.java │ │ │ │ └── validate │ │ │ │ │ ├── ValidateAdminHandler.java │ │ │ │ │ ├── ValidateAppTokenHandler.java │ │ │ │ │ ├── ValidateAppUserOfApplicationHandler.java │ │ │ │ │ ├── ValidateApplicationHandler.java │ │ │ │ │ ├── ValidateApplicationMemberHandler.java │ │ │ │ │ ├── ValidateApplicationOfHeaderHandler.java │ │ │ │ │ ├── ValidateApplicationOwnerHandler.java │ │ │ │ │ ├── ValidateHandler.java │ │ │ │ │ └── ValidateTokenOfApplicationHandler.java │ │ │ │ └── util │ │ │ │ ├── ExceptionUtils.java │ │ │ │ ├── GenericUtil.java │ │ │ │ ├── GrafanaUtils.java │ │ │ │ ├── PageUtil.java │ │ │ │ └── RetryUtils.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ ├── com.jd.laf.binding.binder.Binder │ │ │ ├── com.jd.laf.web.vertx.Command │ │ │ ├── com.jd.laf.web.vertx.MessageHandler │ │ │ ├── com.jd.laf.web.vertx.RoutingHandler │ │ │ ├── com.jd.laf.web.vertx.message.CustomCodec │ │ │ ├── com.jd.laf.web.vertx.render.Render │ │ │ └── com.jd.laf.web.vertx.response.ErrorSupplier │ ├── joyqueue-web-springboot-starter │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── springboot │ │ │ │ └── starter │ │ │ │ ├── MsgQueryConfiguration.java │ │ │ │ ├── ServiceAutoConfiguration.java │ │ │ │ ├── condition │ │ │ │ └── MsgQueryEnabledCondition.java │ │ │ │ └── properties │ │ │ │ └── MsgQueryConfigurationProperties.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring.factories │ └── pom.xml └── pom.xml ├── joyqueue-distribution ├── joyqueue-distribution-server │ ├── assemble │ │ └── package.xml │ ├── bin │ │ ├── console-consumer.sh │ │ ├── console-producer.sh │ │ ├── election-meta-mgr.sh │ │ ├── h2-start.sh │ │ ├── h2-stop.sh │ │ ├── run-class.sh │ │ ├── server-start-log.sh │ │ ├── server-start-nohup.sh │ │ ├── server-start.sh │ │ ├── server-stop.sh │ │ ├── store-recover.sh │ │ ├── topic.sh │ │ └── windows │ │ │ ├── console-consumer.bat │ │ │ ├── console-producer.bat │ │ │ ├── run-class.bat │ │ │ ├── server-start.bat │ │ │ ├── server-stop.bat │ │ │ └── store-recover.bat │ ├── conf │ │ ├── joyqueue.properties │ │ └── log4j2.xml │ └── pom.xml ├── joyqueue-distribution-web │ ├── assemble │ │ └── package.xml │ ├── bin │ │ ├── start-nohup.sh │ │ ├── start.sh │ │ └── stop.sh │ ├── conf │ │ ├── application.properties │ │ └── logback.xml │ └── pom.xml └── pom.xml ├── joyqueue-openmessaging ├── openmessaging-samples │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── openmessaging │ │ │ └── samples │ │ │ ├── spring │ │ │ ├── ConsumerInterceptor1.java │ │ │ ├── MessageListener1.java │ │ │ ├── ProducerInterceptor1.java │ │ │ └── SpringMain.java │ │ │ └── springboot │ │ │ ├── ConsumerInterceptor1.java │ │ │ ├── MessageListener1.java │ │ │ ├── MessageListener2.java │ │ │ ├── ProducerInterceptor1.java │ │ │ ├── SpringBootMain.java │ │ │ └── TransactionStateCheckListener1.java │ │ └── resources │ │ ├── application.properties │ │ ├── log4j2.xml │ │ └── spring1.xml ├── openmessaging-spring-boot │ ├── openmessaging-spring-boot-autoconfigure │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── io │ │ │ │ └── openmessaging │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ ├── OMSSpringBootConsts.java │ │ │ │ ├── adapter │ │ │ │ ├── BatchMessageListenerReflectAdapter.java │ │ │ │ └── MessageListenerReflectAdapter.java │ │ │ │ ├── annotation │ │ │ │ ├── OMSInterceptor.java │ │ │ │ ├── OMSMessageListener.java │ │ │ │ └── OMSTransactionStateCheckListener.java │ │ │ │ ├── config │ │ │ │ ├── KeyValueConverter.java │ │ │ │ └── OMSProperties.java │ │ │ │ ├── configuration │ │ │ │ └── OMSAutoConfiguration.java │ │ │ │ └── registry │ │ │ │ ├── ConsumerRegistrar.java │ │ │ │ ├── InterceptorRegistrar.java │ │ │ │ └── TransactionStateCheckListenerRegistrar.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring.factories │ ├── openmessaging-spring-boot-starter │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring.provides │ └── pom.xml ├── openmessaging-spring-cloud-stream-binder │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── openmessaging │ │ │ └── spring │ │ │ └── cloud │ │ │ └── stream │ │ │ └── binder │ │ │ ├── OMSMessageChannelBinder.java │ │ │ ├── autoconfigure │ │ │ ├── OMSBinderAutoConfiguration.java │ │ │ └── OMSComponent4BinderAutoConfiguration.java │ │ │ ├── consuming │ │ │ └── OMSListenerBindingContainer.java │ │ │ ├── integration │ │ │ ├── OMSInboundChannelAdapter.java │ │ │ ├── OMSMessageHandler.java │ │ │ └── OMSMessageSource.java │ │ │ ├── properties │ │ │ ├── OMSBinderConfigurationProperties.java │ │ │ ├── OMSBindingProperties.java │ │ │ ├── OMSConsumerProperties.java │ │ │ ├── OMSExtendedBindingProperties.java │ │ │ └── OMSProducerProperties.java │ │ │ ├── provisioning │ │ │ └── OMSTopicProvisioner.java │ │ │ └── utils │ │ │ ├── BinderUtil.java │ │ │ └── MessageUtil.java │ │ └── resources │ │ └── META-INF │ │ ├── spring.binders │ │ └── spring.factories ├── openmessaging-spring │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── openmessaging │ │ │ └── spring │ │ │ ├── OMSSpringConsts.java │ │ │ ├── config │ │ │ ├── AccessPointBeanDefinitionParser.java │ │ │ ├── AttributeBeanDefinitionParser.java │ │ │ ├── ConsumerBeanDefinitionParser.java │ │ │ ├── InterceptorBeanDefinitionParser.java │ │ │ ├── KeyValueAttribute.java │ │ │ ├── OMSNamespaceHandler.java │ │ │ └── ProducerBeanDefinitionParser.java │ │ │ ├── helper │ │ │ └── BeanDefinitionHelper.java │ │ │ └── support │ │ │ ├── AccessPointContainer.java │ │ │ ├── ConsumerContainer.java │ │ │ ├── InterceptorContainer.java │ │ │ └── ProducerContainer.java │ │ └── resources │ │ ├── META-INF │ │ ├── spring.handlers │ │ └── spring.schemas │ │ └── io │ │ └── openmessaging │ │ └── schema │ │ └── oms.xsd └── pom.xml ├── joyqueue-server ├── joyqueue-archive │ ├── joyqueue-archive-api │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── server │ │ │ └── archive │ │ │ └── store │ │ │ ├── api │ │ │ └── ArchiveStore.java │ │ │ └── model │ │ │ ├── AchivePosition.java │ │ │ ├── ConsumeLog.java │ │ │ ├── Query.java │ │ │ └── SendLog.java │ ├── joyqueue-archive-hbase │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── server │ │ │ │ └── archive │ │ │ │ └── store │ │ │ │ ├── HBaseSerializer.java │ │ │ │ ├── HBaseStore.java │ │ │ │ ├── HBaseTopicAppMapping.java │ │ │ │ └── QueryCondition.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.joyqueue.server.archive.store.api.ArchiveStore │ └── pom.xml ├── joyqueue-broker-core │ ├── metadata.dat │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── broker │ │ │ │ ├── BannerPrinter.java │ │ │ │ ├── BrokerContext.java │ │ │ │ ├── BrokerContextAware.java │ │ │ │ ├── BrokerService.java │ │ │ │ ├── Plugins.java │ │ │ │ ├── archive │ │ │ │ ├── ArchiveConfig.java │ │ │ │ ├── ArchiveConfigKey.java │ │ │ │ ├── ArchiveManager.java │ │ │ │ ├── ArchiveSerializer.java │ │ │ │ ├── ArchiveUtils.java │ │ │ │ ├── ConsumeArchiveService.java │ │ │ │ └── ProduceArchiveService.java │ │ │ │ ├── buffer │ │ │ │ ├── ByteBufPool.java │ │ │ │ └── Serializer.java │ │ │ │ ├── cluster │ │ │ │ ├── ClusterManager.java │ │ │ │ ├── ClusterNameService.java │ │ │ │ ├── ClusterNameServiceCache.java │ │ │ │ ├── ClusterNameServiceExecutorService.java │ │ │ │ ├── ClusterNodeManager.java │ │ │ │ ├── config │ │ │ │ │ ├── ClusterConfig.java │ │ │ │ │ └── ClusterConfigKey.java │ │ │ │ ├── entry │ │ │ │ │ ├── ClusterNode.java │ │ │ │ │ ├── ClusterPartitionGroup.java │ │ │ │ │ └── SplittedCluster.java │ │ │ │ ├── event │ │ │ │ │ └── CompensateEvent.java │ │ │ │ └── helper │ │ │ │ │ └── ClusterSplitHelper.java │ │ │ │ ├── config │ │ │ │ ├── BrokerConfig.java │ │ │ │ ├── BrokerStoreConfig.java │ │ │ │ ├── Configuration.java │ │ │ │ ├── ConfigurationManager.java │ │ │ │ ├── Converts.java │ │ │ │ ├── SystemConfigLoader.java │ │ │ │ └── scan │ │ │ │ │ ├── ClassScanner.java │ │ │ │ │ ├── FileScanner.java │ │ │ │ │ ├── JarScanner.java │ │ │ │ │ ├── Scanner.java │ │ │ │ │ └── ScannerExecutor.java │ │ │ │ ├── consumer │ │ │ │ ├── AcknowledgeSupport.java │ │ │ │ ├── CasPartitionManager.java │ │ │ │ ├── ConcurrentConsumer.java │ │ │ │ ├── ConcurrentConsumption.java │ │ │ │ ├── Consume.java │ │ │ │ ├── ConsumeConfig.java │ │ │ │ ├── ConsumeConfigKey.java │ │ │ │ ├── ConsumeManager.java │ │ │ │ ├── DelayHandler.java │ │ │ │ ├── FilterMessageSupport.java │ │ │ │ ├── LegacyPartitionManager.java │ │ │ │ ├── MessageConvertSupport.java │ │ │ │ ├── MessageConverter.java │ │ │ │ ├── PartitionConsumption.java │ │ │ │ ├── PartitionLockInstance.java │ │ │ │ ├── PartitionManager.java │ │ │ │ ├── SlideWindowConcurrentConsumer.java │ │ │ │ ├── converter │ │ │ │ │ ├── AbstractInternalMessageConverter.java │ │ │ │ │ ├── JoyQueueToInternalMessageConverter.java │ │ │ │ │ ├── KafkaToInternalMessageConverter.java │ │ │ │ │ └── kafka │ │ │ │ │ │ ├── KafkaBufferUtils.java │ │ │ │ │ │ ├── KafkaCompressionCodec.java │ │ │ │ │ │ ├── KafkaCompressionCodecFactory.java │ │ │ │ │ │ └── compressor │ │ │ │ │ │ ├── lz4 │ │ │ │ │ │ ├── KafkaLZ4BlockInputStream.java │ │ │ │ │ │ └── KafkaLZ4BlockOutputStream.java │ │ │ │ │ │ └── stream │ │ │ │ │ │ └── ByteBufferInputStream.java │ │ │ │ ├── filter │ │ │ │ │ ├── FilterCallback.java │ │ │ │ │ ├── FilterPipeline.java │ │ │ │ │ ├── FlagFilter.java │ │ │ │ │ └── MessageFilter.java │ │ │ │ ├── model │ │ │ │ │ ├── ConsumePartition.java │ │ │ │ │ ├── OwnerShip.java │ │ │ │ │ └── PullResult.java │ │ │ │ └── position │ │ │ │ │ ├── LocalFileStore.java │ │ │ │ │ ├── PositionConfig.java │ │ │ │ │ ├── PositionManager.java │ │ │ │ │ ├── PositionStore.java │ │ │ │ │ └── model │ │ │ │ │ ├── ConsumeBill.java │ │ │ │ │ └── Position.java │ │ │ │ ├── coordinator │ │ │ │ ├── Coordinator.java │ │ │ │ ├── CoordinatorService.java │ │ │ │ ├── config │ │ │ │ │ ├── CoordinatorConfig.java │ │ │ │ │ └── CoordinatorConfigKey.java │ │ │ │ ├── domain │ │ │ │ │ └── CoordinatorDetail.java │ │ │ │ ├── group │ │ │ │ │ ├── GroupMetadataManager.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── ExpiredGroupMemberMetadata.java │ │ │ │ │ │ ├── GroupMemberMetadata.java │ │ │ │ │ │ └── GroupMetadata.java │ │ │ │ ├── support │ │ │ │ │ ├── CoordinatorInitializer.java │ │ │ │ │ └── CoordinatorResolver.java │ │ │ │ └── transaction │ │ │ │ │ ├── TransactionMetadataManager.java │ │ │ │ │ └── domain │ │ │ │ │ └── TransactionMetadata.java │ │ │ │ ├── election │ │ │ │ ├── DefaultElectionNode.java │ │ │ │ ├── ElectionConfig.java │ │ │ │ ├── ElectionConfigKey.java │ │ │ │ ├── ElectionEvent.java │ │ │ │ ├── ElectionException.java │ │ │ │ ├── ElectionManager.java │ │ │ │ ├── ElectionMetadata.java │ │ │ │ ├── ElectionMetadataManager.java │ │ │ │ ├── ElectionNode.java │ │ │ │ ├── ElectionService.java │ │ │ │ ├── FixLeaderElection.java │ │ │ │ ├── LeaderElection.java │ │ │ │ ├── RaftLeaderElection.java │ │ │ │ ├── TopicPartitionGroup.java │ │ │ │ ├── command │ │ │ │ │ ├── AppendEntriesRequest.java │ │ │ │ │ ├── AppendEntriesResponse.java │ │ │ │ │ ├── ReplicateConsumePosRequest.java │ │ │ │ │ ├── ReplicateConsumePosResponse.java │ │ │ │ │ ├── TimeoutNowRequest.java │ │ │ │ │ ├── TimeoutNowResponse.java │ │ │ │ │ ├── VoteRequest.java │ │ │ │ │ └── VoteResponse.java │ │ │ │ ├── handler │ │ │ │ │ ├── AppendEntriesRequestHandler.java │ │ │ │ │ ├── ReplicateConsumePosRequestHandler.java │ │ │ │ │ ├── TimeoutNowRequestHandler.java │ │ │ │ │ └── VoteRequestHandler.java │ │ │ │ └── network │ │ │ │ │ └── codec │ │ │ │ │ ├── AppendEntriesRequestDecoder.java │ │ │ │ │ ├── AppendEntriesRequestEncoder.java │ │ │ │ │ ├── AppendEntriesResponseDecoder.java │ │ │ │ │ ├── AppendEntriesResponseEncoder.java │ │ │ │ │ ├── ReplicateConsumePosRequestDecoder.java │ │ │ │ │ ├── ReplicateConsumePosRequestEncoder.java │ │ │ │ │ ├── ReplicateConsumePosResponseDecoder.java │ │ │ │ │ ├── ReplicateConsumePosResponseEncoder.java │ │ │ │ │ ├── TimeoutNowRequestDecoder.java │ │ │ │ │ ├── TimeoutNowRequestEncoder.java │ │ │ │ │ ├── TimeoutNowResponseDecoder.java │ │ │ │ │ ├── TimeoutNowResponseEncoder.java │ │ │ │ │ ├── VoteRequestDecoder.java │ │ │ │ │ ├── VoteRequestEncoder.java │ │ │ │ │ ├── VoteResponseDecoder.java │ │ │ │ │ └── VoteResponseEncoder.java │ │ │ │ ├── event │ │ │ │ └── BrokerEventBus.java │ │ │ │ ├── extension │ │ │ │ ├── ExtensionManager.java │ │ │ │ └── ExtensionService.java │ │ │ │ ├── handler │ │ │ │ ├── CreatePartitionGroupHandler.java │ │ │ │ ├── GetPartitionGroupClusterRequestHandler.java │ │ │ │ ├── PartitionGroupLeaderChangeHandler.java │ │ │ │ ├── RemovePartitionGroupHandler.java │ │ │ │ └── UpdatePartitionGroupHandler.java │ │ │ │ ├── helper │ │ │ │ ├── AwareHelper.java │ │ │ │ └── SessionHelper.java │ │ │ │ ├── index │ │ │ │ ├── command │ │ │ │ │ ├── ConsumeIndexQueryRequest.java │ │ │ │ │ ├── ConsumeIndexQueryResponse.java │ │ │ │ │ ├── ConsumeIndexStoreRequest.java │ │ │ │ │ └── ConsumeIndexStoreResponse.java │ │ │ │ ├── handler │ │ │ │ │ ├── ConsumeIndexQueryHandler.java │ │ │ │ │ └── ConsumeIndexStoreHandler.java │ │ │ │ ├── model │ │ │ │ │ ├── IndexAndMetadata.java │ │ │ │ │ └── IndexMetadataAndError.java │ │ │ │ └── network │ │ │ │ │ └── codec │ │ │ │ │ ├── IndexQueryRequestDecoder.java │ │ │ │ │ ├── IndexQueryRequestEncoder.java │ │ │ │ │ ├── IndexQueryResponseDecoder.java │ │ │ │ │ ├── IndexQueryResponseEncoder.java │ │ │ │ │ ├── IndexStoreRequestDecoder.java │ │ │ │ │ ├── IndexStoreRequestEncoder.java │ │ │ │ │ ├── IndexStoreResponseDecoder.java │ │ │ │ │ └── IndexStoreResponseEncoder.java │ │ │ │ ├── limit │ │ │ │ ├── LimitRejectedStrategy.java │ │ │ │ ├── LimitType.java │ │ │ │ ├── RateLimitManager.java │ │ │ │ ├── RateLimiter.java │ │ │ │ ├── config │ │ │ │ │ ├── LimitConfig.java │ │ │ │ │ ├── LimitConfigKey.java │ │ │ │ │ └── LimiterConfig.java │ │ │ │ ├── domain │ │ │ │ │ └── LimitContext.java │ │ │ │ ├── exception │ │ │ │ │ ├── LimitException.java │ │ │ │ │ └── LimitRejectedException.java │ │ │ │ ├── filter │ │ │ │ │ ├── AbstractLimitFilter.java │ │ │ │ │ ├── LimitFilter.java │ │ │ │ │ └── LimitTransport.java │ │ │ │ └── support │ │ │ │ │ ├── AbstractRateLimiterManager.java │ │ │ │ │ ├── BlockLimitRejectedStrategy.java │ │ │ │ │ ├── DefaultRateLimiter.java │ │ │ │ │ ├── DefaultRateLimiterManager.java │ │ │ │ │ ├── DelayLimitRejectedStrategy.java │ │ │ │ │ ├── ExceptionLimitRejectedStrategy.java │ │ │ │ │ ├── NoneLimitRejectedStrategy.java │ │ │ │ │ └── NoneRateLimiter.java │ │ │ │ ├── manage │ │ │ │ ├── BrokerManageService.java │ │ │ │ ├── BrokerManageServiceManager.java │ │ │ │ ├── config │ │ │ │ │ ├── BrokerManageConfig.java │ │ │ │ │ └── BrokerManageConfigKey.java │ │ │ │ ├── converter │ │ │ │ │ └── StoreManageConverter.java │ │ │ │ ├── exception │ │ │ │ │ └── ManageException.java │ │ │ │ ├── exporter │ │ │ │ │ ├── BrokerManageExportServer.java │ │ │ │ │ ├── BrokerManageExporter.java │ │ │ │ │ └── vertx │ │ │ │ │ │ ├── ConvertInvoker.java │ │ │ │ │ │ ├── HandlerInvoker.java │ │ │ │ │ │ ├── RestHandler.java │ │ │ │ │ │ └── RoutingVerticle.java │ │ │ │ ├── service │ │ │ │ │ ├── BrokerManageService.java │ │ │ │ │ ├── ConnectionManageService.java │ │ │ │ │ ├── ConsumerManageService.java │ │ │ │ │ ├── CoordinatorManageService.java │ │ │ │ │ ├── ElectionManageService.java │ │ │ │ │ ├── MessageManageService.java │ │ │ │ │ ├── StoreManageService.java │ │ │ │ │ └── support │ │ │ │ │ │ ├── DefaultBrokerManageService.java │ │ │ │ │ │ ├── DefaultConnectionManageService.java │ │ │ │ │ │ ├── DefaultConsumerManageService.java │ │ │ │ │ │ ├── DefaultCoordinatorManageService.java │ │ │ │ │ │ ├── DefaultElectionManageService.java │ │ │ │ │ │ ├── DefaultMessageManageService.java │ │ │ │ │ │ └── DefaultStoreManageService.java │ │ │ │ └── util │ │ │ │ │ └── ClassUtils.java │ │ │ │ ├── monitor │ │ │ │ ├── BrokerMonitor.java │ │ │ │ ├── BrokerMonitorConsts.java │ │ │ │ ├── BrokerMonitorService.java │ │ │ │ ├── BrokerMonitorSlicer.java │ │ │ │ ├── BrokerStatManager.java │ │ │ │ ├── BrokerStatSaveScheduler.java │ │ │ │ ├── ConsumerMonitor.java │ │ │ │ ├── PendingStat.java │ │ │ │ ├── ProducerMonitor.java │ │ │ │ ├── ReplicationMonitor.java │ │ │ │ ├── SessionManager.java │ │ │ │ ├── SessionMonitor.java │ │ │ │ ├── config │ │ │ │ │ ├── BrokerMonitorConfig.java │ │ │ │ │ └── BrokerMonitorConfigKey.java │ │ │ │ ├── converter │ │ │ │ │ ├── BrokerMonitorConverter.java │ │ │ │ │ ├── BrokerStatConverter.java │ │ │ │ │ ├── Converter.java │ │ │ │ │ └── DefaultConverter.java │ │ │ │ ├── exception │ │ │ │ │ └── MonitorException.java │ │ │ │ ├── metrics │ │ │ │ │ ├── LoadMetric.java │ │ │ │ │ └── Metrics.java │ │ │ │ ├── model │ │ │ │ │ ├── AppStatPo.java │ │ │ │ │ ├── BasePo.java │ │ │ │ │ ├── BrokerStatPo.java │ │ │ │ │ ├── ConsumerStatPo.java │ │ │ │ │ ├── DeQueueStatPo.java │ │ │ │ │ ├── EnQueueStatPo.java │ │ │ │ │ ├── PartitionGroupStatPo.java │ │ │ │ │ ├── PartitionStatPo.java │ │ │ │ │ ├── ProducerStatPo.java │ │ │ │ │ ├── ReplicationStatPo.java │ │ │ │ │ ├── RetryStatPo.java │ │ │ │ │ └── TopicStatPo.java │ │ │ │ ├── service │ │ │ │ │ ├── ArchiveMonitorService.java │ │ │ │ │ ├── BrokerMonitorInternalService.java │ │ │ │ │ ├── BrokerMonitorService.java │ │ │ │ │ ├── ConnectionMonitorService.java │ │ │ │ │ ├── ConsumerMonitorService.java │ │ │ │ │ ├── CoordinatorMonitorService.java │ │ │ │ │ ├── MetadataMonitorService.java │ │ │ │ │ ├── PartitionMonitorService.java │ │ │ │ │ ├── ProducerMonitorService.java │ │ │ │ │ ├── TopicMonitorService.java │ │ │ │ │ └── support │ │ │ │ │ │ ├── BrokerMonitorInfoExtService.java │ │ │ │ │ │ ├── DefaultArchiveMonitorService.java │ │ │ │ │ │ ├── DefaultBrokerMonitorInternalService.java │ │ │ │ │ │ ├── DefaultBrokerMonitorService.java │ │ │ │ │ │ ├── DefaultConnectionMonitorService.java │ │ │ │ │ │ ├── DefaultConsumerMonitorService.java │ │ │ │ │ │ ├── DefaultCoordinatorMonitorService.java │ │ │ │ │ │ ├── DefaultMetadataMonitorService.java │ │ │ │ │ │ ├── DefaultPartitionMonitorService.java │ │ │ │ │ │ ├── DefaultProducerMonitorService.java │ │ │ │ │ │ └── DefaultTopicMonitorService.java │ │ │ │ └── stat │ │ │ │ │ ├── AppStat.java │ │ │ │ │ ├── BrokerStat.java │ │ │ │ │ ├── BrokerStatExt.java │ │ │ │ │ ├── ConnectionStat.java │ │ │ │ │ ├── ConsumerPendingStat.java │ │ │ │ │ ├── ConsumerStat.java │ │ │ │ │ ├── DeQueueStat.java │ │ │ │ │ ├── ElectionEventStat.java │ │ │ │ │ ├── EnQueueStat.java │ │ │ │ │ ├── JVMStat.java │ │ │ │ │ ├── PartitionGroupPendingStat.java │ │ │ │ │ ├── PartitionGroupStat.java │ │ │ │ │ ├── PartitionStat.java │ │ │ │ │ ├── ProducerStat.java │ │ │ │ │ ├── ReplicaNodeStat.java │ │ │ │ │ ├── ReplicationStat.java │ │ │ │ │ ├── RetryStat.java │ │ │ │ │ ├── TopicPendingStat.java │ │ │ │ │ └── TopicStat.java │ │ │ │ ├── network │ │ │ │ ├── BrokerCommandHandler.java │ │ │ │ ├── BrokerCommandHandlerFactory.java │ │ │ │ ├── BrokerServer.java │ │ │ │ ├── backend │ │ │ │ │ ├── BackendServer.java │ │ │ │ │ └── BrokerExceptionHandler.java │ │ │ │ ├── codec │ │ │ │ │ ├── BrokerCodecFactory.java │ │ │ │ │ ├── BrokerPayloadCodec.java │ │ │ │ │ ├── BrokerPayloadCodecRegistrar.java │ │ │ │ │ ├── GetPartitionGroupClusterRequestCodec.java │ │ │ │ │ └── GetPartitionGroupClusterResponseCodec.java │ │ │ │ ├── command │ │ │ │ │ ├── GetPartitionGroupClusterRequest.java │ │ │ │ │ └── GetPartitionGroupClusterResponse.java │ │ │ │ ├── frontend │ │ │ │ │ └── FrontendServer.java │ │ │ │ ├── listener │ │ │ │ │ └── BrokerTransportListener.java │ │ │ │ ├── protocol │ │ │ │ │ ├── MultiProtocolHandlerPipelineFactory.java │ │ │ │ │ ├── MultiProtocolTransportServer.java │ │ │ │ │ ├── MultiProtocolTransportServerFactory.java │ │ │ │ │ ├── ProtocolCommandHandlerFilter.java │ │ │ │ │ ├── ProtocolCommandHandlerFilterFactory.java │ │ │ │ │ ├── ProtocolContext.java │ │ │ │ │ ├── ProtocolHandlerPipelineFactory.java │ │ │ │ │ ├── ProtocolManager.java │ │ │ │ │ ├── ProtocolRejectedExecutionHandler.java │ │ │ │ │ ├── ProtocolResolver.java │ │ │ │ │ └── support │ │ │ │ │ │ ├── CommandHandlerFactoryWrapper.java │ │ │ │ │ │ ├── CommandHandlerWrapper.java │ │ │ │ │ │ ├── DefaultMultiProtocolHandlerPipeline.java │ │ │ │ │ │ ├── DefaultMultiProtocolHandlerPipelineFactory.java │ │ │ │ │ │ ├── DefaultProtocolHandlerPipeline.java │ │ │ │ │ │ ├── DefaultProtocolHandlerPipelineFactory.java │ │ │ │ │ │ ├── ProtocolServerWrapper.java │ │ │ │ │ │ └── ProtocolServiceWrapper.java │ │ │ │ ├── support │ │ │ │ │ ├── BrokerCommandHandlerRegistrar.java │ │ │ │ │ ├── BrokerTransportClientFactory.java │ │ │ │ │ └── BrokerTransportServerFactory.java │ │ │ │ └── traffic │ │ │ │ │ ├── FetchRequestTrafficPayload.java │ │ │ │ │ ├── FetchResponseTrafficPayload.java │ │ │ │ │ ├── ProduceResponseTrafficPayload.java │ │ │ │ │ ├── RequestTrafficPayload.java │ │ │ │ │ ├── ResponseTrafficPayload.java │ │ │ │ │ ├── Traffic.java │ │ │ │ │ ├── TrafficPayload.java │ │ │ │ │ └── TrafficType.java │ │ │ │ ├── polling │ │ │ │ ├── LongPolling.java │ │ │ │ ├── LongPollingCallback.java │ │ │ │ └── LongPollingManager.java │ │ │ │ ├── producer │ │ │ │ ├── Produce.java │ │ │ │ ├── ProduceConfig.java │ │ │ │ ├── ProduceManager.java │ │ │ │ ├── ProducerConfigKey.java │ │ │ │ ├── PutResult.java │ │ │ │ └── transaction │ │ │ │ │ ├── TransactionCleaner.java │ │ │ │ │ ├── TransactionManager.java │ │ │ │ │ ├── TransactionRecover.java │ │ │ │ │ ├── UnCompletedTransactionManager.java │ │ │ │ │ ├── codec │ │ │ │ │ ├── TransactionCommitRequestCodec.java │ │ │ │ │ └── TransactionRollbackRequestCodec.java │ │ │ │ │ ├── command │ │ │ │ │ ├── TransactionCommitRequest.java │ │ │ │ │ └── TransactionRollbackRequest.java │ │ │ │ │ └── handler │ │ │ │ │ ├── TransactionCommitRequestHandler.java │ │ │ │ │ └── TransactionRollbackRequestHandler.java │ │ │ │ ├── replication │ │ │ │ ├── Replica.java │ │ │ │ ├── ReplicaGroup.java │ │ │ │ ├── ReplicationManager.java │ │ │ │ └── ReplicationTransportSession.java │ │ │ │ ├── retry │ │ │ │ ├── BrokerRetryManager.java │ │ │ │ ├── BrokerRetryRateLimiterManager.java │ │ │ │ ├── RetryProbability.java │ │ │ │ └── RetryRateLimiter.java │ │ │ │ ├── security │ │ │ │ └── AppTokenAuthentication.java │ │ │ │ └── store │ │ │ │ ├── AbstractStoreCleaningStrategy.java │ │ │ │ ├── ClusterStoreService.java │ │ │ │ ├── DynamicStoreConfig.java │ │ │ │ ├── FixedSizeStoreCleaningStrategy.java │ │ │ │ ├── GlobalStorageLimitCleaningStrategy.java │ │ │ │ ├── IntervalTimeStoreCleaningStrategy.java │ │ │ │ ├── StoreCleanManager.java │ │ │ │ ├── StoreCleaningStrategy.java │ │ │ │ ├── StoreInitializer.java │ │ │ │ └── StoreManager.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── services │ │ │ │ ├── org.joyqueue.broker.consumer.Consume │ │ │ │ ├── org.joyqueue.broker.consumer.MessageConverter │ │ │ │ ├── org.joyqueue.broker.consumer.filter.MessageFilter │ │ │ │ ├── org.joyqueue.broker.consumer.position.PositionStore │ │ │ │ ├── org.joyqueue.broker.election.ElectionService │ │ │ │ ├── org.joyqueue.broker.limit.LimitRejectedStrategy │ │ │ │ ├── org.joyqueue.broker.network.BrokerCommandHandler │ │ │ │ ├── org.joyqueue.broker.network.codec.BrokerPayloadCodec │ │ │ │ ├── org.joyqueue.broker.network.protocol.ProtocolCommandHandlerFilter │ │ │ │ ├── org.joyqueue.broker.producer.Produce │ │ │ │ ├── org.joyqueue.broker.store.StoreCleaningStrategy │ │ │ │ ├── org.joyqueue.security.Authentication │ │ │ │ ├── org.joyqueue.store.StoreService │ │ │ │ ├── org.joyqueue.toolkit.config.PropertyDef │ │ │ │ └── org.joyqueue.toolkit.config.PropertySupplier │ │ │ ├── joyqueue │ │ │ ├── banner │ │ │ └── version.properties │ │ │ └── manage │ │ │ ├── base_routing.xml │ │ │ └── routing.xml │ │ └── test │ │ └── java │ │ └── org │ │ └── joyqueue │ │ └── broker │ │ ├── archive │ │ ├── ArchiveSerializerTest.java │ │ ├── ConsumeArchiveServiceTest.java │ │ └── store │ │ │ └── hbase │ │ │ ├── HBaseStoreTest.java │ │ │ ├── HbaseSerializerTest.java │ │ │ └── HbaseTopicAppMappingTest.java │ │ ├── buffer │ │ └── SerializerTest.java │ │ ├── cluster │ │ ├── BrokerEventBusStub.java │ │ ├── ClusterManagerTest.java │ │ ├── ClusterNameServiceStub.java │ │ ├── ClusterNameServiceTest.java │ │ ├── NameServiceStub.java │ │ └── StoreServiceStub.java │ │ ├── consumer │ │ ├── AcknowledgeSupportTest.java │ │ ├── ConcurrentConsumptionTest.java │ │ ├── ConsumePositionManagerTest.java │ │ ├── DelayHandlerTest.java │ │ ├── FilterMessageSupportTest.java │ │ ├── FilterMessageSupportTest1.java │ │ ├── PartitionLockInstanceTest.java │ │ ├── PartitionManagerTest.java │ │ ├── filter │ │ │ └── FlagFilterTest.java │ │ └── position │ │ │ ├── LocalFileStoreTest.java │ │ │ ├── PositionConfigTest.java │ │ │ └── PositionManagerTest.java │ │ ├── election │ │ ├── BrokerMonitorStub.java │ │ ├── ClusterManagerStub.java │ │ ├── ConsumeStub.java │ │ ├── ConsumeTask.java │ │ ├── ElectionCommandCodecTest.java │ │ ├── ElectionCommandHandlerRegistrarStub.java │ │ ├── ElectionConfigTest.java │ │ ├── ElectionManagerStub.java │ │ ├── ElectionManagerTest.java │ │ ├── ElectionMetadataManagerTest.java │ │ ├── FixedLeaderElectionTest.java │ │ ├── ProduceTask.java │ │ ├── RaftLeaderElectionTest.java │ │ └── ServerConfigStub.java │ │ ├── handler │ │ └── GetPartitionGroupClusterRequestHandlerTest.java │ │ └── store │ │ ├── GlobalStorageLimitCleaningStrategyTest.java │ │ └── StoreBaseTest.java ├── joyqueue-broker-kafka │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── broker │ │ │ │ └── kafka │ │ │ │ ├── KafkaAcknowledge.java │ │ │ │ ├── KafkaCommandHandler.java │ │ │ │ ├── KafkaCommandType.java │ │ │ │ ├── KafkaConsts.java │ │ │ │ ├── KafkaContext.java │ │ │ │ ├── KafkaContextAware.java │ │ │ │ ├── KafkaErrorCode.java │ │ │ │ ├── command │ │ │ │ ├── AddOffsetsToTxnRequest.java │ │ │ │ ├── AddOffsetsToTxnResponse.java │ │ │ │ ├── AddPartitionsToTxnRequest.java │ │ │ │ ├── AddPartitionsToTxnResponse.java │ │ │ │ ├── ApiVersionsRequest.java │ │ │ │ ├── ApiVersionsResponse.java │ │ │ │ ├── DescribeGroupsRequest.java │ │ │ │ ├── DescribeGroupsResponse.java │ │ │ │ ├── EndTxnRequest.java │ │ │ │ ├── EndTxnResponse.java │ │ │ │ ├── FetchRequest.java │ │ │ │ ├── FetchResponse.java │ │ │ │ ├── FindCoordinatorRequest.java │ │ │ │ ├── FindCoordinatorResponse.java │ │ │ │ ├── HeartbeatRequest.java │ │ │ │ ├── HeartbeatResponse.java │ │ │ │ ├── InitProducerIdRequest.java │ │ │ │ ├── InitProducerIdResponse.java │ │ │ │ ├── JoinGroupRequest.java │ │ │ │ ├── JoinGroupResponse.java │ │ │ │ ├── KafkaRequestOrResponse.java │ │ │ │ ├── LeaveGroupRequest.java │ │ │ │ ├── LeaveGroupResponse.java │ │ │ │ ├── ListOffsetsRequest.java │ │ │ │ ├── ListOffsetsResponse.java │ │ │ │ ├── OffsetCommitRequest.java │ │ │ │ ├── OffsetCommitResponse.java │ │ │ │ ├── OffsetFetchRequest.java │ │ │ │ ├── OffsetFetchResponse.java │ │ │ │ ├── ProduceRequest.java │ │ │ │ ├── ProduceResponse.java │ │ │ │ ├── RawTaggedField.java │ │ │ │ ├── SaslAuthenticateRequest.java │ │ │ │ ├── SaslAuthenticateResponse.java │ │ │ │ ├── SaslHandshakeRequest.java │ │ │ │ ├── SaslHandshakeResponse.java │ │ │ │ ├── SyncGroupAssignment.java │ │ │ │ ├── SyncGroupRequest.java │ │ │ │ ├── SyncGroupResponse.java │ │ │ │ ├── TopicMetadataRequest.java │ │ │ │ ├── TopicMetadataResponse.java │ │ │ │ ├── TxnOffsetCommitRequest.java │ │ │ │ └── TxnOffsetCommitResponse.java │ │ │ │ ├── config │ │ │ │ ├── KafkaConfig.java │ │ │ │ └── KafkaConfigKey.java │ │ │ │ ├── converter │ │ │ │ ├── AbstarctKafkaMessageConverter.java │ │ │ │ ├── CheckResultConverter.java │ │ │ │ └── JoyQueueToKafkaMessageConverter.java │ │ │ │ ├── coordinator │ │ │ │ ├── Coordinator.java │ │ │ │ ├── CoordinatorType.java │ │ │ │ ├── exception │ │ │ │ │ └── CoordinatorException.java │ │ │ │ ├── group │ │ │ │ │ ├── GroupBalanceHandler.java │ │ │ │ │ ├── GroupBalanceManager.java │ │ │ │ │ ├── GroupCoordinator.java │ │ │ │ │ ├── GroupMetadataManager.java │ │ │ │ │ ├── GroupOffsetHandler.java │ │ │ │ │ ├── GroupOffsetManager.java │ │ │ │ │ ├── callback │ │ │ │ │ │ ├── JoinCallback.java │ │ │ │ │ │ ├── LeaveCallback.java │ │ │ │ │ │ └── SyncCallback.java │ │ │ │ │ ├── delay │ │ │ │ │ │ ├── DelayedHeartbeat.java │ │ │ │ │ │ ├── DelayedInitialJoin.java │ │ │ │ │ │ └── DelayedJoin.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── GroupDescribe.java │ │ │ │ │ │ ├── GroupJoinGroupResult.java │ │ │ │ │ │ ├── GroupMemberMetadata.java │ │ │ │ │ │ ├── GroupMetadata.java │ │ │ │ │ │ ├── GroupState.java │ │ │ │ │ │ └── GroupTopicPartition.java │ │ │ │ └── transaction │ │ │ │ │ ├── ProducerIdManager.java │ │ │ │ │ ├── ProducerSequenceManager.java │ │ │ │ │ ├── TransactionCoordinator.java │ │ │ │ │ ├── TransactionHandler.java │ │ │ │ │ ├── TransactionIdManager.java │ │ │ │ │ ├── TransactionMetadataManager.java │ │ │ │ │ ├── TransactionOffsetHandler.java │ │ │ │ │ ├── completion │ │ │ │ │ ├── TransactionCompletionHandler.java │ │ │ │ │ ├── TransactionCompletionScheduler.java │ │ │ │ │ ├── TransactionCompletionThread.java │ │ │ │ │ └── TransactionSegmentCompletionHandler.java │ │ │ │ │ ├── domain │ │ │ │ │ ├── TransactionDomain.java │ │ │ │ │ ├── TransactionMarker.java │ │ │ │ │ ├── TransactionMetadata.java │ │ │ │ │ ├── TransactionOffset.java │ │ │ │ │ ├── TransactionPrepare.java │ │ │ │ │ ├── TransactionState.java │ │ │ │ │ └── UnCompletedTransactionMetadata.java │ │ │ │ │ ├── exception │ │ │ │ │ └── TransactionException.java │ │ │ │ │ ├── helper │ │ │ │ │ ├── TransactionHelper.java │ │ │ │ │ └── TransactionSerializer.java │ │ │ │ │ ├── log │ │ │ │ │ ├── TransactionLog.java │ │ │ │ │ └── TransactionLogSegment.java │ │ │ │ │ └── synchronizer │ │ │ │ │ ├── TransactionAbortSynchronizer.java │ │ │ │ │ ├── TransactionCommitSynchronizer.java │ │ │ │ │ └── TransactionSynchronizer.java │ │ │ │ ├── exception │ │ │ │ └── KafkaException.java │ │ │ │ ├── handler │ │ │ │ ├── AbstractKafkaCommandHandler.java │ │ │ │ ├── AddOffsetsToTxnRequestHandler.java │ │ │ │ ├── AddPartitionsToTxnRequestHandler.java │ │ │ │ ├── ApiVersionsRequestHandler.java │ │ │ │ ├── DescribeGroupRequestHandler.java │ │ │ │ ├── EndTxnRequestHandler.java │ │ │ │ ├── FetchRequestHandler.java │ │ │ │ ├── FindCoordinatorRequestHandler.java │ │ │ │ ├── HeartbeatRequestHandler.java │ │ │ │ ├── InitProducerIdRequestHandler.java │ │ │ │ ├── JoinGroupRequestHandler.java │ │ │ │ ├── LeaveGroupRequestHandler.java │ │ │ │ ├── ListOffsetsRequestHandler.java │ │ │ │ ├── OffsetCommitRequestHandler.java │ │ │ │ ├── OffsetFetchRequestHandler.java │ │ │ │ ├── ProduceHandler.java │ │ │ │ ├── ProduceRequestHandler.java │ │ │ │ ├── SaslAuthenticateHandler.java │ │ │ │ ├── SaslHandshakeHandler.java │ │ │ │ ├── SyncGroupRequestHandler.java │ │ │ │ ├── TopicMetadataRequestHandler.java │ │ │ │ ├── TransactionProduceHandler.java │ │ │ │ └── TxnOffsetCommitRequestHandler.java │ │ │ │ ├── helper │ │ │ │ └── KafkaClientHelper.java │ │ │ │ ├── manage │ │ │ │ ├── KafkaGroupManageService.java │ │ │ │ ├── KafkaManageService.java │ │ │ │ ├── KafkaManageServiceFactory.java │ │ │ │ ├── KafkaMonitorService.java │ │ │ │ └── support │ │ │ │ │ ├── DefaultKafkaGroupManageService.java │ │ │ │ │ ├── DefaultKafkaManageService.java │ │ │ │ │ └── DefaultKafkaMonitorService.java │ │ │ │ ├── message │ │ │ │ ├── KafkaBrokerMessage.java │ │ │ │ ├── KafkaMessageSerializer.java │ │ │ │ ├── compressor │ │ │ │ │ ├── KafkaCompressionCodec.java │ │ │ │ │ ├── KafkaCompressionCodecFactory.java │ │ │ │ │ ├── lz4 │ │ │ │ │ │ ├── BufferSupplier.java │ │ │ │ │ │ ├── KafkaLZ4BlockInputStream.java │ │ │ │ │ │ └── KafkaLZ4BlockOutputStream.java │ │ │ │ │ └── stream │ │ │ │ │ │ └── ByteBufferInputStream.java │ │ │ │ ├── converter │ │ │ │ │ └── KafkaMessageConverter.java │ │ │ │ ├── exception │ │ │ │ │ └── UnknownCodecException.java │ │ │ │ └── serializer │ │ │ │ │ ├── AbstractKafkaMessageSerializer.java │ │ │ │ │ ├── KafkaMessageV0Serializer.java │ │ │ │ │ ├── KafkaMessageV1Serializer.java │ │ │ │ │ ├── KafkaMessageV2Serializer.java │ │ │ │ │ └── KafkaSyncGroupAssignmentSerializer.java │ │ │ │ ├── model │ │ │ │ ├── ApiVersion.java │ │ │ │ ├── IsolationLevel.java │ │ │ │ ├── KafkaBroker.java │ │ │ │ ├── KafkaPartitionMetadata.java │ │ │ │ ├── KafkaTopicMetadata.java │ │ │ │ ├── OffsetAndMetadata.java │ │ │ │ ├── OffsetMetadataAndError.java │ │ │ │ ├── PartitionMetadataAndError.java │ │ │ │ ├── ProducePartitionGroupRequest.java │ │ │ │ └── TopicAndPartition.java │ │ │ │ ├── network │ │ │ │ ├── KafkaHeader.java │ │ │ │ ├── KafkaPayloadCodec.java │ │ │ │ ├── codec │ │ │ │ │ ├── AddOffsetsToTxnCodec.java │ │ │ │ │ ├── AddPartitionsToTxnCodec.java │ │ │ │ │ ├── ApiVersionsCodec.java │ │ │ │ │ ├── DescribeGroupsCodec.java │ │ │ │ │ ├── EndTxnCodec.java │ │ │ │ │ ├── FetchCodec.java │ │ │ │ │ ├── FindCoordinatorCodec.java │ │ │ │ │ ├── HeartbeatCodec.java │ │ │ │ │ ├── InitProducerIdCodec.java │ │ │ │ │ ├── JoinGroupCodec.java │ │ │ │ │ ├── LeaveGroupCodec.java │ │ │ │ │ ├── ListOffsetsCodec.java │ │ │ │ │ ├── OffsetCommitCodec.java │ │ │ │ │ ├── OffsetFetchCodec.java │ │ │ │ │ ├── ProduceCodec.java │ │ │ │ │ ├── SaslAuthenticateCodec.java │ │ │ │ │ ├── SaslHandshakeCodec.java │ │ │ │ │ ├── SyncGroupCodec.java │ │ │ │ │ ├── TopicMetadataCodec.java │ │ │ │ │ └── TxnOffsetCommitCodec.java │ │ │ │ ├── helper │ │ │ │ │ ├── KafkaProtocolHelper.java │ │ │ │ │ └── KafkaSessionHelper.java │ │ │ │ └── protocol │ │ │ │ │ ├── KafkaCodecFactory.java │ │ │ │ │ ├── KafkaCommandHandlerFactory.java │ │ │ │ │ ├── KafkaDecoder.java │ │ │ │ │ ├── KafkaEncoder.java │ │ │ │ │ ├── KafkaExceptionHandler.java │ │ │ │ │ ├── KafkaHeaderCodec.java │ │ │ │ │ └── KafkaProtocol.java │ │ │ │ ├── session │ │ │ │ ├── KafkaChannelTransport.java │ │ │ │ ├── KafkaConnectionHandler.java │ │ │ │ ├── KafkaConnectionManager.java │ │ │ │ └── KafkaTransportHandler.java │ │ │ │ └── util │ │ │ │ ├── KafkaBufferUtils.java │ │ │ │ └── PureJavaCrc32C.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── services │ │ │ │ ├── org.joyqueue.broker.consumer.MessageConverter │ │ │ │ ├── org.joyqueue.broker.kafka.KafkaCommandHandler │ │ │ │ ├── org.joyqueue.broker.kafka.network.KafkaPayloadCodec │ │ │ │ ├── org.joyqueue.network.protocol.ProtocolService │ │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ │ │ └── manage │ │ │ └── routing.xml │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── joyqueue │ │ │ └── broker │ │ │ └── kafka │ │ │ ├── KafkaClientHelperTest.java │ │ │ ├── KafkaConsumeTest.java │ │ │ ├── KafkaProduceTest.java │ │ │ ├── SimpleKafkaConsumer.java │ │ │ ├── SimpleKafkaProducer.java │ │ │ ├── TransactionKafkaProducer.java │ │ │ ├── conf │ │ │ └── KafkaConfigs.java │ │ │ ├── consumer │ │ │ └── Consumer.java │ │ │ └── producer │ │ │ └── Producer.java │ │ └── resources │ │ └── log4j2.xml ├── joyqueue-broker-monitor-pth │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── joyqueue │ │ │ └── broker │ │ │ └── monitor │ │ │ └── convert │ │ │ └── PrometheusConvert.java │ │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.joyqueue.broker.monitor.converter.Converter ├── joyqueue-broker-mqtt │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── broker │ │ │ │ └── mqtt │ │ │ │ ├── MqttConsts.java │ │ │ │ ├── cluster │ │ │ │ ├── MqttConnectionManager.java │ │ │ │ ├── MqttConsumerManager.java │ │ │ │ ├── MqttProducerManager.java │ │ │ │ ├── MqttSessionManager.java │ │ │ │ └── MqttSubscriptionManager.java │ │ │ │ ├── command │ │ │ │ └── MqttHandlerFactory.java │ │ │ │ ├── config │ │ │ │ ├── MqttConfig.java │ │ │ │ ├── MqttConfigKey.java │ │ │ │ └── MqttContext.java │ │ │ │ ├── connection │ │ │ │ └── MqttConnection.java │ │ │ │ ├── handler │ │ │ │ ├── ConnectAckHandler.java │ │ │ │ ├── ConnectHandler.java │ │ │ │ ├── DisconnectHandler.java │ │ │ │ ├── ExecutorsProvider.java │ │ │ │ ├── Handler.java │ │ │ │ ├── HandlerExecutor.java │ │ │ │ ├── MqttHandlerDispatcher.java │ │ │ │ ├── MqttProtocolHandler.java │ │ │ │ ├── PingReqHandler.java │ │ │ │ ├── PingRespHandler.java │ │ │ │ ├── PublishAckHandler.java │ │ │ │ ├── PublishCompHandler.java │ │ │ │ ├── PublishHandler.java │ │ │ │ ├── PublishRecHandler.java │ │ │ │ ├── PublishRelHandler.java │ │ │ │ ├── SubscribeHandler.java │ │ │ │ └── UnSubscribeHandler.java │ │ │ │ ├── message │ │ │ │ ├── MqttStoredMessage.java │ │ │ │ └── WillMessage.java │ │ │ │ ├── network │ │ │ │ ├── AbstractMqttProtocolPipeline.java │ │ │ │ ├── MqttOverWebsocketProtocolHandlerPipeline.java │ │ │ │ └── MqttProtocolHandlerPipeline.java │ │ │ │ ├── protocol │ │ │ │ ├── MqttHandlerRegister.java │ │ │ │ ├── MqttOverWebsocketProtocol.java │ │ │ │ └── MqttProtocol.java │ │ │ │ ├── publish │ │ │ │ └── MessagePublisher.java │ │ │ │ ├── session │ │ │ │ └── MqttSession.java │ │ │ │ ├── subscriptions │ │ │ │ ├── MqttSubscription.java │ │ │ │ ├── Token.java │ │ │ │ └── TopicFilter.java │ │ │ │ ├── transport │ │ │ │ └── MqttCommandInvocation.java │ │ │ │ └── util │ │ │ │ ├── ExecutorServiceFactory.java │ │ │ │ ├── MqttMessageSerializer.java │ │ │ │ ├── NettyAttrManager.java │ │ │ │ ├── PollSelector.java │ │ │ │ └── Selector.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ ├── org.joyqueue.broker.mqtt.handler.Handler │ │ │ ├── org.joyqueue.network.protocol.ProtocolService │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── joyqueue │ │ │ └── broker │ │ │ └── mqtt │ │ │ └── test │ │ │ └── MqttClientPahoTest.java │ │ └── resources │ │ └── log4j2.xml ├── joyqueue-broker-protocol │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── broker │ │ │ │ └── protocol │ │ │ │ ├── JoyQueueCommandHandler.java │ │ │ │ ├── JoyQueueConsts.java │ │ │ │ ├── JoyQueueContext.java │ │ │ │ ├── JoyQueueContextAware.java │ │ │ │ ├── command │ │ │ │ ├── FetchPartitionMessageRequest.java │ │ │ │ ├── FetchPartitionMessageResponse.java │ │ │ │ ├── FetchTopicMessageRequest.java │ │ │ │ ├── FetchTopicMessageResponse.java │ │ │ │ └── ProduceMessageResponse.java │ │ │ │ ├── config │ │ │ │ ├── JoyQueueConfig.java │ │ │ │ └── JoyQueueConfigKey.java │ │ │ │ ├── converter │ │ │ │ ├── BrokerNodeConverter.java │ │ │ │ ├── CheckResultConverter.java │ │ │ │ └── PolicyConverter.java │ │ │ │ ├── coordinator │ │ │ │ ├── Coordinator.java │ │ │ │ ├── GroupMemberTimeoutCallback.java │ │ │ │ ├── GroupMetadataManager.java │ │ │ │ ├── assignment │ │ │ │ │ ├── PartitionAssignmentHandler.java │ │ │ │ │ ├── PartitionAssignor.java │ │ │ │ │ ├── PartitionAssignorResolver.java │ │ │ │ │ ├── PartitionAssignorType.java │ │ │ │ │ ├── converter │ │ │ │ │ │ └── PartitionAssignmentConverter.java │ │ │ │ │ ├── delay │ │ │ │ │ │ └── MemberTimeoutDelayedOperation.java │ │ │ │ │ ├── domain │ │ │ │ │ │ ├── PartitionAssignmentMetadata.java │ │ │ │ │ │ ├── PartitionGroupAssignmentMetadata.java │ │ │ │ │ │ └── TopicPartitionGroupAssignmentMetadata.java │ │ │ │ │ └── support │ │ │ │ │ │ ├── NonePartitionAssignor.java │ │ │ │ │ │ └── PartitionGroupBalancePartitionAssignor.java │ │ │ │ └── domain │ │ │ │ │ ├── GroupMemberMetadata.java │ │ │ │ │ ├── GroupMetadata.java │ │ │ │ │ └── PartitionAssignment.java │ │ │ │ ├── exception │ │ │ │ └── JoyQueueException.java │ │ │ │ ├── handler │ │ │ │ ├── AddConnectionRequestHandler.java │ │ │ │ ├── AddConsumerRequestHandler.java │ │ │ │ ├── AddProducerRequestHandler.java │ │ │ │ ├── CommitAckRequestHandler.java │ │ │ │ ├── CommitIndexRequestHandler.java │ │ │ │ ├── FetchAssignedPartitionRequestHandler.java │ │ │ │ ├── FetchClusterRequestHandler.java │ │ │ │ ├── FetchHealthRequestHandler.java │ │ │ │ ├── FetchIndexRequestHandler.java │ │ │ │ ├── FetchPartitionMessageRequestHandler.java │ │ │ │ ├── FetchProduceFeedbackRequestHandler.java │ │ │ │ ├── FetchTopicMessageLongPollCallback.java │ │ │ │ ├── FetchTopicMessageRequestHandler.java │ │ │ │ ├── FindCoordinatorRequestHandler.java │ │ │ │ ├── HeartbeatRequestHandler.java │ │ │ │ ├── ProduceMessageCommitRequestHandler.java │ │ │ │ ├── ProduceMessagePrepareRequestHandler.java │ │ │ │ ├── ProduceMessageRequestHandler.java │ │ │ │ ├── ProduceMessageRollbackRequestHandler.java │ │ │ │ ├── RemoveConnectionRequestHandler.java │ │ │ │ ├── RemoveConsumerRequestHandler.java │ │ │ │ ├── RemoveProducerRequestHandler.java │ │ │ │ └── mqtt │ │ │ │ │ ├── AuthorizeHandler.java │ │ │ │ │ ├── GetTopicsHandler.java │ │ │ │ │ ├── SubscribeHandler.java │ │ │ │ │ └── UnSubscribeHandler.java │ │ │ │ └── network │ │ │ │ ├── JoyQueueCodecFactory.java │ │ │ │ ├── JoyQueueCommandHandlerFactory.java │ │ │ │ ├── JoyQueueExceptionHandler.java │ │ │ │ ├── JoyQueueProtocol.java │ │ │ │ ├── codec │ │ │ │ ├── FetchPartitionMessageRequestCodec.java │ │ │ │ ├── FetchTopicMessageRequestCodec.java │ │ │ │ ├── JoyQueueCodec.java │ │ │ │ ├── JoyQueueCodecFactory.java │ │ │ │ ├── JoyQueueDecoder.java │ │ │ │ ├── JoyQueueEncoder.java │ │ │ │ └── JoyQueuePayloadCodec.java │ │ │ │ └── helper │ │ │ │ └── JoyQueueProtocolHelper.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ ├── org.joyqueue.broker.protocol.JoyQueueCommandHandler │ │ │ ├── org.joyqueue.broker.protocol.coordinator.assignment.PartitionAssignor │ │ │ ├── org.joyqueue.broker.protocol.network.codec.JoyQueuePayloadCodec │ │ │ ├── org.joyqueue.network.protocol.ProtocolService │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ │ └── test │ │ └── resources │ │ └── log4j2.xml ├── joyqueue-nsr │ ├── joyqueue-nsr-admin │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── assemble │ │ │ │ └── bin.xml │ │ │ ├── bin │ │ │ │ ├── app.sh │ │ │ │ ├── broker.sh │ │ │ │ └── topic.sh │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── nsr │ │ │ │ ├── Admin.java │ │ │ │ ├── AdminConfig.java │ │ │ │ ├── CommandArgs.java │ │ │ │ ├── NsrAdmin.java │ │ │ │ ├── admin │ │ │ │ ├── AbstractAdmin.java │ │ │ │ ├── AdminClient.java │ │ │ │ ├── AppAdmin.java │ │ │ │ ├── BrokerAdmin.java │ │ │ │ └── TopicAdmin.java │ │ │ │ └── utils │ │ │ │ ├── AsyncHttpClient.java │ │ │ │ ├── HostProvider.java │ │ │ │ └── RoundRobinHostProvider.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── nsr │ │ │ └── admin │ │ │ ├── AdminClientTest.java │ │ │ └── NamingTest.java │ ├── joyqueue-nsr-core │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── joyqueue │ │ │ │ │ └── nsr │ │ │ │ │ ├── InternalServiceProvider.java │ │ │ │ │ ├── ManageServer.java │ │ │ │ │ ├── MetaManager.java │ │ │ │ │ ├── MetadataSynchronizer.java │ │ │ │ │ ├── NameService.java │ │ │ │ │ ├── NameServiceAware.java │ │ │ │ │ ├── NsrPlugins.java │ │ │ │ │ ├── ServiceProvider.java │ │ │ │ │ ├── config │ │ │ │ │ ├── MessengerConfig.java │ │ │ │ │ ├── MessengerConfigKey.java │ │ │ │ │ ├── NameServerConfig.java │ │ │ │ │ ├── NameServerConfigKey.java │ │ │ │ │ ├── NameServiceConfig.java │ │ │ │ │ └── NameServiceConfigKey.java │ │ │ │ │ ├── event │ │ │ │ │ ├── AddBrokerEvent.java │ │ │ │ │ ├── AddConfigEvent.java │ │ │ │ │ ├── AddConsumerEvent.java │ │ │ │ │ ├── AddDataCenterEvent.java │ │ │ │ │ ├── AddPartitionGroupEvent.java │ │ │ │ │ ├── AddProducerEvent.java │ │ │ │ │ ├── AddTopicEvent.java │ │ │ │ │ ├── CompensateEvent.java │ │ │ │ │ ├── LeaderChangeEvent.java │ │ │ │ │ ├── RemoveBrokerEvent.java │ │ │ │ │ ├── RemoveConfigEvent.java │ │ │ │ │ ├── RemoveConsumerEvent.java │ │ │ │ │ ├── RemoveDataCenterEvent.java │ │ │ │ │ ├── RemovePartitionGroupEvent.java │ │ │ │ │ ├── RemoveProducerEvent.java │ │ │ │ │ ├── RemoveTopicEvent.java │ │ │ │ │ ├── UpdateBrokerEvent.java │ │ │ │ │ ├── UpdateConfigEvent.java │ │ │ │ │ ├── UpdateConsumerEvent.java │ │ │ │ │ ├── UpdateDataCenterEvent.java │ │ │ │ │ ├── UpdatePartitionGroupEvent.java │ │ │ │ │ ├── UpdateProducerEvent.java │ │ │ │ │ └── UpdateTopicEvent.java │ │ │ │ │ ├── exception │ │ │ │ │ ├── MessengerException.java │ │ │ │ │ └── NsrException.java │ │ │ │ │ ├── message │ │ │ │ │ ├── MessageListener.java │ │ │ │ │ ├── Messenger.java │ │ │ │ │ └── support │ │ │ │ │ │ ├── DefaultMessenger.java │ │ │ │ │ │ ├── network │ │ │ │ │ │ ├── codec │ │ │ │ │ │ │ ├── MessengerHeartbeatRequestCodec.java │ │ │ │ │ │ │ └── MessengerPublishRequestCodec.java │ │ │ │ │ │ ├── command │ │ │ │ │ │ │ ├── MessengerHeartbeatRequest.java │ │ │ │ │ │ │ └── MessengerPublishRequest.java │ │ │ │ │ │ ├── handler │ │ │ │ │ │ │ ├── MessengerHeartbeatRequestHandler.java │ │ │ │ │ │ │ └── MessengerPublishRequestHandler.java │ │ │ │ │ │ └── transport │ │ │ │ │ │ │ ├── MessengerTransportClientFactory.java │ │ │ │ │ │ │ └── MessengerTransportServerFactory.java │ │ │ │ │ │ └── session │ │ │ │ │ │ ├── MessengerSession.java │ │ │ │ │ │ ├── MessengerSessionHeartbeatThread.java │ │ │ │ │ │ └── MessengerSessionManager.java │ │ │ │ │ ├── model │ │ │ │ │ ├── AppTokenQuery.java │ │ │ │ │ ├── BrokerQuery.java │ │ │ │ │ ├── ConfigQuery.java │ │ │ │ │ ├── ConsumerQuery.java │ │ │ │ │ ├── DataCenterQuery.java │ │ │ │ │ ├── NamespaceQuery.java │ │ │ │ │ ├── PartitionGroupQuery.java │ │ │ │ │ ├── ProducerQuery.java │ │ │ │ │ ├── ReplicaQuery.java │ │ │ │ │ └── TopicQuery.java │ │ │ │ │ ├── nameservice │ │ │ │ │ ├── AllMetadataCache.java │ │ │ │ │ ├── CompensateMetadataThread.java │ │ │ │ │ ├── CompensatedNameService.java │ │ │ │ │ ├── MetadataCacheDoubleCopy.java │ │ │ │ │ ├── MetadataCacheEventListener.java │ │ │ │ │ ├── MetadataCacheManager.java │ │ │ │ │ ├── MetadataCompensator.java │ │ │ │ │ ├── MetadataValidator.java │ │ │ │ │ ├── NameServerInternal.java │ │ │ │ │ ├── NameServiceWrapper.java │ │ │ │ │ ├── ThinNameServer.java │ │ │ │ │ └── ThinNameService.java │ │ │ │ │ ├── network │ │ │ │ │ ├── NsrCodecFactory.java │ │ │ │ │ ├── NsrCommandHandler.java │ │ │ │ │ ├── NsrCommandHandlerFactory.java │ │ │ │ │ ├── NsrExceptionHandler.java │ │ │ │ │ ├── NsrPayloadCodec.java │ │ │ │ │ ├── NsrTransportClientFactory.java │ │ │ │ │ ├── NsrTransportServerFactory.java │ │ │ │ │ ├── codec │ │ │ │ │ │ ├── AddTopicCodec.java │ │ │ │ │ │ ├── ConnectionCodec.java │ │ │ │ │ │ ├── GetAllBrokersAckCodec.java │ │ │ │ │ │ ├── GetAllConfigsAckCodec.java │ │ │ │ │ │ ├── GetAllMetadataRequestCodec.java │ │ │ │ │ │ ├── GetAllMetadataResponseCodec.java │ │ │ │ │ │ ├── GetAllTopicsAckCodec.java │ │ │ │ │ │ ├── GetAppTokenAckCodec.java │ │ │ │ │ │ ├── GetAppTokenCodec.java │ │ │ │ │ │ ├── GetBrokerAckCodec.java │ │ │ │ │ │ ├── GetBrokerByRetryTypeAckCodec.java │ │ │ │ │ │ ├── GetBrokerByRetryTypeCodec.java │ │ │ │ │ │ ├── GetBrokerCodec.java │ │ │ │ │ │ ├── GetConfigAckCodec.java │ │ │ │ │ │ ├── GetConfigCodec.java │ │ │ │ │ │ ├── GetConsumerByTopicAckCodec.java │ │ │ │ │ │ ├── GetConsumerByTopicAndAppAckCodec.java │ │ │ │ │ │ ├── GetConsumerByTopicAndAppCodec.java │ │ │ │ │ │ ├── GetConsumerByTopicCodec.java │ │ │ │ │ │ ├── GetDataCenterAckCodec.java │ │ │ │ │ │ ├── GetDataCenterCodec.java │ │ │ │ │ │ ├── GetProducerByTopicAckCodec.java │ │ │ │ │ │ ├── GetProducerByTopicAndAppAckCodec.java │ │ │ │ │ │ ├── GetProducerByTopicAndAppCodec.java │ │ │ │ │ │ ├── GetProducerByTopicCodec.java │ │ │ │ │ │ ├── GetReplicaByBrokerAckCodec.java │ │ │ │ │ │ ├── GetReplicaByBrokerCodec.java │ │ │ │ │ │ ├── GetTopicConfigAckCodec.java │ │ │ │ │ │ ├── GetTopicConfigByAppAckCodec.java │ │ │ │ │ │ ├── GetTopicConfigByAppCodec.java │ │ │ │ │ │ ├── GetTopicConfigByBrokerAckCodec.java │ │ │ │ │ │ ├── GetTopicConfigByBrokerCodec.java │ │ │ │ │ │ ├── GetTopicConfigCodec.java │ │ │ │ │ │ ├── HasSubscribeAckCodec.java │ │ │ │ │ │ ├── HasSubscribeCodec.java │ │ │ │ │ │ ├── LeaderReportCodec.java │ │ │ │ │ │ ├── NsrAuthorizationCodec.java │ │ │ │ │ │ ├── NsrGetTopicsAckCodec.java │ │ │ │ │ │ ├── NsrGetTopicsCodec.java │ │ │ │ │ │ ├── NsrNullPayLoadCodec.java │ │ │ │ │ │ ├── NsrSubscribeAckCodec.java │ │ │ │ │ │ ├── NsrSubscribeCodec.java │ │ │ │ │ │ ├── NsrUnSubscribeCodec.java │ │ │ │ │ │ ├── OperatePartitionGroupCodec.java │ │ │ │ │ │ ├── PushNameServerEventCodec.java │ │ │ │ │ │ ├── RegisterAckCodec.java │ │ │ │ │ │ └── RegisterCodec.java │ │ │ │ │ ├── command │ │ │ │ │ │ ├── AddTopic.java │ │ │ │ │ │ ├── CreatePartitionGroup.java │ │ │ │ │ │ ├── GetAllBrokers.java │ │ │ │ │ │ ├── GetAllBrokersAck.java │ │ │ │ │ │ ├── GetAllConfigs.java │ │ │ │ │ │ ├── GetAllConfigsAck.java │ │ │ │ │ │ ├── GetAllMetadataRequest.java │ │ │ │ │ │ ├── GetAllMetadataResponse.java │ │ │ │ │ │ ├── GetAllTopics.java │ │ │ │ │ │ ├── GetAllTopicsAck.java │ │ │ │ │ │ ├── GetAppToken.java │ │ │ │ │ │ ├── GetAppTokenAck.java │ │ │ │ │ │ ├── GetBroker.java │ │ │ │ │ │ ├── GetBrokerAck.java │ │ │ │ │ │ ├── GetBrokerByRetryType.java │ │ │ │ │ │ ├── GetBrokerByRetryTypeAck.java │ │ │ │ │ │ ├── GetConfig.java │ │ │ │ │ │ ├── GetConfigAck.java │ │ │ │ │ │ ├── GetConsumerByTopic.java │ │ │ │ │ │ ├── GetConsumerByTopicAck.java │ │ │ │ │ │ ├── GetConsumerByTopicAndApp.java │ │ │ │ │ │ ├── GetConsumerByTopicAndAppAck.java │ │ │ │ │ │ ├── GetDataCenter.java │ │ │ │ │ │ ├── GetDataCenterAck.java │ │ │ │ │ │ ├── GetProducerByTopic.java │ │ │ │ │ │ ├── GetProducerByTopicAck.java │ │ │ │ │ │ ├── GetProducerByTopicAndApp.java │ │ │ │ │ │ ├── GetProducerByTopicAndAppAck.java │ │ │ │ │ │ ├── GetReplicaByBroker.java │ │ │ │ │ │ ├── GetReplicaByBrokerAck.java │ │ │ │ │ │ ├── GetTopicConfig.java │ │ │ │ │ │ ├── GetTopicConfigAck.java │ │ │ │ │ │ ├── GetTopicConfigByApp.java │ │ │ │ │ │ ├── GetTopicConfigByAppAck.java │ │ │ │ │ │ ├── GetTopicConfigByBroker.java │ │ │ │ │ │ ├── GetTopicConfigByBrokerAck.java │ │ │ │ │ │ ├── HasSubscribe.java │ │ │ │ │ │ ├── HasSubscribeAck.java │ │ │ │ │ │ ├── LeaderReport.java │ │ │ │ │ │ ├── LeaderReportAck.java │ │ │ │ │ │ ├── NsrCommandType.java │ │ │ │ │ │ ├── NsrConnection.java │ │ │ │ │ │ ├── OperatePartitionGroup.java │ │ │ │ │ │ ├── PushNameServerEvent.java │ │ │ │ │ │ ├── PushNameServerEventAck.java │ │ │ │ │ │ ├── Register.java │ │ │ │ │ │ ├── RegisterAck.java │ │ │ │ │ │ ├── RemovePartitionGroup.java │ │ │ │ │ │ └── UpdatePartitionGroup.java │ │ │ │ │ └── handler │ │ │ │ │ │ ├── GetAllMetadataRequestHandler.java │ │ │ │ │ │ ├── NameServiceCommandHandler.java │ │ │ │ │ │ └── PushNameServerEventHandler.java │ │ │ │ │ ├── service │ │ │ │ │ ├── AppTokenService.java │ │ │ │ │ ├── BrokerService.java │ │ │ │ │ ├── ConfigService.java │ │ │ │ │ ├── ConsumerService.java │ │ │ │ │ ├── DataCenterService.java │ │ │ │ │ ├── DataService.java │ │ │ │ │ ├── NamespaceService.java │ │ │ │ │ ├── PartitionGroupReplicaService.java │ │ │ │ │ ├── PartitionGroupService.java │ │ │ │ │ ├── ProducerService.java │ │ │ │ │ ├── TopicService.java │ │ │ │ │ └── internal │ │ │ │ │ │ ├── AppTokenInternalService.java │ │ │ │ │ │ ├── BrokerInternalService.java │ │ │ │ │ │ ├── ClusterInternalService.java │ │ │ │ │ │ ├── ConfigInternalService.java │ │ │ │ │ │ ├── ConsumerInternalService.java │ │ │ │ │ │ ├── DataCenterInternalService.java │ │ │ │ │ │ ├── NamespaceInternalService.java │ │ │ │ │ │ ├── OperationInternalService.java │ │ │ │ │ │ ├── PartitionGroupInternalService.java │ │ │ │ │ │ ├── PartitionGroupReplicaInternalService.java │ │ │ │ │ │ ├── ProducerInternalService.java │ │ │ │ │ │ ├── TopicInternalService.java │ │ │ │ │ │ └── TransactionInternalService.java │ │ │ │ │ ├── support │ │ │ │ │ ├── DefaultAppTokenService.java │ │ │ │ │ ├── DefaultBrokerService.java │ │ │ │ │ ├── DefaultConfigService.java │ │ │ │ │ ├── DefaultConsumerService.java │ │ │ │ │ ├── DefaultDataCenterService.java │ │ │ │ │ ├── DefaultNamespaceService.java │ │ │ │ │ ├── DefaultPartitionGroupReplicaService.java │ │ │ │ │ ├── DefaultPartitionGroupService.java │ │ │ │ │ ├── DefaultProducerService.java │ │ │ │ │ ├── DefaultServiceProvider.java │ │ │ │ │ └── DefaultTopicService.java │ │ │ │ │ └── util │ │ │ │ │ ├── DCMatcher.java │ │ │ │ │ ├── DCWrapper.java │ │ │ │ │ └── IPRangeMatcher.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ ├── org.joyqueue.nsr.NameService │ │ │ │ ├── org.joyqueue.nsr.ServiceProvider │ │ │ │ ├── org.joyqueue.nsr.message.Messenger │ │ │ │ ├── org.joyqueue.nsr.network.NsrCommandHandler │ │ │ │ ├── org.joyqueue.nsr.network.NsrPayloadCodec │ │ │ │ ├── org.joyqueue.nsr.util.DCMatcher │ │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ │ │ └── test │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── nsr │ │ │ │ ├── DataCenterTest.java │ │ │ │ ├── GetAllMetadataRequestHandlerTest.java │ │ │ │ ├── MetaManagerTest.java │ │ │ │ ├── MetadataValidatorTest.java │ │ │ │ ├── NameServiceTest.java │ │ │ │ └── TestMessenger.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.joyqueue.nsr.message.Messenger │ ├── joyqueue-nsr-journalkeeper │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── nsr │ │ │ │ └── journalkeeper │ │ │ │ ├── JournalkeeperBatchOperationContext.java │ │ │ │ ├── JournalkeeperConsts.java │ │ │ │ ├── JournalkeeperInternalServiceManager.java │ │ │ │ ├── JournalkeeperInternalServiceProvider.java │ │ │ │ ├── config │ │ │ │ ├── JournalkeeperConfig.java │ │ │ │ └── JournalkeeperConfigKey.java │ │ │ │ ├── operator │ │ │ │ ├── JournalkeeperBatchSQLOperator.java │ │ │ │ └── JournalkeeperSQLOperator.java │ │ │ │ ├── repository │ │ │ │ └── JournalkeeperBaseRepository.java │ │ │ │ └── service │ │ │ │ ├── JournalkeeperClusterInternalService.java │ │ │ │ └── JournalkeeperTransactionInternalService.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ ├── org.joyqueue.nsr.InternalServiceProvider │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ ├── joyqueue-nsr-sql │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── nsr │ │ │ │ └── sql │ │ │ │ ├── BatchOperationContext.java │ │ │ │ ├── CompositionBatchSQLOperator.java │ │ │ │ ├── SQLConsts.java │ │ │ │ ├── SQLInternalServiceManager.java │ │ │ │ ├── SQLInternalServiceProvider.java │ │ │ │ ├── config │ │ │ │ ├── SQLConfig.java │ │ │ │ └── SQLConfigKey.java │ │ │ │ ├── converter │ │ │ │ ├── AppTokenConverter.java │ │ │ │ ├── BrokerConverter.java │ │ │ │ ├── ConfigConverter.java │ │ │ │ ├── ConsumerConverter.java │ │ │ │ ├── DataCenterConverter.java │ │ │ │ ├── NamespaceConverter.java │ │ │ │ ├── PartitionGroupConverter.java │ │ │ │ ├── PartitionGroupReplicaConverter.java │ │ │ │ ├── ProducerConverter.java │ │ │ │ └── TopicConverter.java │ │ │ │ ├── domain │ │ │ │ ├── AppTokenDTO.java │ │ │ │ ├── BaseDTO.java │ │ │ │ ├── BrokerDTO.java │ │ │ │ ├── ConfigDTO.java │ │ │ │ ├── ConsumerDTO.java │ │ │ │ ├── DataCenterDTO.java │ │ │ │ ├── NamespaceDTO.java │ │ │ │ ├── PartitionGroupDTO.java │ │ │ │ ├── PartitionGroupReplicaDTO.java │ │ │ │ ├── ProducerDTO.java │ │ │ │ └── TopicDTO.java │ │ │ │ ├── helper │ │ │ │ ├── ArrayHelper.java │ │ │ │ ├── Column.java │ │ │ │ ├── JsonHelper.java │ │ │ │ └── ResultSetHelper.java │ │ │ │ ├── operator │ │ │ │ ├── BatchSQLOperator.java │ │ │ │ ├── DataSourceFactory.java │ │ │ │ ├── ResultSet.java │ │ │ │ ├── SQLOperator.java │ │ │ │ └── support │ │ │ │ │ ├── DefaultBatchSQLOperator.java │ │ │ │ │ ├── DefaultDataSourceFactory.java │ │ │ │ │ └── DefaultSQLOperator.java │ │ │ │ ├── repository │ │ │ │ ├── AppTokenRepository.java │ │ │ │ ├── BaseRepository.java │ │ │ │ ├── BrokerRepository.java │ │ │ │ ├── ConfigRepository.java │ │ │ │ ├── ConsumerRepository.java │ │ │ │ ├── DataCenterRepository.java │ │ │ │ ├── NamespaceRepository.java │ │ │ │ ├── PartitionGroupReplicaRepository.java │ │ │ │ ├── PartitionGroupRepository.java │ │ │ │ ├── ProducerRepository.java │ │ │ │ └── TopicRepository.java │ │ │ │ ├── service │ │ │ │ ├── SQLAppTokenInternalService.java │ │ │ │ ├── SQLBrokerInternalService.java │ │ │ │ ├── SQLClusterInternalService.java │ │ │ │ ├── SQLConfigInternalService.java │ │ │ │ ├── SQLConsumerInternalService.java │ │ │ │ ├── SQLDataCenterInternalService.java │ │ │ │ ├── SQLNamespaceInternalService.java │ │ │ │ ├── SQLOperationInternalService.java │ │ │ │ ├── SQLPartitionGroupInternalService.java │ │ │ │ ├── SQLPartitionGroupReplicaInternalService.java │ │ │ │ ├── SQLProducerInternalService.java │ │ │ │ ├── SQLTopicInternalService.java │ │ │ │ └── SQLTransactionInternalService.java │ │ │ │ └── util │ │ │ │ └── DBUtils.java │ │ │ └── resources │ │ │ ├── META-INF │ │ │ └── services │ │ │ │ ├── org.joyqueue.nsr.InternalServiceProvider │ │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ │ │ └── metadata │ │ │ └── sql │ │ │ ├── h2_schema.sql │ │ │ └── mysql_schema.sql │ └── pom.xml ├── joyqueue-retry │ ├── joyqueue-retry-api │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── server │ │ │ │ └── retry │ │ │ │ ├── NullMessageRetry.java │ │ │ │ ├── api │ │ │ │ ├── ConsoleMessageRetry.java │ │ │ │ ├── MessageRetry.java │ │ │ │ └── RetryPolicyProvider.java │ │ │ │ ├── model │ │ │ │ ├── RetryMessageModel.java │ │ │ │ ├── RetryMonitorItem.java │ │ │ │ ├── RetryQueryCondition.java │ │ │ │ ├── RetryQueryConditionExt.java │ │ │ │ ├── RetryStatus.java │ │ │ │ └── SimpleBatchRetryMessage.java │ │ │ │ └── util │ │ │ │ ├── RetrySerializerUtil.java │ │ │ │ └── RetryUtil.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── server │ │ │ └── retry │ │ │ └── util │ │ │ └── RetrySerializerUtilTest.java │ ├── joyqueue-retry-db-console │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── server │ │ │ └── retry │ │ │ └── console │ │ │ └── DbConsoleMessageRetry.java │ ├── joyqueue-retry-db │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── server │ │ │ │ └── retry │ │ │ │ └── db │ │ │ │ ├── DBMessageRetry.java │ │ │ │ └── config │ │ │ │ └── DbRetryConfigKey.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ ├── joyqueue-retry-h2 │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── server │ │ │ │ └── retry │ │ │ │ └── h2 │ │ │ │ ├── H2MessageRetry.java │ │ │ │ └── config │ │ │ │ └── H2RetryConfigKey.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ ├── joyqueue-retry-remote │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── joyqueue │ │ │ │ └── server │ │ │ │ └── retry │ │ │ │ └── remote │ │ │ │ ├── RemoteMessageRetry.java │ │ │ │ ├── RemoteRetryProvider.java │ │ │ │ ├── command │ │ │ │ ├── GetRetry.java │ │ │ │ ├── GetRetryAck.java │ │ │ │ ├── GetRetryCount.java │ │ │ │ ├── GetRetryCountAck.java │ │ │ │ ├── PutRetry.java │ │ │ │ ├── UpdateRetry.java │ │ │ │ └── codec │ │ │ │ │ ├── BooleanAckCodec.java │ │ │ │ │ ├── GetRetryAckCodec.java │ │ │ │ │ ├── GetRetryCodec.java │ │ │ │ │ ├── GetRetryCountAckCodec.java │ │ │ │ │ ├── GetRetryCountCodec.java │ │ │ │ │ ├── PutRetryCodec.java │ │ │ │ │ └── UpdateRetryCodec.java │ │ │ │ ├── config │ │ │ │ ├── RemoteRetryConfig.java │ │ │ │ └── RemoteRetryConfigKey.java │ │ │ │ └── handler │ │ │ │ └── RemoteRetryMessageHandler.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ └── pom.xml ├── joyqueue-server-runtime │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── joyqueue │ │ │ ├── broker │ │ │ └── Launcher.java │ │ │ └── tools │ │ │ ├── ConsoleConsumer.java │ │ │ ├── ConsoleProducer.java │ │ │ ├── ToolConsts.java │ │ │ └── config │ │ │ ├── ConsoleConsumerConfig.java │ │ │ └── ConsoleProducerConfig.java │ │ └── resources │ │ └── log4j2.xml ├── joyqueue-store │ ├── joyqueue-store-api │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── store │ │ │ ├── NoSuchPartitionGroupException.java │ │ │ ├── PartitionGroupStore.java │ │ │ ├── PositionOverflowException.java │ │ │ ├── PositionUnderflowException.java │ │ │ ├── ReadException.java │ │ │ ├── ReadResult.java │ │ │ ├── RemovedPartitionGroupStore.java │ │ │ ├── StoreManagementService.java │ │ │ ├── StoreNode.java │ │ │ ├── StoreNodes.java │ │ │ ├── StoreService.java │ │ │ ├── WriteException.java │ │ │ ├── WriteRequest.java │ │ │ ├── WriteResult.java │ │ │ ├── event │ │ │ ├── StoreEvent.java │ │ │ ├── StoreNodeChangeEvent.java │ │ │ └── StoreNodeEvent.java │ │ │ ├── message │ │ │ ├── BatchMessageParser.java │ │ │ ├── MessageParser.java │ │ │ └── ParseAttributeException.java │ │ │ ├── replication │ │ │ └── ReplicableStore.java │ │ │ └── transaction │ │ │ └── TransactionStore.java │ ├── joyqueue-store-core │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── joyqueue │ │ │ │ │ └── store │ │ │ │ │ ├── NoSuchPartitionGroupException.java │ │ │ │ │ ├── PartialLogException.java │ │ │ │ │ ├── PartitionGroupExistsException.java │ │ │ │ │ ├── PartitionGroupStoreManager.java │ │ │ │ │ ├── PartitionGroupStoreSupport.java │ │ │ │ │ ├── PositionOverflowException.java │ │ │ │ │ ├── PositionUnderflowException.java │ │ │ │ │ ├── QosStore.java │ │ │ │ │ ├── ReadResult.java │ │ │ │ │ ├── RemovedPartitionGroupStoreManager.java │ │ │ │ │ ├── Store.java │ │ │ │ │ ├── StoreConfig.java │ │ │ │ │ ├── StoreConfigKey.java │ │ │ │ │ ├── StoreInitializeException.java │ │ │ │ │ ├── StoreLock.java │ │ │ │ │ ├── StoreLockedException.java │ │ │ │ │ ├── StoreManagement.java │ │ │ │ │ ├── cli │ │ │ │ │ ├── FileTool.java │ │ │ │ │ └── MessageViewer.java │ │ │ │ │ ├── file │ │ │ │ │ ├── BufferAppender.java │ │ │ │ │ ├── BufferReader.java │ │ │ │ │ ├── Checkpoint.java │ │ │ │ │ ├── CorruptedLogException.java │ │ │ │ │ ├── DiskFullException.java │ │ │ │ │ ├── LogSerializer.java │ │ │ │ │ ├── PositioningStore.java │ │ │ │ │ ├── RollBackException.java │ │ │ │ │ ├── SingleFilePositionStore.java │ │ │ │ │ ├── StoreFile.java │ │ │ │ │ ├── StoreFileImpl.java │ │ │ │ │ ├── StoreMessageSerializer.java │ │ │ │ │ └── Timed.java │ │ │ │ │ ├── index │ │ │ │ │ ├── BadIndexException.java │ │ │ │ │ ├── BuildIndexFailedException.java │ │ │ │ │ ├── IndexItem.java │ │ │ │ │ ├── IndexSerializer.java │ │ │ │ │ └── InvalidIndicesException.java │ │ │ │ │ ├── nsm │ │ │ │ │ ├── VirtualThread.java │ │ │ │ │ └── VirtualThreadExecutor.java │ │ │ │ │ ├── transaction │ │ │ │ │ ├── TransactionFileStore.java │ │ │ │ │ ├── TransactionMessageSerializer.java │ │ │ │ │ └── TransactionStoreManager.java │ │ │ │ │ └── utils │ │ │ │ │ ├── BufferHolder.java │ │ │ │ │ ├── ByteBufferUtils.java │ │ │ │ │ ├── FileUtils.java │ │ │ │ │ ├── MessageUtils.java │ │ │ │ │ ├── PreloadBufferPool.java │ │ │ │ │ └── Timed.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ ├── org.joyqueue.store.StoreService │ │ │ │ └── org.joyqueue.toolkit.config.PropertyDef │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── joyqueue │ │ │ └── store │ │ │ ├── PartitionGroupStoreManagerTest.java │ │ │ ├── StoreServiceTest.java │ │ │ ├── file │ │ │ ├── PositioningStoreTest.java │ │ │ └── StoreFileTest.java │ │ │ ├── transaction │ │ │ └── TransactionTest.java │ │ │ └── utils │ │ │ ├── ByteBufferTestUtils.java │ │ │ └── MessageTestUtils.java │ └── pom.xml └── pom.xml ├── pom.xml ├── styles ├── checkstyle.xml └── suppressions.xml └── toolkit ├── doc ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── joyqueue │ │ └── toolkit │ │ └── doc │ │ ├── APIDoc.java │ │ ├── AutoDoc.java │ │ ├── AutoTestAPIDoc.java │ │ ├── DocEntry.java │ │ ├── Format.java │ │ ├── HeuristicAutoTest.java │ │ ├── MetaParser.java │ │ ├── MultiHandlerMetaParser.java │ │ ├── PackageDocScanParser.java │ │ ├── Param.java │ │ ├── TestCase.java │ │ ├── format │ │ └── MarkdownAPIDocFormat.java │ │ ├── util │ │ └── PackageParser.java │ │ └── vertx │ │ └── RoutingParser.java │ └── test │ └── resources │ └── auto_doc.properties └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .idea/ 3 | .vscode/ 4 | .vertx/ 5 | .vscode/ 6 | target/ 7 | /dist/ 8 | h2-db-joyqueue 9 | .classpath 10 | .settings 11 | .project 12 | *.log 13 | # macOS 14 | .DS_Store 15 | 16 | .vpp.vbak 17 | .vpp.bak* 18 | .vpp.lck 19 | 20 | .version.properties 21 | filter.properties 22 | .factorypath 23 | *.pyc 24 | joyqueue-console/joyqueue-portal/node/ 25 | joyqueue-console/joyqueue-web/joyqueue-web-webroot 26 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | jdk: 3 | - openjdk8 4 | script: 5 | - mvn clean install 6 | after_success: 7 | - mvn clean test jacoco:report coveralls:report -------------------------------------------------------------------------------- /HEADER: -------------------------------------------------------------------------------- 1 | Copyright [2020] JD.com, Inc. TIG. ChubaoStream team. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /docker/bin/README.md: -------------------------------------------------------------------------------- 1 | #JoyQueue CI/CD integration test 2 | 3 | cd to project root directory and execute following commands: 4 | ``` 5 | 6 | mvn -Dmaven.test.skip=true -P docker install 7 | cd docker/bin 8 | python3 ./integration/bootstrap.py -s ./ -b $(pwd)/integration/benchmark 9 | 10 | 11 | ``` -------------------------------------------------------------------------------- /docker/bin/integration/benchmark/driver-joyqueue/joyqueue.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 The JoyQueue Authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | name: JoyQueue 18 | driverClass: io.openmessaging.benchmark.driver.joyqueue.JoyQueueBenchmarkDriver 19 | 20 | # JournalQ client-specific configuration 21 | clusterName: DefaultCluster 22 | namesrvAddr: 192.169.0.2:50088 23 | adminAddr: 192.169.0.2:50091 24 | 25 | 26 | -------------------------------------------------------------------------------- /docker/bin/integration/bootstrap.conf: -------------------------------------------------------------------------------- 1 | [Default] 2 | 3 | Mode = local 4 | 5 | [SSH] 6 | 7 | User = root 8 | PasswdFile=/export/root.pwd 9 | Port= 443 10 | 11 | [Workspace] 12 | 13 | # only support single mq instance 14 | Cluster = 192.169.0.2 15 | 16 | Home = /export/docker/workspace 17 | User = root 18 | ResultFile = score.json 19 | 20 | [Subnet] 21 | 22 | ip = 192.169.0.0/16 23 | name = ci_network 24 | 25 | [Task] 26 | 27 | MQEntryPoint = bin/server-start-log.sh 28 | PressureEntryPoint = bin/benchmark 29 | PressureRepoName = openmessaging-benchmark 30 | PressureDockerNamespace = openmessaging 31 | PressureRepo= git@git.jd.com:wangjin18/openmessaging-benchmark.git 32 | 33 | MQRepoName = joyqueue-server 34 | MQDockerNamespace = joyqueue 35 | MQLogFile = info.log 36 | startedFlag = 'JoyQueue is started' 37 | expose = 50188-50191 38 | MQDockerTag = latest 39 | MQHome = /export/Data/joyqueue 40 | MQRepo = git@git.jd.com:laf/journalQ.git 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /docker/jenkins/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Jenkins docker build and start 3 | 4 | 5 | ## Docker build 6 | 7 | docker build -t jenkins/jenkins:lts_python35 . 8 | 9 | 10 | ## Docker run 11 | 12 | 13 | ### bridge network mode 14 | 15 | docker run -p 80:8080 -v /export/docker/jenkins/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -u0 -d jenkins/jenkins:lts_python35 16 | 17 | 18 | ### host network mode 19 | 20 | docker run --network host -e JENKINS_OPTS="--httpPort=80" -v /export/docker/jenkins/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -u0 -d jenkins/jenkins:lts_python35 21 | 22 | -------------------------------------------------------------------------------- /docs/cn/concepts.md: -------------------------------------------------------------------------------- 1 | # 概念 2 | 3 | JoyQueue采用的消息模型是标准的“发布-订阅模型(Publish-Subscribe Pattern)”,本文对JoyQueue中使用的消息模型和涉及到的概念做简明的介绍。 4 | 5 | ## 基础概念 6 | 7 | ### 主题/Topic 8 | 9 | 主题是发布和订阅消息的基本单位。 10 | 11 | ### 分区/Partition 12 | 13 | 主题中包含一个或多个分区。一个主题的多个分区可以分布在多个Broker上,用于并行的生产和消费,提升主题总体的吞吐量。主题中的分区和动态的增加或者减少,实现水平扩缩绒。 14 | 15 | ### Broker/JoyQueue Server 16 | 17 | Broker是JoyQueue的服务端进程,也成为JoyQueue Server。 18 | 19 | ### 应用/App 20 | 21 | 应用是JoyQueue的使用者,可以是生产者也可以是消费者,一个应用可以有多个实例。 22 | 23 | ### 生产者/Producer 24 | 25 | 即消息发送端的应用程序。 26 | 27 | ### 消费者/Consumer 28 | 29 | 消息接收端的应用程序。 30 | 31 | ## 高级概念 32 | 33 | ### 分区组 34 | 35 | 分区组包含一组分区,同一组分区分布在同一个Broker,共享一个复制集群。 36 | 37 | ### Broker分组 38 | 39 | Broker分组包含一组Broker,主要目的是便于管理Broker。 40 | 41 | ### 命名空间 42 | 43 | 即主题的命名空间,创建主题时可以指定命名空间,同一命名空间下主题具有唯一性。 44 | 45 | ### 消费组 46 | 47 | 在消费时,默认一个应用消费主题一份完整消息,如果应用的启动多个消费者实例,那这些实例之间是竞争消费,每条消息最多只能被一个实例消费。 48 | 49 | 如果一个应用需要同时消费同一主题多次,可以通过配置多个消费组来实现。例如,同一个应用,线上环境和预发环境都希望能各自完整消费同一主题的消息,就可以各自配置一个消费组。每个消费组包含一份完整的消息。 50 | -------------------------------------------------------------------------------- /docs/cn/how_to_compile.md: -------------------------------------------------------------------------------- 1 | # 编译 2 | 3 | 编译JoyQueue需要的环境包括: 4 | 5 | * JDK 8 及以上的版本 6 | * Maven 3 及以上的版本 7 | 8 | ## 下载源代码 9 | 10 | 使用git下载源代码: 11 | 12 | ```bash 13 | git clone https://github.com/joyqueue/joyqueue.git 14 | ``` 15 | 16 | 或者[下载源代码压缩包](https://github.com/joyqueue/joyqueue/archive/master.zip),然后解压到目录joyqueue。 17 | 18 | ## 编译JoyQueue 19 | 20 | 编译JoyQueue需要的环境包括: 21 | 22 | * JDK 8 及以上的版本 23 | * Maven 3 及以上的版本 24 | 25 | 执行编译: 26 | 27 | ```bash 28 | mvn -PCompileFrontend -Dmaven.test.skip install 29 | ``` 30 | 31 | 编译过程中会自动下载Node.js和npm到源代码目录,并使用node编译JoyQueue Web的前端页面,如果不需要编译JoyQueue Web可以执行: 32 | 33 | ```bash 34 | mvn -Dmaven.test.skip install 35 | ``` 36 | 37 | 编译完成后,生成的安装包位于: 38 | 39 | * **JoyQueue Server**: joyqueue/joyqueue-distribution/joyqueue-distribution-server/target 40 | * **JoyQueue Web**: joyqueue/joyqueue-distribution/joyqueue-distribution-web/target 41 | * **JoyQueue Client**: joyqueue/joyqueue-client/joyqueue-client-all-shaded/target/joyqueue-client-all-shaded-4.1.1.jar 42 | -------------------------------------------------------------------------------- /docs/cn/index.md: -------------------------------------------------------------------------------- 1 | # JoyQueue 文档目录 2 | 3 | ## 快速开始 4 | 5 | 1. [快速开始](./quickstart.md) 6 | 2. [编译JoyQueue](./how_to_compile.md) 7 | 8 | ## 使用教程 9 | 10 | 1. [基础概念](./concepts.md) 11 | 2. [客户端使用说明](./client.md) 12 | 3. [配置JoyQueue](./configurations.md) 13 | 4. [Rest API](./rest_api.md) 14 | 5. [部署JoyQueue集群](./cluster.md) 15 | 6. 确保消息可靠性 16 | 7. 性能优化 17 | 8. 事务消息 18 | 9. 开启消息归档功能 19 | 10. 开启消息重试功能 20 | 11. 开启并行消费功能 21 | 12. 配置监控:集成Prometheus和Grafana 22 | 13. 就近生产消费 23 | 14. MQTT 24 | 25 | ## 设计与实现 26 | 27 | 1. [客户端通信协议](./client_protocol.md) 28 | 2. 存储 29 | 3. 缓存 30 | 4. 选举与复制 31 | 5. 多协议 32 | -------------------------------------------------------------------------------- /docs/diagrams/JoyQueue Docs.vpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/docs/diagrams/JoyQueue Docs.vpp -------------------------------------------------------------------------------- /docs/images/cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/docs/images/cluster.png -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-all-shaded/src/main/java/org/joyqueue/FakeAll.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue; 17 | 18 | /** 19 | * To avoid javadoc error 20 | **/ 21 | public class FakeAll { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-all-shaded/src/main/java/org/joyqueue/FakeAllShade.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue; 17 | 18 | /** 19 | * To avoid javadoc error 20 | **/ 21 | public class FakeAllShade { 22 | } 23 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-all-shaded/src/main/java/org/joyqueue/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue; -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-all/src/main/java/org/joyqueue/FakeAll.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue; 17 | 18 | /** 19 | * To avoid javadoc error 20 | **/ 21 | public class FakeAll { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-all/src/main/java/org/joyqueue/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue; -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core-shaded/src/main/java/org/joyqueue/Fake.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue; 17 | 18 | /** 19 | * 20 | * To avoid javadoc error 21 | * 22 | **/ 23 | public class Fake { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core-shaded/src/main/java/org/joyqueue/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue; 17 | 18 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/java/io/openmessaging/joyqueue/JoyQueueOMSConsts.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.openmessaging.joyqueue; 17 | 18 | /** 19 | * JoyQueueOMSConsts 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/2/18 23 | */ 24 | public class JoyQueueOMSConsts { 25 | 26 | public static final String VERSION = "1.0.0-alpha"; 27 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/java/io/openmessaging/joyqueue/message/EmptyMessageReceipt.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package io.openmessaging.joyqueue.message; 17 | 18 | import io.openmessaging.consumer.MessageReceipt; 19 | 20 | /** 21 | * EmptyMessageReceipt 22 | * 23 | * author: gaohaoxiang 24 | * date: 2019/3/1 25 | */ 26 | public class EmptyMessageReceipt implements MessageReceipt { 27 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/java/org/joyqueue/client/internal/common/interceptor/BaseInterceptor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.client.internal.common.interceptor; 17 | 18 | /** 19 | * BaseInterceptor 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/1/14 23 | */ 24 | public interface BaseInterceptor { 25 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/java/org/joyqueue/client/internal/consumer/BaseMessageListener.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.client.internal.consumer; 17 | 18 | /** 19 | * BaseMessageListener 20 | * 21 | * author: gaohaoxiang 22 | * date: 2018/12/25 23 | */ 24 | public interface BaseMessageListener { 25 | } 26 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/java/org/joyqueue/client/internal/consumer/config/FetcherConfig.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.client.internal.consumer.config; 17 | 18 | /** 19 | * FetcherConfig 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/2/11 23 | */ 24 | public class FetcherConfig { 25 | 26 | public FetcherConfig() { 27 | 28 | } 29 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/java/org/joyqueue/client/internal/metadata/domain/PartitionNode.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.client.internal.metadata.domain; 2 | 3 | /** 4 | * PartitionNode 5 | * author: gaohaoxiang 6 | * date: 2020/8/11 7 | */ 8 | public class PartitionNode { 9 | 10 | private PartitionMetadata partitionMetadata; 11 | 12 | public PartitionNode(PartitionMetadata partitionMetadata) { 13 | this.partitionMetadata = partitionMetadata; 14 | } 15 | 16 | public PartitionNodeTracer begin() { 17 | return new PartitionNodeTracer(); 18 | } 19 | 20 | public PartitionMetadata getPartitionMetadata() { 21 | return partitionMetadata; 22 | } 23 | 24 | public static class PartitionNodeTracer { 25 | 26 | public void end() { 27 | 28 | } 29 | 30 | public void error() { 31 | 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/java/org/joyqueue/client/internal/trace/Trace.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.client.internal.trace; 17 | 18 | import com.jd.laf.extension.Type; 19 | 20 | /** 21 | * Trace 22 | * 23 | * author: gaohaoxiang 24 | * date: 2019/1/3 25 | */ 26 | public interface Trace extends Type { 27 | 28 | TraceCaller begin(TraceContext context); 29 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/java/org/joyqueue/client/internal/trace/TraceCaller.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.client.internal.trace; 17 | 18 | /** 19 | * TraceCaller 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/1/3 23 | */ 24 | public interface TraceCaller { 25 | 26 | void end(); 27 | 28 | void error(); 29 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/java/org/joyqueue/client/internal/transport/ClientState.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.client.internal.transport; 17 | 18 | /** 19 | * ClientState 20 | * 21 | * author: gaohaoxiang 22 | * date: 2018/12/17 23 | */ 24 | public enum ClientState { 25 | 26 | CONNECTED, 27 | 28 | DISCONNECTED, 29 | 30 | ; 31 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/resources/META-INF/joyqueue/version.properties: -------------------------------------------------------------------------------- 1 | version=${project.version} -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/resources/META-INF/services/org.joyqueue.client.internal.common.compress.Compressor: -------------------------------------------------------------------------------- 1 | org.joyqueue.client.internal.common.compress.support.ZlibCompressor 2 | org.joyqueue.client.internal.common.compress.support.SnappyCompressor -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/resources/META-INF/services/org.joyqueue.client.internal.consumer.BrokerLoadBalance: -------------------------------------------------------------------------------- 1 | org.joyqueue.client.internal.consumer.support.RoundRobinBrokerLoadBalance 2 | org.joyqueue.client.internal.consumer.support.RandomBrokerLoadBalance 3 | org.joyqueue.client.internal.consumer.support.BindThreadBrokerLoadBalance -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/resources/META-INF/services/org.joyqueue.client.internal.consumer.interceptor.ConsumerInterceptor: -------------------------------------------------------------------------------- 1 | org.joyqueue.client.internal.trace.interceptor.TraceConsumerInterceptor -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/resources/META-INF/services/org.joyqueue.client.internal.producer.PartitionSelector: -------------------------------------------------------------------------------- 1 | org.joyqueue.client.internal.producer.support.WeightedPartitionSelector 2 | org.joyqueue.client.internal.producer.support.AdaptivePartitionSelector -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-core/src/main/resources/META-INF/services/org.joyqueue.client.internal.producer.interceptor.ProducerInterceptor: -------------------------------------------------------------------------------- 1 | org.joyqueue.client.internal.trace.interceptor.TraceProducerInterceptor -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-kafka/src/main/resources/META-INF/services/org.joyqueue.client.internal.consumer.converter.MessageConverter: -------------------------------------------------------------------------------- 1 | org.joyqueue.client.internal.consumer.converter.kafka.KafkaMessageConverter -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-loadbalance-adaptive/src/main/java/org/joyqueue/client/loadbalance/adaptive/RandomLoadBalance.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.client.loadbalance.adaptive; 2 | 3 | import org.joyqueue.client.loadbalance.adaptive.node.Node; 4 | 5 | import java.util.List; 6 | import java.util.Random; 7 | 8 | /** 9 | * WeightLoadBalance 10 | * author: gaohaoxiang 11 | * date: 2020/8/10 12 | */ 13 | public class RandomLoadBalance { 14 | 15 | private static final Random RANDOM = new Random(); 16 | 17 | public Node select(List nodes) { 18 | return nodes.get(RANDOM.nextInt(nodes.size())); 19 | } 20 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-loadbalance-adaptive/src/main/java/org/joyqueue/client/loadbalance/adaptive/ScoreJudge.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.client.loadbalance.adaptive; 2 | 3 | import org.joyqueue.client.loadbalance.adaptive.node.Node; 4 | import org.joyqueue.client.loadbalance.adaptive.node.Nodes; 5 | 6 | /** 7 | * ScoreJudge 8 | * author: gaohaoxiang 9 | * date: 2020/8/10 10 | */ 11 | public interface ScoreJudge { 12 | 13 | double compute(Nodes nodes, Node node); 14 | 15 | double getRatio(); 16 | 17 | String type(); 18 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-loadbalance-adaptive/src/main/java/org/joyqueue/client/loadbalance/adaptive/judge/AvailableScoreJudge.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.client.loadbalance.adaptive.judge; 2 | 3 | import org.joyqueue.client.loadbalance.adaptive.ScoreJudge; 4 | import org.joyqueue.client.loadbalance.adaptive.node.Node; 5 | import org.joyqueue.client.loadbalance.adaptive.node.Nodes; 6 | 7 | /** 8 | * SuccessScoreJudge 9 | * author: gaohaoxiang 10 | * date: 2020/8/10 11 | */ 12 | public class AvailableScoreJudge implements ScoreJudge { 13 | 14 | @Override 15 | public double compute(Nodes nodes, Node node) { 16 | if (node.getMetric().getErrorCount() != 0) { 17 | return -Integer.MAX_VALUE; 18 | } 19 | return 0; 20 | } 21 | 22 | @Override 23 | public double getRatio() { 24 | return 30; 25 | } 26 | 27 | @Override 28 | public String type() { 29 | return "tps"; 30 | } 31 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-loadbalance-adaptive/src/main/java/org/joyqueue/client/loadbalance/adaptive/judge/RegionScoreJudge.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.client.loadbalance.adaptive.judge; 2 | 3 | import org.joyqueue.client.loadbalance.adaptive.ScoreJudge; 4 | import org.joyqueue.client.loadbalance.adaptive.node.Node; 5 | import org.joyqueue.client.loadbalance.adaptive.node.Nodes; 6 | 7 | /** 8 | * RegionScoreJudge 9 | * author: gaohaoxiang 10 | * date: 2020/8/10 11 | */ 12 | public class RegionScoreJudge implements ScoreJudge { 13 | 14 | @Override 15 | public double compute(Nodes nodes, Node node) { 16 | if (node.isNearby()) { 17 | return 100; 18 | } 19 | return 1; 20 | } 21 | 22 | @Override 23 | public double getRatio() { 24 | return 30; 25 | } 26 | 27 | @Override 28 | public String type() { 29 | return "region"; 30 | } 31 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-loadbalance-adaptive/src/main/java/org/joyqueue/client/loadbalance/adaptive/node/WeightNode.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.client.loadbalance.adaptive.node; 2 | 3 | /** 4 | * WeightNode 5 | * author: gaohaoxiang 6 | * date: 2020/8/10 7 | */ 8 | public class WeightNode { 9 | 10 | private Node node; 11 | private double weight; 12 | 13 | public WeightNode(Node node, double weight) { 14 | this.node = node; 15 | this.weight = weight; 16 | } 17 | 18 | public void setNode(Node node) { 19 | this.node = node; 20 | } 21 | 22 | public Node getNode() { 23 | return node; 24 | } 25 | 26 | public void setWeight(double weight) { 27 | this.weight = weight; 28 | } 29 | 30 | public double getWeight() { 31 | return weight; 32 | } 33 | } -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-loadbalance-adaptive/src/main/resources/META-INF/services/org.joyqueue.client.loadbalance.adaptive.ScoreJudge: -------------------------------------------------------------------------------- 1 | #org.joyqueue.client.loadbalance.adaptive.judge.RegionScoreJudge 2 | org.joyqueue.client.loadbalance.adaptive.judge.AvgScoreJudge 3 | org.joyqueue.client.loadbalance.adaptive.judge.AvailableScoreJudge -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-samples/joyqueue-client-samples-kafka/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-samples/joyqueue-client-samples-openmessaging/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-samples/joyqueue-client-samples-openmessaging/src/main/resources/services/com.jd.joyqueue.client.internal.consumer.interceptor.ConsumerInterceptor: -------------------------------------------------------------------------------- 1 | org.joyqueue.client.samples.api.consumer.JoyQueueSimpleConsumerInterceptor -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-samples/joyqueue-client-samples-openmessaging/src/main/resources/services/com.jd.joyqueue.client.internal.producer.interceptor.ProducerInterceptor: -------------------------------------------------------------------------------- 1 | org.joyqueue.client.samples.api.producer.JoyQueueSimpleProducerInterceptor -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-samples/joyqueue-client-samples-spring/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-samples/joyqueue-client-samples-springboot/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.oms.url=oms:joyqueue://test_app@127.0.0.1:50088/UNKNOWN 2 | spring.oms.attributes[ACCOUNT_KEY]=test_token 3 | 4 | #spring.oms.consumer.enable=false 5 | #spring.oms.producer.enable=false 6 | #spring.oms.interceptor.enable=false 7 | #spring.oms.producer.transaction.check.enable=false -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-samples/joyqueue-client-samples-springboot/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /joyqueue-client/joyqueue-client-samples/joyqueue-client-samples-springcloud-stream/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 The JoyQueue Authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # 采用Spring Cloud Stream与Spring Boot配置冲突, Spring Boot优先级会更高 18 | #spring.oms: 19 | # url: oms:joyqueue://test_app@127.0.0.1:50088/UNKNOWN 20 | # attributes: 21 | # - ACCOUNT_KEY: test_token -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-datasource/joyqueue-datasource-api/src/main/java/org/joyqueue/datasource/XDataSource.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.datasource; 17 | 18 | import javax.sql.DataSource; 19 | 20 | /** 21 | * 数据源接口 22 | */ 23 | public interface XDataSource extends DataSource { 24 | 25 | /** 26 | * 销毁 27 | */ 28 | void destroy(); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-datasource/joyqueue-datasource-hikaricp/src/main/resources/META-INF/services/org.joyqueue.datasource.DataSourceBuilder: -------------------------------------------------------------------------------- 1 | org.joyqueue.datasource.HikariDataSourceBuilder -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-model/src/main/java/org/joyqueue/model/Query.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.model; 17 | 18 | /** 19 | * Created by yangyang115 on 18-7-26. 20 | */ 21 | public interface Query { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-model/src/main/java/org/joyqueue/monitor/BaseMonitorInfo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.monitor; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | * BaseMonitorInfo 22 | * 23 | * author: gaohaoxiang 24 | * date: 2018/10/15 25 | */ 26 | public abstract class BaseMonitorInfo implements Serializable { 27 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-model/src/main/java/org/joyqueue/monitor/MqttAcknowledgedInfo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.monitor; 17 | 18 | /** 19 | * @author majun8 20 | */ 21 | public class MqttAcknowledgedInfo extends BaseMonitorInfo { 22 | } 23 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-model/src/main/java/org/joyqueue/monitor/MqttPublishInfo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.monitor; 17 | 18 | /** 19 | * @author majun8 20 | */ 21 | public class MqttPublishInfo extends BaseMonitorInfo { 22 | } 23 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-model/src/main/java/org/joyqueue/response/Response.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.response; 17 | 18 | /** 19 | * @author wylixiaobin 20 | * Date: 2019/1/3 21 | */ 22 | public interface Response { 23 | boolean isSuccess(); 24 | } 25 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-model/src/main/resources/META-INF/services/org.joyqueue.monitor.PointTracer: -------------------------------------------------------------------------------- 1 | org.joyqueue.monitor.DefaultPointTracer -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-model/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.config.BrokerConfigKey -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/command/CommitIndexResponse.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.network.command; 2 | 3 | import com.google.common.collect.Table; 4 | import org.joyqueue.exception.JoyQueueCode; 5 | import org.joyqueue.network.transport.command.JoyQueuePayload; 6 | 7 | /** 8 | * CommitIndexRequest 9 | * author: gaohaoxiang 10 | * date: 2020/5/20 11 | */ 12 | public class CommitIndexResponse extends JoyQueuePayload { 13 | 14 | private Table result; 15 | 16 | @Override 17 | public int type() { 18 | return JoyQueueCommandType.COMMIT_ACK_INDEX_RESPONSE.getCode(); 19 | } 20 | 21 | public void setResult(Table result) { 22 | this.result = result; 23 | } 24 | 25 | public Table getResult() { 26 | return result; 27 | } 28 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/domain/BrokerSysCode.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.domain; 17 | 18 | /** 19 | * BrokerSysCode 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/6/27 23 | */ 24 | public class BrokerSysCode { 25 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/protocol/ProtocolService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.protocol; 17 | 18 | import io.netty.buffer.ByteBuf; 19 | 20 | /** 21 | * ProtocolService 22 | * 23 | * author: gaohaoxiang 24 | * date: 2018/9/25 25 | */ 26 | public interface ProtocolService extends Protocol { 27 | 28 | boolean isSupport(ByteBuf buffer); 29 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/protocol/ProtocolTransport.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.protocol; 17 | 18 | /** 19 | * ProtocolTransport 20 | * 21 | * author: gaohaoxiang 22 | * date: 2018/8/16 23 | */ 24 | public interface ProtocolTransport { 25 | 26 | String protocol(); 27 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/transport/ChannelTransport.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.transport; 17 | 18 | import io.netty.channel.Channel; 19 | 20 | /** 21 | * ChannelTransport 22 | * 23 | * author: gaohaoxiang 24 | * date: 2018/8/13 25 | */ 26 | public interface ChannelTransport extends Transport { 27 | 28 | Channel getChannel(); 29 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/transport/TransportState.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.transport; 17 | 18 | /** 19 | * TransportState 20 | * 21 | * author: gaohaoxiang 22 | * date: 2018/12/28 23 | */ 24 | public enum TransportState { 25 | 26 | CONNECTED, 27 | 28 | DISCONNECTED, 29 | 30 | ; 31 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/transport/codec/Codec.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.transport.codec; 17 | 18 | /** 19 | * 对象序编解码 20 | * Created by hexiaofeng on 16-6-23. 21 | */ 22 | public interface Codec extends Encoder, Decoder { 23 | 24 | } 25 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/transport/codec/CodecFactory.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.transport.codec; 17 | 18 | /** 19 | * CodecFactory 20 | * 21 | * author: gaohaoxiang 22 | * date: 2018/8/13 23 | */ 24 | public interface CodecFactory { 25 | 26 | Codec getCodec(); 27 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/transport/command/Payload.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.transport.command; 17 | 18 | /** 19 | * Created by hexiaofeng on 16-6-22. 20 | */ 21 | public interface Payload { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/transport/command/Releasable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.transport.command; 17 | 18 | /** 19 | * 释放接口 20 | * 21 | * @author hexiaofeng on 16-6-22. 22 | */ 23 | public interface Releasable { 24 | 25 | /** 26 | * 释放 27 | */ 28 | void release(); 29 | } 30 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/transport/command/Type.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.transport.command; 17 | 18 | /** 19 | * 类型 20 | * 21 | * @author lindeqiang 22 | * @since 2016/8/14 12:49 23 | */ 24 | public interface Type { 25 | int type(); 26 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-network/src/main/java/org/joyqueue/network/transport/command/Types.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.network.transport.command; 17 | 18 | /** 19 | * 类型 20 | * 21 | * @author lindeqiang 22 | * @since 2016/8/14 12:49 23 | */ 24 | public interface Types { 25 | int[] types(); 26 | } -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-security/src/main/java/org/joyqueue/security/PasswordEncoder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.security; 17 | 18 | import org.joyqueue.exception.JoyQueueException; 19 | 20 | /** 21 | * @author majun8 22 | */ 23 | public interface PasswordEncoder { 24 | 25 | String encode(String password) throws JoyQueueException; 26 | } 27 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-toolkit/src/main/java/org/joyqueue/toolkit/UrlAware.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.toolkit; 17 | 18 | public interface UrlAware { 19 | void setUrl(URL url); 20 | } 21 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-toolkit/src/main/java/org/joyqueue/toolkit/config/PropertySupplierAware.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.toolkit.config; 17 | 18 | /** 19 | * 是否感知配置 20 | */ 21 | public interface PropertySupplierAware { 22 | /** 23 | * set supplier 24 | * 25 | * @param supplier 26 | */ 27 | void setSupplier(PropertySupplier supplier); 28 | } 29 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-toolkit/src/main/java/org/joyqueue/toolkit/io/ZipDeflater.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.toolkit.io; 17 | 18 | import java.util.zip.Deflater; 19 | 20 | /** 21 | * Created by majun on 19-2-2. 22 | */ 23 | public class ZipDeflater extends Deflater { 24 | 25 | @Override 26 | protected void finalize() { 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-toolkit/src/main/java/org/joyqueue/toolkit/io/ZipInflater.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.toolkit.io; 17 | 18 | import java.util.zip.Inflater; 19 | 20 | /** 21 | * Created by majun on 19-2-2. 22 | */ 23 | public class ZipInflater extends Inflater { 24 | 25 | @Override 26 | protected void finalize() { 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-toolkit/src/main/java/org/joyqueue/toolkit/lang/Getter.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.toolkit.lang; 17 | 18 | /** 19 | * 获取值 20 | * Created by hexiaofeng on 16-8-11. 21 | */ 22 | public interface Getter { 23 | /** 24 | * 获取值 25 | * 26 | * @return 值 27 | */ 28 | Object get(); 29 | } 30 | -------------------------------------------------------------------------------- /joyqueue-common/joyqueue-toolkit/src/main/java/org/joyqueue/toolkit/lang/Online.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.toolkit.lang; 17 | 18 | /** 19 | * 是否在线接口 20 | * Created by hexiaofeng on 16-5-10. 21 | */ 22 | public interface Online { 23 | 24 | /** 25 | * 是否在运行中 26 | * 27 | * @return 运行中标示 28 | */ 29 | boolean isStarted(); 30 | } 31 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-model/src/main/java/org/joyqueue/model/domain/Checker.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.model.domain; 17 | 18 | /** 19 | * Created by yangyang115 on 18-9-25. 20 | */ 21 | public interface Checker { 22 | 23 | void checkAdd(); 24 | 25 | void checkUpdate(); 26 | } 27 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-model/src/main/java/org/joyqueue/model/domain/RetryType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.model.domain; 17 | 18 | /** 19 | * 重试服务类型 20 | */ 21 | public enum RetryType { 22 | /** 23 | * 直连数据库 24 | */ 25 | DB, 26 | /** 27 | * 访问远程服务 28 | */ 29 | REMOTE 30 | } -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-model/src/main/java/org/joyqueue/model/query/QBrokerGroupRelated.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.model.query; 17 | 18 | /** 19 | * Created by lining on 16-11-28. 20 | */ 21 | public class QBrokerGroupRelated extends QBroker { 22 | } 23 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-model/src/main/java/org/joyqueue/model/query/QIdentity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.model.query; 17 | 18 | public interface QIdentity { 19 | long getId(); 20 | void setId(long id); 21 | } 22 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-repository/joyqueue-data-repository-mybatis/src/main/java/org/joyqueue/repository/mybatis/interceptor/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | /** 17 | * 拦截器相关接口类 18 | */ 19 | package org.joyqueue.repository.mybatis.interceptor; -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-service/src/main/java/org/joyqueue/exception/MessageDeserializeException.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.exception; 2 | 3 | public class MessageDeserializeException extends RuntimeException { 4 | /** 5 | * Constructs a {@code MessageDeserializeException} with no detail message. 6 | */ 7 | public MessageDeserializeException() { 8 | super(); 9 | } 10 | 11 | /** 12 | * Constructs a {@code MessageDeserializeException} with the specified 13 | * detail message. 14 | * 15 | * @param s the detail message. 16 | */ 17 | public MessageDeserializeException(String s) { 18 | super(s); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-service/src/main/java/org/joyqueue/nsr/NsrServiceProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.nsr; 17 | 18 | /** 19 | * @author liyue25 20 | * Date: 2019-07-22 21 | */ 22 | public interface NsrServiceProvider { 23 | String getBaseUrl(); 24 | } 25 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-service/src/main/java/org/joyqueue/service/LeaderBrokerMonitorService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.service; 17 | 18 | public interface LeaderBrokerMonitorService extends BrokerMonitorService { 19 | } 20 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-service/src/main/java/org/joyqueue/service/NameServerService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.service; 17 | 18 | /** 19 | * NameServer 接口 20 | * Created by chenyanying3 on 2018-10-23. 21 | */ 22 | public interface NameServerService { 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-service/src/main/java/org/joyqueue/service/RetryCacheService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.service; 17 | 18 | /** 19 | * Created by wangxiaofei1 on 2018/12/24. 20 | */ 21 | public interface RetryCacheService { 22 | void removeMsgBodyFromRedis(String msgBodyKey, String topic, String app, long dbId); 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-service/src/main/java/org/joyqueue/service/impl/AbstractBrokerService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.service.impl; 17 | 18 | public class AbstractBrokerService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-data-service/src/main/java/org/joyqueue/sync/UserSupplier.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.sync; 17 | 18 | public interface UserSupplier { 19 | 20 | /** 21 | * 根据代码查找应用 22 | * 23 | * @param code 24 | * @return 25 | */ 26 | UserInfo findByCode(String code) throws Exception; 27 | } 28 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-data/joyqueue-token/joyqueue-token-uuid-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | org.joyqueue.token.UuidTokenAutoConfiguration -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-message-filter/joyqueue-message-filter-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | joyqueue-message-filter 5 | org.joyqueue 6 | 4.2.8-SNAPSHOT 7 | 8 | 4.0.0 9 | JoyQueue-Message-Filter-Api 10 | joyqueue-message-filter-api 11 | 12 | 13 | 14 | org.joyqueue 15 | joyqueue-toolkit 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-message-filter/joyqueue-message-filter-api/src/main/java/org/joyqueue/msg/filter/OutputType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | *

4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | *

8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | *

10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.msg.filter; 17 | 18 | 19 | 20 | /** 21 | * @author jiangnan53 22 | * @date 2020/4/22 23 | **/ 24 | public enum OutputType { 25 | S3 26 | } 27 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-message-filter/joyqueue-message-filter-s3/src/main/resources/META-INF/services/org.joyqueue.msg.filter.TopicMsgFilterMatcher: -------------------------------------------------------------------------------- 1 | org.joyqueue.msg.filter.s3.TopicMsgFilterS3Matcher -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-message-filter/joyqueue-message-filter-s3/src/main/resources/META-INF/services/org.joyqueue.msg.filter.TopicMsgFilterOutput: -------------------------------------------------------------------------------- 1 | org.joyqueue.msg.filter.s3.TopicMsgFilterS3Output -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-vue-jsx", "transform-runtime"] 12 | } 13 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/.editorconfig: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 The JoyQueue Authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | root = true 18 | 19 | [*] 20 | charset = utf-8 21 | indent_style = space 22 | indent_size = 2 23 | end_of_line = lf 24 | insert_final_newline = true 25 | trim_trailing_whitespace = true 26 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/.eslintignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /config/ 3 | /dist/ 4 | /*.js 5 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/.eslintrc.js: -------------------------------------------------------------------------------- 1 | // https://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parserOptions: { 6 | parser: 'babel-eslint' 7 | }, 8 | env: { 9 | browser: true, 10 | }, 11 | extends: [ 12 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention 13 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. 14 | 'plugin:vue/essential', 15 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md 16 | 'standard' 17 | ], 18 | // required to lint *.vue files 19 | plugins: [ 20 | 'vue' 21 | ], 22 | // add your custom rules here 23 | rules: { 24 | // allow async-await 25 | 'generator-star-spacing': 'off', 26 | // allow debugger during development 27 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | /dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | package-lock.json 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/build/logo.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | JoyQueue 7 | 8 | 9 | 10 |

11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 27 | 28 | 38 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/404_images/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/404_images/404.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/404_images/404_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/404_images/404_cloud.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/iconfont.eot -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/iconfont.ttf -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/iconfont.woff -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/1_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/1_close.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/1_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/1_open.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/2.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/3.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/4.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/5.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/6.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/7.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/8.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/diy/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/diy/9.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/line_conn.gif -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/loading.gif -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/zTreeStandard.gif -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/css/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/css/img/zTreeStandard.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/fonts/empty.txt: -------------------------------------------------------------------------------- 1 | ==== 2 | Copyright 2019 The JoyQueue Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | ==== 16 | 17 | 1 18 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/fonts/iconfont.eot -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/fonts/iconfont.ttf -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/fonts/iconfont.woff -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/images/joyqueue-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/images/joyqueue-logo.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/images/lightbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/images/lightbg.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/assets/images/resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/src/assets/images/resize.png -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/autocomplete/index.js: -------------------------------------------------------------------------------- 1 | import Autocomplete from './autocomplete' 2 | 3 | export default Autocomplete 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/breadcrumb/breadcrumb.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 27 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/breadcrumb/index.js: -------------------------------------------------------------------------------- 1 | import Breadcrumb from './breadcrumb.vue' 2 | import BreadcrumbItem from './breadcrumb-item.vue' 3 | 4 | export { Breadcrumb, BreadcrumbItem } 5 | 6 | export default Breadcrumb 7 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/button/index.js: -------------------------------------------------------------------------------- 1 | import Button from './button' 2 | import ButtonGroup from './button-group' 3 | 4 | Button.Group = ButtonGroup 5 | export { Button, ButtonGroup } 6 | export default Button 7 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/checkbox/index.js: -------------------------------------------------------------------------------- 1 | import Checkbox from './checkbox.vue' 2 | import CheckboxGroup from './checkbox-group.vue' 3 | 4 | export { Checkbox, CheckboxGroup } 5 | 6 | export default Checkbox 7 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/common/sideBar.vue: -------------------------------------------------------------------------------- 1 | 15 | 30 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/date-picker/index.js: -------------------------------------------------------------------------------- 1 | import DatePicker from './picker/date-picker' 2 | import TimePicker from './picker/time-picker' 3 | import TimeSelect from './picker/time-select' 4 | 5 | export { DatePicker, TimePicker, TimeSelect } 6 | export default DatePicker 7 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/date-picker/picker/date-picker.js: -------------------------------------------------------------------------------- 1 | import Picker from '../picker' 2 | import DatePanel from '../panel/date' 3 | import DateRangePanel from '../panel/date-range' 4 | import Config from '../../../config' 5 | 6 | const getPanel = function (type) { 7 | if (type === 'daterange' || type === 'datetimerange') { 8 | return DateRangePanel 9 | } 10 | return DatePanel 11 | } 12 | 13 | export default { 14 | mixins: [Picker], 15 | 16 | name: `${Config.namePrefix}DatePicker`, 17 | 18 | props: { 19 | type: { 20 | type: String, 21 | default: 'date' 22 | }, 23 | timeArrowControl: Boolean 24 | }, 25 | 26 | watch: { 27 | type (type) { 28 | if (this.picker) { 29 | this.unmountPicker() 30 | this.panel = getPanel(type) 31 | this.mountPicker() 32 | } else { 33 | this.panel = getPanel(type) 34 | } 35 | } 36 | }, 37 | 38 | created () { 39 | this.panel = getPanel(this.type) 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/date-picker/picker/time-select.js: -------------------------------------------------------------------------------- 1 | import Picker from '../picker' 2 | import Panel from '../panel/time-select' 3 | import Config from '../../../config' 4 | 5 | export default { 6 | mixins: [Picker], 7 | 8 | name: `${Config.namePrefix}TimeSelect`, 9 | 10 | componentName: `${Config.namePrefix}TimeSelect`, 11 | 12 | props: { 13 | type: { 14 | type: String, 15 | default: 'time-select' 16 | } 17 | }, 18 | 19 | beforeCreate () { 20 | this.panel = Panel 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/dialog/index.js: -------------------------------------------------------------------------------- 1 | import Dialog from './dialog.vue' 2 | import StatusDialog from './status-dialog' 3 | 4 | export { Dialog, StatusDialog } 5 | 6 | export default Dialog 7 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/dropdown/dropdown-menu.vue: -------------------------------------------------------------------------------- 1 | 4 | 15 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/dropdown/index.js: -------------------------------------------------------------------------------- 1 | import Dropdown from './dropdown.vue' 2 | import DropdownMenu from './dropdown-menu.vue' 3 | import DropdownItem from './dropdown-item.vue' 4 | 5 | Dropdown.Menu = DropdownMenu 6 | Dropdown.Item = DropdownItem 7 | 8 | export { Dropdown, DropdownMenu, DropdownItem } 9 | 10 | export default Dropdown 11 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/form/index.js: -------------------------------------------------------------------------------- 1 | import Form from './form' 2 | import FormItem from './form-item' 3 | 4 | export { Form, FormItem } 5 | 6 | export default Form 7 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/grid/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row.vue' 2 | import Col from './col.vue' 3 | 4 | export { Row, Col } 5 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/icon/index.js: -------------------------------------------------------------------------------- 1 | import Icon from './icon.vue' 2 | 3 | export default Icon 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/input/index.js: -------------------------------------------------------------------------------- 1 | import Input from './input.vue' 2 | 3 | export default Input 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/layout/container.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 32 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/layout/content.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/layout/footer.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/layout/header.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/layout/index.js: -------------------------------------------------------------------------------- 1 | import Container from './container.vue' 2 | import Header from './header.vue' 3 | import Content from './content.vue' 4 | import Footer from './footer.vue' 5 | import Sider from './sider.vue' 6 | 7 | export { Container, Header, Content, Footer, Sider } 8 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/layout/sider.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/loading/loading.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Loading from './loading.vue' 3 | import Config from '../../config' 4 | 5 | Loading.newInstance = properties => { 6 | const _props = properties || {} 7 | const Instance = new Vue({ 8 | data: _props, 9 | render (h) { 10 | return h(Loading, { 11 | props: _props 12 | }) 13 | } 14 | }) 15 | const component = Instance.$mount() 16 | document.body.appendChild(component.$el) 17 | const loading = Instance.$children[0] 18 | 19 | return { 20 | update (options) { 21 | if ('percent' in options) { 22 | loading.percent = options.percent 23 | } 24 | if ('show' in options) { 25 | loading.show = options.show 26 | } 27 | }, 28 | component: loading, 29 | destroy () { 30 | document.body.removeChild(document.getElementsByClassName(`${Config.clsPrefix}loading`)[0]) 31 | } 32 | } 33 | } 34 | 35 | export default Loading 36 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/menu/index.js: -------------------------------------------------------------------------------- 1 | import Menu from './menu.vue' 2 | import MenuGroup from './menu-group.vue' 3 | import MenuItem from './menu-item.vue' 4 | import Submenu from './submenu.vue' 5 | 6 | Menu.Group = MenuGroup 7 | Menu.Item = MenuItem 8 | Menu.Sub = Submenu 9 | 10 | export { Menu, MenuItem, MenuGroup, Submenu } 11 | 12 | export default Menu 13 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/menu/menu-group.vue: -------------------------------------------------------------------------------- 1 | 7 | 34 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/menu/mixin.js: -------------------------------------------------------------------------------- 1 | import Config from '../../config' 2 | import { findComponentUpward, findComponentsUpward } from '../../utils/assist' 3 | export default { 4 | data () { 5 | return { 6 | menu: findComponentUpward(this, `${Config.namePrefix}Menu`) 7 | } 8 | }, 9 | computed: { 10 | hasParentSubmenu () { 11 | return !!findComponentUpward(this, `${Config.namePrefix}Submenu`) 12 | }, 13 | parentSubmenuNum () { 14 | return findComponentsUpward(this, `${Config.namePrefix}Submenu`).length 15 | }, 16 | mode () { 17 | return this.menu.mode 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/message/index.js: -------------------------------------------------------------------------------- 1 | import Message from './message.js' 2 | 3 | export default Message 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/notification/index.js: -------------------------------------------------------------------------------- 1 | import Notification from './notification.js' 2 | 3 | export default Notification 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/pagination/index.js: -------------------------------------------------------------------------------- 1 | import Pagination from './pagination.vue' 2 | 3 | export default Pagination 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/radio/index.js: -------------------------------------------------------------------------------- 1 | import Radio from './radio.vue' 2 | import RadioGroup from './radio-group.vue' 3 | 4 | export { Radio, RadioGroup } 5 | 6 | export default Radio 7 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/scrollbar/index.js: -------------------------------------------------------------------------------- 1 | import Scrollbar from './main' 2 | 3 | export default Scrollbar 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/scrollbar/util.js: -------------------------------------------------------------------------------- 1 | export const BAR_MAP = { 2 | vertical: { 3 | offset: 'offsetHeight', 4 | scroll: 'scrollTop', 5 | scrollSize: 'scrollHeight', 6 | size: 'height', 7 | key: 'vertical', 8 | axis: 'Y', 9 | client: 'clientY', 10 | direction: 'top' 11 | }, 12 | horizontal: { 13 | offset: 'offsetWidth', 14 | scroll: 'scrollLeft', 15 | scrollSize: 'scrollWidth', 16 | size: 'width', 17 | key: 'horizontal', 18 | axis: 'X', 19 | client: 'clientX', 20 | direction: 'left' 21 | } 22 | } 23 | 24 | export function renderThumbStyle ({ move, size, bar }) { 25 | const style = {} 26 | const translate = `translate${bar.axis}(${move}%)` 27 | 28 | style[bar.size] = size 29 | style.transform = translate 30 | style.msTransform = translate 31 | style.webkitTransform = translate 32 | 33 | return style 34 | }; 35 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/select/functional-options.vue: -------------------------------------------------------------------------------- 1 | 28 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/select/index.js: -------------------------------------------------------------------------------- 1 | import Select from './select.vue' 2 | import Option from './option.vue' 3 | import OptionGroup from './option-group.vue' 4 | 5 | export {Select, Option, OptionGroup} 6 | 7 | export default Select 8 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/spin/index.js: -------------------------------------------------------------------------------- 1 | import Spin from './spin.js' 2 | 3 | let spinInstance 4 | 5 | function getSpinInstance (render = undefined) { 6 | spinInstance = spinInstance || Spin.newInstance({ 7 | render: render 8 | }) 9 | 10 | return spinInstance 11 | } 12 | 13 | function loading (options) { 14 | const render = ('render' in options) ? options.render : undefined 15 | let instance = getSpinInstance(render) 16 | 17 | instance.show(options) 18 | } 19 | 20 | Spin.show = function (props = {}) { 21 | return loading(props) 22 | } 23 | Spin.hide = function () { 24 | if (!spinInstance) return false 25 | 26 | const instance = getSpinInstance() 27 | 28 | instance.remove(() => { 29 | spinInstance = null 30 | }) 31 | } 32 | 33 | export default Spin 34 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/step/index.js: -------------------------------------------------------------------------------- 1 | import Step from './step.vue' 2 | import Steps from './steps.vue' 3 | 4 | export { Step, Steps } 5 | 6 | export default Step 7 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/switch/index.js: -------------------------------------------------------------------------------- 1 | import Switch from './switch.vue' 2 | 3 | export default Switch 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/tab-pane/index.js: -------------------------------------------------------------------------------- 1 | import TabPane from './tab-pane.vue' 2 | 3 | export default TabPane 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/table/expand.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'TableExpand', 3 | functional: true, 4 | props: { 5 | row: Object, 6 | render: Function, 7 | index: Number, 8 | column: { 9 | type: Object, 10 | default: null 11 | } 12 | }, 13 | render: (h, ctx) => { 14 | const params = { 15 | row: ctx.props.row, 16 | index: ctx.props.index 17 | } 18 | if (ctx.props.column) params.column = ctx.props.column 19 | return ctx.props.render(h, params) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/table/index.js: -------------------------------------------------------------------------------- 1 | import Table from './table.vue' 2 | 3 | export default Table 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/table/render.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'Cell', 3 | functional: true, 4 | props: { 5 | item: Object, 6 | column: Object, 7 | index: Number, 8 | render: Function 9 | }, 10 | render: (h, ctx) => { 11 | const params = { 12 | item: ctx.props.item, 13 | index: ctx.props.index 14 | } 15 | if (ctx.props.column) { 16 | params.column = ctx.props.column 17 | } 18 | return ctx.props.render(h, params) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/tabs/index.js: -------------------------------------------------------------------------------- 1 | import Tabs from './tabs.vue' 2 | 3 | export default Tabs 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/tag/index.js: -------------------------------------------------------------------------------- 1 | import Tag from './tag.vue'; 2 | export default Tag; 3 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/tooltip/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed under the Apache License, Version 2.0 (the "License"); 3 | * you may not use this file except in compliance with the License. 4 | * You may obtain a copy of the License at 5 | * 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Unless required by applicable law or agreed to in writing, software 9 | * distributed under the License is distributed on an "AS IS" BASIS, 10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | * See the License for the specific language governing permissions and 12 | * limitations under the License. 13 | */ 14 | import Tooltip from './tooltip' 15 | 16 | export default Tooltip 17 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/tree/index.js: -------------------------------------------------------------------------------- 1 | import Tree from './src/tree.vue' 2 | 3 | export default Tree 4 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/components/tree/src/model/util.js: -------------------------------------------------------------------------------- 1 | export const NODE_KEY = '$treeNodeId' 2 | 3 | export const markNodeData = function (node, data) { 4 | if (!data || data[NODE_KEY]) return 5 | Object.defineProperty(data, NODE_KEY, { 6 | value: node.id, 7 | enumerable: false, 8 | configurable: false, 9 | writable: false 10 | }) 11 | } 12 | 13 | export const getNodeKey = function (key, data) { 14 | if (!key) return data[NODE_KEY] 15 | return data[key] 16 | } 17 | 18 | export const findNearestComponent = (element, componentName) => { 19 | let target = element 20 | while (target && target.tagName !== 'BODY') { 21 | if (target.__vue__ && target.__vue__.$options.name === componentName) { 22 | return target.__vue__ 23 | } 24 | target = target.parentNode 25 | } 26 | return null 27 | } 28 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/config/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | clsPrefix: 'dui-', 3 | namePrefix: 'D', 4 | localePrefix: 'dui' 5 | } 6 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/directives/repeat-click.js: -------------------------------------------------------------------------------- 1 | import {once, on} from '../utils/assist' 2 | 3 | export default { 4 | bind (el, binding, vnode) { 5 | let interval = null 6 | let startTime 7 | const handler = () => vnode.context[binding.expression].apply() 8 | const clear = () => { 9 | if (new Date() - startTime < 100) { 10 | handler() 11 | } 12 | clearInterval(interval) 13 | interval = null 14 | } 15 | 16 | on(el, 'mousedown', (e) => { 17 | if (e.button !== 0) return 18 | startTime = new Date() 19 | once(document, 'mouseup', clear) 20 | clearInterval(interval) 21 | interval = setInterval(handler, 100) 22 | }) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/i18n/langs.json: -------------------------------------------------------------------------------- 1 | { 2 | "zh-CN": "中文", 3 | "en-US": "English" 4 | } 5 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/i18n/views.json: -------------------------------------------------------------------------------- 1 | { 2 | "zh-CN": { 3 | "common": { 4 | "operate": "操作" 5 | }, 6 | "application": { 7 | "placeholder1": "请输入英文名/中文名", 8 | "syncApp": "同步应用", 9 | "colData": { 10 | "id": "ID", 11 | "code": "英文名", 12 | "system": "来源[应用来源/系统名称/应用代码]", 13 | "btnDetail": "详情", 14 | "btnDelete": "删除", 15 | "description": "描述" 16 | } 17 | } 18 | }, 19 | "en-US": { 20 | "common": { 21 | "operate": "Operation" 22 | }, 23 | "application": { 24 | "placeholder1": "Please input the name", 25 | "syncApp": "Sync App", 26 | "colData": { 27 | "id": "ID", 28 | "code": "Code", 29 | "system": "Source[appSource/sysName/appCode]", 30 | "btnDetail": "Show Detail", 31 | "btnDelete": "Delete", 32 | "description": "Description" 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/locale/lang.js: -------------------------------------------------------------------------------- 1 | // using with vue-i18n in CDN 2 | /* eslint-disable */ 3 | import Vue from 'vue'; 4 | 5 | const isServer = Vue.prototype.$isServer; 6 | 7 | export default function (lang) { 8 | if (!isServer) { 9 | if (typeof window.dui !== 'undefined') { 10 | if (!('langs' in dui)) { 11 | dui.langs = {}; 12 | } 13 | dui.langs[lang.i.locale] = lang; 14 | } 15 | } 16 | }; 17 | /* eslint-enable */ 18 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import './assets/css/dui.css' 4 | import './assets/css/iconfont.css' 5 | import './assets/css/iconfont.js' 6 | import Promise from 'es6-promise' 7 | import Vue from 'vue' 8 | import store from './store' 9 | import router from './router' 10 | import App from './App' 11 | import DUI from './components' 12 | import './filter' // 过滤器 13 | 14 | import i18n from './i18n' 15 | 16 | DUI.i18n((key, value) => i18n.t(key, value)) 17 | 18 | Promise.polyfill() 19 | Vue.use(DUI) 20 | 21 | Vue.config.productionTip = false 22 | 23 | /* eslint-disable no-new */ 24 | new Vue({ 25 | el: '#app', 26 | router, 27 | store, 28 | i18n, 29 | components: { App }, 30 | template: '' 31 | }) 32 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/mixins/assist.js: -------------------------------------------------------------------------------- 1 | export function lableObjfromArrStr (arrStr) { 2 | let arr = typeof(arrStr) === 'string' ? JSON.parse(arrStr) : arrStr; 3 | let obj = {}; 4 | for(let i in arr){ 5 | for(let k in arr[i]){ 6 | if(arr[i].hasOwnProperty(k)){ 7 | obj[k] = arr[i][k] 8 | } 9 | } 10 | } 11 | return obj; 12 | } 13 | 14 | export function lableStrFromObj(obj){ 15 | let arr = []; 16 | let temp; 17 | for(let k in obj){ 18 | temp = {} 19 | temp[k] = obj[k]; 20 | arr.push(temp) 21 | } 22 | return JSON.stringify(arr); 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/mixins/focus.js: -------------------------------------------------------------------------------- 1 | export default function (ref) { 2 | return { 3 | methods: { 4 | focus () { 5 | this.$refs[ref].focus() 6 | } 7 | } 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/mixins/locale.js: -------------------------------------------------------------------------------- 1 | import {t} from '../locale' 2 | 3 | export default { 4 | methods: { 5 | t (...args) { 6 | return t.apply(this, args) 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/utils/cookie.js: -------------------------------------------------------------------------------- 1 | export default { 2 | get: function (name) { 3 | let r = new RegExp('(^|;|\\s+)' + name + '=([^;]*)(;|$)') 4 | let m = document.cookie.match(r) 5 | return (!m ? null : unescape(m[2])) 6 | }, 7 | add: function (name, v, path, expire, domain) { 8 | var s = name + '=' + escape(v) + '; path=' + (path || '/') + // 默认根目录 9 | (domain ? ('; domain=' + domain) : '') 10 | if (expire > 0) { 11 | var d = new Date() 12 | d.setTime(d.getTime() + expire * 1000) 13 | s += ';expires=' + d.toGMTString() 14 | } 15 | document.cookie = s 16 | }, 17 | del: function (name, path, domain) { 18 | if (arguments.length === 2) { 19 | domain = path 20 | path = '/' 21 | } 22 | document.cookie = name + '=;path=' + path + ';' + (domain ? ('domain=' + domain + ';') : '') + 'expires=Thu, 01-Jan-70 00:00:01 GMT' 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/utils/loading.js: -------------------------------------------------------------------------------- 1 | // import { Loading } from 'element-ui' 2 | // let LoadingInstance 3 | // 4 | // export default { 5 | // show () { 6 | // LoadingInstance = Loading.service() 7 | // }, 8 | // hide () { 9 | // if (LoadingInstance != null) { 10 | // LoadingInstance.close() 11 | // } 12 | // } 13 | // } 14 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/src/utils/scroll-into-view.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | 3 | export default function scrollIntoView (container, selected) { 4 | if (Vue.prototype.$isServer) return 5 | 6 | if (!selected) { 7 | container.scrollTop = 0 8 | return 9 | } 10 | 11 | const offsetParents = [] 12 | let pointer = selected.offsetParent 13 | while (pointer && container !== pointer && container.contains(pointer)) { 14 | offsetParents.push(pointer) 15 | pointer = pointer.offsetParent 16 | } 17 | const top = selected.offsetTop + offsetParents.reduce((prev, curr) => (prev + curr.offsetTop), 0) 18 | const bottom = top + selected.offsetHeight 19 | const viewRectTop = container.scrollTop 20 | const viewRectBottom = viewRectTop + container.clientHeight 21 | 22 | if (top < viewRectTop) { 23 | container.scrollTop = top 24 | } else if (bottom > viewRectBottom) { 25 | container.scrollTop = bottom - container.clientHeight 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/static/.gitkeep -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-portal/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jd-opensource/joyqueue/a88914c55f27728ae7234fc457488ca2e2ad4ee0/joyqueue-console/joyqueue-portal/static/favicon.ico -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-web/joyqueue-web-handler/src/main/resources/META-INF/services/com.jd.laf.binding.binder.Binder: -------------------------------------------------------------------------------- 1 | org.joyqueue.handler.binder.GenericValueBinder 2 | org.joyqueue.handler.binder.OperatorBinder 3 | org.joyqueue.handler.binder.PageQueryBinder -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-web/joyqueue-web-handler/src/main/resources/META-INF/services/com.jd.laf.web.vertx.MessageHandler: -------------------------------------------------------------------------------- 1 | org.joyqueue.handler.message.AuditLogMessageHandler 2 | org.joyqueue.handler.message.OperLogMessageHandler -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-web/joyqueue-web-handler/src/main/resources/META-INF/services/com.jd.laf.web.vertx.RoutingHandler: -------------------------------------------------------------------------------- 1 | org.joyqueue.handler.routing.validate.ValidateAdminHandler 2 | org.joyqueue.handler.routing.validate.ValidateApplicationHandler 3 | org.joyqueue.handler.routing.validate.ValidateApplicationMemberHandler 4 | org.joyqueue.handler.routing.validate.ValidateApplicationOwnerHandler 5 | org.joyqueue.handler.routing.validate.ValidateApplicationOfHeaderHandler 6 | org.joyqueue.handler.routing.validate.ValidateTokenOfApplicationHandler 7 | org.joyqueue.handler.routing.validate.ValidateAppTokenHandler 8 | org.joyqueue.handler.routing.AdminLoginHandler 9 | org.joyqueue.handler.routing.GetLoginUserHandler -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-web/joyqueue-web-handler/src/main/resources/META-INF/services/com.jd.laf.web.vertx.message.CustomCodec: -------------------------------------------------------------------------------- 1 | org.joyqueue.handler.message.AuditLogMessageCodec 2 | org.joyqueue.handler.message.OperLogMessageCodec -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-web/joyqueue-web-handler/src/main/resources/META-INF/services/com.jd.laf.web.vertx.render.Render: -------------------------------------------------------------------------------- 1 | org.joyqueue.handler.render.PropertiesRender -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-web/joyqueue-web-handler/src/main/resources/META-INF/services/com.jd.laf.web.vertx.response.ErrorSupplier: -------------------------------------------------------------------------------- 1 | org.joyqueue.handler.error.ConfigExceptionSupplier 2 | org.joyqueue.handler.error.HttpStatusExceptionSupplier 3 | org.joyqueue.handler.error.SQLExceptionSupplier 4 | org.joyqueue.handler.error.ThrowableSupplier 5 | org.joyqueue.handler.error.ValidationExceptionSupplier -------------------------------------------------------------------------------- /joyqueue-console/joyqueue-web/joyqueue-web-springboot-starter/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | org.joyqueue.springboot.starter.ServiceAutoConfiguration,\ 3 | org.joyqueue.springboot.starter.MsgQueryConfiguration -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/console-consumer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright 2019 The JoyQueue Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | 19 | exec $(dirname $0)/run-class.sh org.joyqueue.tools.ConsoleConsumer "$@" -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/console-producer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright 2019 The JoyQueue Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | 19 | exec $(dirname $0)/run-class.sh org.joyqueue.tools.ConsoleProducer "$@" -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/server-start-log.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright 2019 The JoyQueue Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | 19 | BASEDIR=`dirname $0`/.. 20 | BASEDIR=`(cd "$BASEDIR"; pwd)` 21 | default_log_file='info.log' 22 | if [ -z $LOGFILE ];then 23 | LOGFILE=$BASEDIR/$default_log_file 24 | fi 25 | echo "log file:$LOGFILE" 26 | exec $(dirname $0)/server-start.sh "$@" >$LOGFILE 2 >& 1 27 | 28 | 29 | -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/server-start-nohup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright 2019 The JoyQueue Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | 19 | exec nohup $(dirname $0)/server-start.sh "$@" >/dev/null 2>/dev/null & 20 | echo $! > joyqueue.pid -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/store-recover.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright 2019 The JoyQueue Authors. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | 19 | exec $(dirname $0)/run-class.sh org.joyqueue.store.cli.RecoverStore "$@" -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/windows/console-consumer.bat: -------------------------------------------------------------------------------- 1 | @REM 2 | @REM Copyright 2019 The JoyQueue Authors. 3 | @REM 4 | @REM Licensed under the Apache License, Version 2.0 (the "License"); 5 | @REM you may not use this file except in compliance with the License. 6 | @REM You may obtain a copy of the License at 7 | @REM 8 | @REM http://www.apache.org/licenses/LICENSE-2.0 9 | @REM 10 | @REM Unless required by applicable law or agreed to in writing, software 11 | @REM distributed under the License is distributed on an "AS IS" BASIS, 12 | @REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @REM See the License for the specific language governing permissions and 14 | @REM limitations under the License. 15 | @REM 16 | 17 | 18 | "%~dp0run-class.bat" org.joyqueue.tools.ConsoleConsumer %* 19 | -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/windows/console-producer.bat: -------------------------------------------------------------------------------- 1 | @REM 2 | @REM Copyright 2019 The JoyQueue Authors. 3 | @REM 4 | @REM Licensed under the Apache License, Version 2.0 (the "License"); 5 | @REM you may not use this file except in compliance with the License. 6 | @REM You may obtain a copy of the License at 7 | @REM 8 | @REM http://www.apache.org/licenses/LICENSE-2.0 9 | @REM 10 | @REM Unless required by applicable law or agreed to in writing, software 11 | @REM distributed under the License is distributed on an "AS IS" BASIS, 12 | @REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @REM See the License for the specific language governing permissions and 14 | @REM limitations under the License. 15 | @REM 16 | 17 | 18 | "%~dp0run-class.bat" org.joyqueue.tools.ConsoleProducer %* 19 | -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/windows/server-start.bat: -------------------------------------------------------------------------------- 1 | @REM 2 | @REM Copyright 2019 The JoyQueue Authors. 3 | @REM 4 | @REM Licensed under the Apache License, Version 2.0 (the "License"); 5 | @REM you may not use this file except in compliance with the License. 6 | @REM You may obtain a copy of the License at 7 | @REM 8 | @REM http://www.apache.org/licenses/LICENSE-2.0 9 | @REM 10 | @REM Unless required by applicable law or agreed to in writing, software 11 | @REM distributed under the License is distributed on an "AS IS" BASIS, 12 | @REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @REM See the License for the specific language governing permissions and 14 | @REM limitations under the License. 15 | @REM 16 | 17 | 18 | "%~dp0run-class.bat" org.joyqueue.broker.Launcher -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/windows/server-stop.bat: -------------------------------------------------------------------------------- 1 | @REM 2 | @REM Copyright 2019 The JoyQueue Authors. 3 | @REM 4 | @REM Licensed under the Apache License, Version 2.0 (the "License"); 5 | @REM you may not use this file except in compliance with the License. 6 | @REM You may obtain a copy of the License at 7 | @REM 8 | @REM http://www.apache.org/licenses/LICENSE-2.0 9 | @REM 10 | @REM Unless required by applicable law or agreed to in writing, software 11 | @REM distributed under the License is distributed on an "AS IS" BASIS, 12 | @REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @REM See the License for the specific language governing permissions and 14 | @REM limitations under the License. 15 | @REM 16 | 17 | 18 | wmic process where (commandline like "%%Launcher%%" and not name="wmic.exe") delete 19 | rem ps ax | grep -i 'Launcher' | grep -v grep | awk '{print $1}' | xargs kill -SIGTERM 20 | -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-server/bin/windows/store-recover.bat: -------------------------------------------------------------------------------- 1 | @REM 2 | @REM Copyright 2019 The JoyQueue Authors. 3 | @REM 4 | @REM Licensed under the Apache License, Version 2.0 (the "License"); 5 | @REM you may not use this file except in compliance with the License. 6 | @REM You may obtain a copy of the License at 7 | @REM 8 | @REM http://www.apache.org/licenses/LICENSE-2.0 9 | @REM 10 | @REM Unless required by applicable law or agreed to in writing, software 11 | @REM distributed under the License is distributed on an "AS IS" BASIS, 12 | @REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @REM See the License for the specific language governing permissions and 14 | @REM limitations under the License. 15 | @REM 16 | 17 | 18 | "%~dp0run-class.bat" org.joyqueue.store.cli.RecoverStore %* -------------------------------------------------------------------------------- /joyqueue-distribution/joyqueue-distribution-web/bin/start-nohup.sh: -------------------------------------------------------------------------------- 1 | nohup $(dirname $0)/start.sh "$@" >/dev/null 2>/dev/null & 2 | echo $! > joyqueue-web.pid -------------------------------------------------------------------------------- /joyqueue-openmessaging/openmessaging-samples/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 The JoyQueue Authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | spring.oms.url=oms:joyqueue://test_app@127.0.0.1:50088/UNKNOWN 18 | spring.oms.attributes[ACCOUNT_KEY]=test_token 19 | 20 | #spring.oms.consumer.enable=false 21 | #spring.oms.producer.enable=false 22 | #spring.oms.interceptor.enable=false 23 | #spring.oms.producer.transaction.check.enable=false -------------------------------------------------------------------------------- /joyqueue-openmessaging/openmessaging-spring-boot/openmessaging-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | io.openmessaging.spring.boot.configuration.OMSAutoConfiguration -------------------------------------------------------------------------------- /joyqueue-openmessaging/openmessaging-spring-boot/openmessaging-spring-boot-starter/src/main/resources/META-INF/spring.provides: -------------------------------------------------------------------------------- 1 | provides: openmessaging-spring-boot-autoconfigure -------------------------------------------------------------------------------- /joyqueue-openmessaging/openmessaging-spring-cloud-stream-binder/src/main/resources/META-INF/spring.binders: -------------------------------------------------------------------------------- 1 | oms:io.openmessaging.spring.cloud.stream.binder.autoconfigure.OMSBinderAutoConfiguration 2 | -------------------------------------------------------------------------------- /joyqueue-openmessaging/openmessaging-spring-cloud-stream-binder/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | io.openmessaging.spring.cloud.stream.binder.autoconfigure.OMSComponent4BinderAutoConfiguration 3 | -------------------------------------------------------------------------------- /joyqueue-openmessaging/openmessaging-spring/src/main/resources/META-INF/spring.handlers: -------------------------------------------------------------------------------- 1 | http\://openmessaging.io/schema=io.openmessaging.spring.config.OMSNamespaceHandler -------------------------------------------------------------------------------- /joyqueue-openmessaging/openmessaging-spring/src/main/resources/META-INF/spring.schemas: -------------------------------------------------------------------------------- 1 | http\://openmessaging.io/schema/oms.xsd=/io/openmessaging/schema/oms.xsd -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-archive/joyqueue-archive-api/src/main/java/org/joyqueue/server/archive/store/model/Query.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.server.archive.store.model; 17 | 18 | /** 19 | * Created by chengzhiliang on 2018/12/4. 20 | */ 21 | public interface Query { 22 | 23 | T getQueryCondition(); 24 | } 25 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-archive/joyqueue-archive-hbase/src/main/resources/META-INF/services/org.joyqueue.server.archive.store.api.ArchiveStore: -------------------------------------------------------------------------------- 1 | org.joyqueue.server.archive.store.HBaseStore -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/archive/ArchiveUtils.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.broker.archive; 2 | 3 | /** 4 | * Common utils 5 | * 6 | **/ 7 | public class ArchiveUtils { 8 | 9 | /** 10 | * Message unique id 11 | **/ 12 | public static String messageId(String topic,short partition,long messageIndex){ 13 | return topic+partition+messageIndex; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/cluster/entry/ClusterNode.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.broker.cluster.entry; 2 | 3 | /** 4 | * ClusterNode 5 | * author: gaohaoxiang 6 | * date: 2020/3/23 7 | */ 8 | public class ClusterNode { 9 | 10 | private int leader; 11 | 12 | public ClusterNode() { 13 | 14 | } 15 | 16 | public ClusterNode(int leader) { 17 | this.leader = leader; 18 | } 19 | 20 | public int getLeader() { 21 | return leader; 22 | } 23 | 24 | public void setLeader(int leader) { 25 | this.leader = leader; 26 | } 27 | 28 | @Override 29 | public String toString() { 30 | return "ClusterNode{" + 31 | "leader=" + leader + 32 | '}'; 33 | } 34 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/config/Converts.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.config; 17 | 18 | /** 19 | * 参数转换 20 | */ 21 | public abstract class Converts extends com.jd.laf.extension.Converts { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/limit/RateLimitManager.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.limit; 17 | 18 | /** 19 | * RateLimitManager 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/5/17 23 | */ 24 | public interface RateLimitManager { 25 | 26 | RateLimiter getRateLimiter(String topic, String app, String type); 27 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/monitor/BrokerMonitorConsts.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.monitor; 17 | 18 | /** 19 | * BrokerMonitorConsts 20 | * 21 | * author: gaohaoxiang 22 | * date: 2018/10/15 23 | */ 24 | public class BrokerMonitorConsts { 25 | 26 | public static final int STAT_VERSION = 1; 27 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/monitor/converter/Converter.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.monitor.converter; 17 | 18 | import com.jd.laf.extension.Type; 19 | 20 | /** 21 | * @author lining11 22 | * Date: 2018/12/20 23 | */ 24 | public interface Converter extends Type { 25 | R convert(T t); 26 | } 27 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/monitor/model/BasePo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.monitor.model; 17 | 18 | import java.io.Serializable; 19 | 20 | /** 21 | * 基础po 22 | * 23 | * author: gaohaoxiang 24 | * date: 2018/10/12 25 | */ 26 | public abstract class BasePo implements Serializable { 27 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/network/command/GetPartitionGroupClusterRequest.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.broker.network.command; 2 | 3 | import org.joyqueue.network.command.CommandType; 4 | import org.joyqueue.network.transport.command.JoyQueuePayload; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | /** 10 | * GetPartitionGroupClusterRequest 11 | * author: gaohaoxiang 12 | * date: 2020/3/19 13 | */ 14 | public class GetPartitionGroupClusterRequest extends JoyQueuePayload { 15 | 16 | private Map> groups; 17 | 18 | public void setGroups(Map> groups) { 19 | this.groups = groups; 20 | } 21 | 22 | public Map> getGroups() { 23 | return groups; 24 | } 25 | 26 | @Override 27 | public int type() { 28 | return CommandType.GET_PARTITION_GROUP_CLUSTER_REQUEST; 29 | } 30 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/network/traffic/RequestTrafficPayload.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.network.traffic; 17 | 18 | /** 19 | * RequestTrafficPayload 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/5/16 23 | */ 24 | public interface RequestTrafficPayload extends TrafficPayload { 25 | 26 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/network/traffic/ResponseTrafficPayload.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.network.traffic; 17 | 18 | /** 19 | * ResponseTrafficPayload 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/5/16 23 | */ 24 | public interface ResponseTrafficPayload extends TrafficPayload { 25 | 26 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/network/traffic/TrafficType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.network.traffic; 17 | 18 | /** 19 | * TrafficType 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/5/16 23 | */ 24 | public interface TrafficType { 25 | 26 | String getTrafficType(); 27 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/retry/RetryRateLimiter.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.broker.retry; 2 | 3 | import org.joyqueue.broker.limit.RateLimiter; 4 | import org.joyqueue.event.MetaEvent; 5 | import org.joyqueue.toolkit.concurrent.EventListener; 6 | 7 | /** 8 | * Retry rate limiter interface 9 | * 10 | **/ 11 | public interface RetryRateLimiter extends EventListener { 12 | 13 | /** 14 | * Get or create a rate limiter 15 | * @return null indicate no limit 16 | **/ 17 | RateLimiter getOrCreate(String topic, String app); 18 | } 19 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/java/org/joyqueue/broker/store/DynamicStoreConfig.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.broker.store; 2 | 3 | import org.joyqueue.domain.TopicConfig; 4 | 5 | /** 6 | * Dynamic store config interface 7 | * 8 | **/ 9 | public interface DynamicStoreConfig { 10 | /** 11 | * Topic store max time of log 12 | * 13 | **/ 14 | long storeLogMaxTime(TopicConfig topicConfig); 15 | 16 | /** 17 | * Topic Keep unconsumed log 18 | * @return true if keep unconsumed log 19 | **/ 20 | boolean keepUnconsumed(TopicConfig topicConfig); 21 | } 22 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.consumer.Consume: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.consumer.ConsumeManager -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.consumer.MessageConverter: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.consumer.converter.JoyQueueToInternalMessageConverter 2 | org.joyqueue.broker.consumer.converter.KafkaToInternalMessageConverter -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.consumer.filter.MessageFilter: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.consumer.filter.FlagFilter -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.consumer.position.PositionStore: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.consumer.position.LocalFileStore -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.election.ElectionService: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.election.ElectionManager -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.limit.LimitRejectedStrategy: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.limit.support.BlockLimitRejectedStrategy 2 | org.joyqueue.broker.limit.support.DelayLimitRejectedStrategy 3 | org.joyqueue.broker.limit.support.ExceptionLimitRejectedStrategy 4 | org.joyqueue.broker.limit.support.NoneLimitRejectedStrategy -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.network.BrokerCommandHandler: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.handler.GetPartitionGroupClusterRequestHandler -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.network.codec.BrokerPayloadCodec: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.network.codec.GetPartitionGroupClusterRequestCodec 2 | org.joyqueue.broker.network.codec.GetPartitionGroupClusterResponseCodec -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.network.protocol.ProtocolCommandHandlerFilter: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.limit.filter.LimitFilter -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.producer.Produce: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.producer.ProduceManager -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.broker.store.StoreCleaningStrategy: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.store.FixedSizeStoreCleaningStrategy 2 | org.joyqueue.broker.store.IntervalTimeStoreCleaningStrategy 3 | org.joyqueue.broker.store.GlobalStorageLimitCleaningStrategy -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.security.Authentication: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.security.AppTokenAuthentication -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.store.StoreService: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.store.ClusterStoreService -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.producer.ProducerConfigKey 2 | org.joyqueue.broker.limit.config.LimitConfigKey 3 | org.joyqueue.broker.election.ElectionConfigKey 4 | org.joyqueue.broker.coordinator.config.CoordinatorConfigKey 5 | org.joyqueue.broker.consumer.ConsumeConfigKey 6 | org.joyqueue.broker.config.BrokerStoreConfig$BrokerStoreConfigKey 7 | org.joyqueue.broker.monitor.config.BrokerMonitorConfigKey 8 | org.joyqueue.broker.archive.ArchiveConfigKey 9 | org.joyqueue.broker.manage.config.BrokerManageConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertySupplier: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.protocol.config.Configuration -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/joyqueue/banner: -------------------------------------------------------------------------------- 1 | _ ___ 2 | | | ___ _ _ / _ \ _ _ ___ _ _ ___ 3 | _ | |/ _ \| | | | | | | | | |/ _ \ | | |/ _ \ 4 | | |_| | (_) | |_| | |_| | |_| | __/ |_| | __/ 5 | \___/ \___/ \__, |\__\_\\__,_|\___|\__,_|\___| 6 | |___/ 7 | 8 | ver. {version} 9 | 10 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/joyqueue/version.properties: -------------------------------------------------------------------------------- 1 | version=${project.version} -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/main/resources/manage/base_routing.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 9 | 11 | 13 | 14 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-core/src/test/java/org/joyqueue/broker/store/StoreBaseTest.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.broker.store; 2 | 3 | import org.joyqueue.broker.config.BrokerConfig; 4 | import org.joyqueue.broker.config.Configuration; 5 | import org.joyqueue.broker.config.ConfigurationManager; 6 | /** 7 | * Base test for store test 8 | * 9 | **/ 10 | public class StoreBaseTest { 11 | 12 | 13 | public Configuration config() throws Exception{ 14 | ConfigurationManager configurationManager = new ConfigurationManager(new String[0]); 15 | configurationManager.start(); 16 | Configuration config= configurationManager.getConfiguration(); 17 | //build broker config 18 | BrokerConfig brokerConfig = new BrokerConfig(config); 19 | brokerConfig.getAndCreateDataPath(); 20 | return config; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/java/org/joyqueue/broker/kafka/KafkaContextAware.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.kafka; 17 | 18 | /** 19 | * KafkaContextAware 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/2/28 23 | */ 24 | public interface KafkaContextAware { 25 | 26 | void setKafkaContext(KafkaContext kafkaContext); 27 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/java/org/joyqueue/broker/kafka/command/SaslHandshakeRequest.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.broker.kafka.command; 2 | 3 | import org.joyqueue.broker.kafka.KafkaCommandType; 4 | 5 | /** 6 | * SaslHandshakeRequest 7 | * author: gaohaoxiang 8 | * date: 2020/4/9 9 | */ 10 | public class SaslHandshakeRequest extends KafkaRequestOrResponse { 11 | 12 | private String mechanism; 13 | 14 | public void setMechanism(String mechanism) { 15 | this.mechanism = mechanism; 16 | } 17 | 18 | public String getMechanism() { 19 | return mechanism; 20 | } 21 | 22 | @Override 23 | public int type() { 24 | return KafkaCommandType.SASL_HANDSHAKE.getCode(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/java/org/joyqueue/broker/kafka/coordinator/group/callback/LeaveCallback.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.kafka.coordinator.group.callback; 17 | 18 | @FunctionalInterface 19 | public interface LeaveCallback { 20 | 21 | void sendResponseCallback(short errorCode); 22 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/java/org/joyqueue/broker/kafka/coordinator/transaction/domain/TransactionDomain.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.kafka.coordinator.transaction.domain; 17 | 18 | /** 19 | * TransactionDomain 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/4/19 23 | */ 24 | public abstract class TransactionDomain { 25 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/java/org/joyqueue/broker/kafka/manage/KafkaManageService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.kafka.manage; 17 | 18 | /** 19 | * KafkaManageService 20 | * 21 | * author: gaohaoxiang 22 | * date: 2018/11/13 23 | */ 24 | public interface KafkaManageService extends KafkaGroupManageService { 25 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/java/org/joyqueue/broker/kafka/manage/KafkaMonitorService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.kafka.manage; 17 | 18 | /** 19 | * 20 | * author: gaohaoxiang 21 | * date: 2018/11/13 22 | */ 23 | public interface KafkaMonitorService { 24 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/java/org/joyqueue/broker/kafka/network/helper/KafkaSessionHelper.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.broker.kafka.network.helper; 2 | 3 | import org.joyqueue.network.transport.Transport; 4 | 5 | /** 6 | * KafkaSessionHelper 7 | * author: gaohaoxiang 8 | * date: 2020/4/10 9 | */ 10 | public class KafkaSessionHelper { 11 | 12 | private static final String IS_AUTH = "_IS_AUTH_"; 13 | 14 | public static void setIsAuth(Transport transport, boolean isAuth) { 15 | transport.attr().set(IS_AUTH, isAuth); 16 | } 17 | 18 | public static boolean isAuth(Transport transport) { 19 | Boolean isAuth = transport.attr().get(IS_AUTH); 20 | if (isAuth == null) { 21 | return false; 22 | } 23 | return isAuth; 24 | } 25 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/resources/META-INF/services/org.joyqueue.broker.consumer.MessageConverter: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.kafka.converter.JoyQueueToKafkaMessageConverter -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/resources/META-INF/services/org.joyqueue.network.protocol.ProtocolService: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.kafka.network.protocol.KafkaProtocol -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.kafka.config.KafkaConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/main/resources/manage/routing.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-kafka/src/test/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-monitor-pth/src/main/resources/META-INF/services/org.joyqueue.broker.monitor.converter.Converter: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.monitor.convert.PrometheusConvert -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-mqtt/src/main/java/org/joyqueue/broker/mqtt/MqttConsts.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.mqtt; 17 | 18 | /** 19 | * mqtt常量 20 | * @author majun 21 | */ 22 | public class MqttConsts { 23 | 24 | public static final String PROTOCOL_MQTT_TYPE = "mqtt"; 25 | public static final String PROTOCOL_MQTT_OVER_WEBSOCKET_TYPE = "mqtt_over_websocket"; 26 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-mqtt/src/main/java/org/joyqueue/broker/mqtt/handler/ExecutorsProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.mqtt.handler; 17 | 18 | import java.util.concurrent.ExecutorService; 19 | 20 | /** 21 | * @author majun8 22 | */ 23 | public interface ExecutorsProvider { 24 | 25 | ExecutorService getExecutorService(); 26 | } 27 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-mqtt/src/main/java/org/joyqueue/broker/mqtt/util/Selector.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.mqtt.util; 17 | 18 | /** 19 | * @author majun8 20 | */ 21 | public interface Selector { 22 | int select(String selector, int totalSize); 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-mqtt/src/main/resources/META-INF/services/org.joyqueue.broker.mqtt.handler.Handler: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.mqtt.handler.ConnectHandler 2 | org.joyqueue.broker.mqtt.handler.ConnectAckHandler 3 | org.joyqueue.broker.mqtt.handler.DisconnectHandler 4 | org.joyqueue.broker.mqtt.handler.PingReqHandler 5 | org.joyqueue.broker.mqtt.handler.PingRespHandler 6 | org.joyqueue.broker.mqtt.handler.SubscribeHandler 7 | org.joyqueue.broker.mqtt.handler.UnSubscribeHandler 8 | org.joyqueue.broker.mqtt.handler.PublishHandler 9 | org.joyqueue.broker.mqtt.handler.PublishAckHandler 10 | org.joyqueue.broker.mqtt.handler.PublishRecHandler 11 | org.joyqueue.broker.mqtt.handler.PublishRelHandler 12 | org.joyqueue.broker.mqtt.handler.PublishCompHandler -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-mqtt/src/main/resources/META-INF/services/org.joyqueue.network.protocol.ProtocolService: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.mqtt.protocol.MqttProtocol 2 | org.joyqueue.broker.mqtt.protocol.MqttOverWebsocketProtocol -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-mqtt/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.mqtt.config.MqttConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-protocol/src/main/java/org/joyqueue/broker/protocol/JoyQueueContextAware.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.broker.protocol; 17 | 18 | /** 19 | * JoyQueueContextAware 20 | * 21 | * author: gaohaoxiang 22 | * date: 2019/2/28 23 | */ 24 | public interface JoyQueueContextAware { 25 | 26 | void setJoyQueueContext(JoyQueueContext joyQueueContext); 27 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-protocol/src/main/resources/META-INF/services/org.joyqueue.broker.protocol.coordinator.assignment.PartitionAssignor: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.protocol.coordinator.assignment.support.NonePartitionAssignor 2 | org.joyqueue.broker.protocol.coordinator.assignment.support.PartitionGroupBalancePartitionAssignor -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-protocol/src/main/resources/META-INF/services/org.joyqueue.broker.protocol.network.codec.JoyQueuePayloadCodec: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.protocol.network.codec.FetchPartitionMessageRequestCodec 2 | org.joyqueue.broker.protocol.network.codec.FetchTopicMessageRequestCodec -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-protocol/src/main/resources/META-INF/services/org.joyqueue.network.protocol.ProtocolService: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.protocol.network.JoyQueueProtocol -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-protocol/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.broker.protocol.config.JoyQueueConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-broker-protocol/src/test/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-admin/src/main/java/org/joyqueue/nsr/AdminConfig.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.nsr; 17 | 18 | public class AdminConfig { 19 | public static final long TIMEOUT_MS=2000; 20 | } 21 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-admin/src/main/java/org/joyqueue/nsr/utils/HostProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.nsr.utils; 17 | 18 | public interface HostProvider { 19 | int size(); 20 | String next(long spinMs); 21 | void onConnected(); 22 | } 23 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/main/java/org/joyqueue/nsr/NameServiceAware.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.nsr; 17 | 18 | /** 19 | * @author wylixiaobin 20 | * Date: 2019/3/14 21 | */ 22 | public interface NameServiceAware { 23 | void setNameService(NameService nameService); 24 | } 25 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/main/java/org/joyqueue/nsr/ServiceProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.nsr; 17 | 18 | public interface ServiceProvider { 19 | T getService(Class clazz); 20 | } 21 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/main/java/org/joyqueue/nsr/message/MessageListener.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.nsr.message; 17 | 18 | import org.joyqueue.toolkit.concurrent.EventListener; 19 | 20 | /** 21 | * 消息监听器 22 | * 23 | * @param 24 | */ 25 | public interface MessageListener extends EventListener{ 26 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/main/resources/META-INF/services/org.joyqueue.nsr.NameService: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.nameservice.NameServiceWrapper 2 | org.joyqueue.nsr.nameservice.ThinNameService 3 | org.joyqueue.nsr.nameservice.ThinNameServer -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/main/resources/META-INF/services/org.joyqueue.nsr.ServiceProvider: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.support.DefaultServiceProvider -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/main/resources/META-INF/services/org.joyqueue.nsr.message.Messenger: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.message.support.DefaultMessenger -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/main/resources/META-INF/services/org.joyqueue.nsr.network.NsrCommandHandler: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.network.handler.NameServiceCommandHandler 2 | org.joyqueue.nsr.network.handler.PushNameServerEventHandler 3 | org.joyqueue.nsr.network.handler.GetAllMetadataRequestHandler -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/main/resources/META-INF/services/org.joyqueue.nsr.util.DCMatcher: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.util.IPRangeMatcher -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.config.NameServiceConfigKey 2 | org.joyqueue.nsr.config.NameServerConfigKey 3 | org.joyqueue.nsr.config.MessengerConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/test/java/org/joyqueue/nsr/MetaManagerTest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.nsr; 17 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-core/src/test/resources/META-INF/services/org.joyqueue.nsr.message.Messenger: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.TestMessenger -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-journalkeeper/src/main/java/org/joyqueue/nsr/journalkeeper/JournalkeeperConsts.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.nsr.journalkeeper; 17 | 18 | /** 19 | * JournalkeeperConsts 20 | * author: gaohaoxiang 21 | * date: 2019/9/6 22 | */ 23 | public class JournalkeeperConsts { 24 | 25 | public static final String TYPE = "journalkeeper"; 26 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-journalkeeper/src/main/java/org/joyqueue/nsr/journalkeeper/repository/JournalkeeperBaseRepository.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.nsr.journalkeeper.repository; 2 | 3 | import org.joyqueue.monitor.PointTracer; 4 | import org.joyqueue.nsr.journalkeeper.JournalkeeperBatchOperationContext; 5 | import org.joyqueue.nsr.sql.operator.BatchSQLOperator; 6 | import org.joyqueue.nsr.sql.operator.SQLOperator; 7 | import org.joyqueue.nsr.sql.repository.BaseRepository; 8 | 9 | /** 10 | * JournalkeeperBaseRepository 11 | * author: gaohaoxiang 12 | * date: 2020/8/14 13 | */ 14 | public class JournalkeeperBaseRepository extends BaseRepository { 15 | 16 | public JournalkeeperBaseRepository(SQLOperator sqlOperator, PointTracer tracer) { 17 | super(sqlOperator, tracer); 18 | } 19 | 20 | @Override 21 | protected BatchSQLOperator getBatchSQLOperator() { 22 | return JournalkeeperBatchOperationContext.getBatchSQLOperator(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-journalkeeper/src/main/resources/META-INF/services/org.joyqueue.nsr.InternalServiceProvider: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.journalkeeper.JournalkeeperInternalServiceProvider -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-journalkeeper/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.journalkeeper.config.JournalkeeperConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-sql/src/main/java/org/joyqueue/nsr/sql/domain/BaseDTO.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.nsr.sql.domain; 17 | 18 | /** 19 | * BaseDTO 20 | * author: gaohaoxiang 21 | * date: 2019/8/16 22 | */ 23 | public class BaseDTO { 24 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-sql/src/main/java/org/joyqueue/nsr/sql/operator/BatchSQLOperator.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.nsr.sql.operator; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * BatchSQLOperator 7 | * author: gaohaoxiang 8 | * date: 2020/8/12 9 | */ 10 | public interface BatchSQLOperator { 11 | 12 | void insert(String sql, Object... params); 13 | 14 | void update(String sql, Object... params); 15 | 16 | void delete(String sql, Object... params); 17 | 18 | List commit(); 19 | 20 | void rollback(); 21 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-sql/src/main/java/org/joyqueue/nsr/sql/operator/DataSourceFactory.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.nsr.sql.operator; 2 | 3 | import com.jd.laf.extension.Type; 4 | 5 | import javax.sql.DataSource; 6 | import java.util.Properties; 7 | 8 | /** 9 | * DataSourceFactory 10 | * author: gaohaoxiang 11 | * date: 2019/8/1 12 | */ 13 | public interface DataSourceFactory extends Type { 14 | 15 | DataSource createDataSource(Properties properties); 16 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-sql/src/main/java/org/joyqueue/nsr/sql/operator/ResultSet.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.nsr.sql.operator; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | /** 7 | * ResultSet 8 | * author: gaohaoxiang 9 | * date: 2020/8/12 10 | */ 11 | public class ResultSet { 12 | 13 | private List> rows; 14 | 15 | public ResultSet() { 16 | 17 | } 18 | 19 | public ResultSet(List> rows) { 20 | this.rows = rows; 21 | } 22 | 23 | public List> getRows() { 24 | return rows; 25 | } 26 | 27 | public void setRows(List> rows) { 28 | this.rows = rows; 29 | } 30 | 31 | @Override 32 | public String toString() { 33 | return "ResultSet{" + 34 | "rows=" + rows + 35 | '}'; 36 | } 37 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-sql/src/main/java/org/joyqueue/nsr/sql/operator/SQLOperator.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.nsr.sql.operator; 2 | 3 | /** 4 | * SQLOperator 5 | * author: gaohaoxiang 6 | * date: 2020/8/12 7 | */ 8 | public interface SQLOperator { 9 | 10 | Object insert(String sql, Object... params); 11 | 12 | int update(String sql, Object... params); 13 | 14 | int delete(String sql, Object... params); 15 | 16 | ResultSet query(String sql, Object... params); 17 | 18 | BatchSQLOperator beginBatch(); 19 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-sql/src/main/resources/META-INF/services/org.joyqueue.nsr.InternalServiceProvider: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.sql.SQLInternalServiceProvider -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-nsr/joyqueue-nsr-sql/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.nsr.sql.config.SQLConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-retry/joyqueue-retry-api/src/main/java/org/joyqueue/server/retry/model/RetryQueryConditionExt.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.server.retry.model; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Retry query extend 7 | * 8 | **/ 9 | public class RetryQueryConditionExt extends RetryQueryCondition { 10 | private List topics; 11 | 12 | public List getTopics() { 13 | return topics; 14 | } 15 | 16 | public void setTopics(List topics) { 17 | this.topics = topics; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-retry/joyqueue-retry-api/src/main/java/org/joyqueue/server/retry/model/SimpleBatchRetryMessage.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.server.retry.model; 2 | 3 | import java.util.List; 4 | 5 | public class SimpleBatchRetryMessage { 6 | private String topic; 7 | private String app; 8 | private List ids; 9 | 10 | public String getTopic() { 11 | return topic; 12 | } 13 | 14 | public void setTopic(String topic) { 15 | this.topic = topic; 16 | } 17 | 18 | public String getApp() { 19 | return app; 20 | } 21 | 22 | public void setApp(String app) { 23 | this.app = app; 24 | } 25 | 26 | public List getIds() { 27 | return ids; 28 | } 29 | 30 | public void setIds(List ids) { 31 | this.ids = ids; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-retry/joyqueue-retry-db/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.server.retry.db.config.DbRetryConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-retry/joyqueue-retry-h2/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.server.retry.h2.config.H2RetryConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-retry/joyqueue-retry-remote/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.server.retry.remote.config.RemoteRetryConfigKey -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-server-runtime/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-api/src/main/java/org/joyqueue/store/NoSuchPartitionGroupException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store; 17 | 18 | /** 19 | * @author liyue25 20 | * Date: 2018/9/27 21 | */ 22 | public class NoSuchPartitionGroupException extends RuntimeException { 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-api/src/main/java/org/joyqueue/store/RemovedPartitionGroupStore.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.store; 2 | 3 | /** 4 | * RemovedPartitionGroupStore 5 | * author: gaohaoxiang 6 | * date: 2020/10/28 7 | */ 8 | public interface RemovedPartitionGroupStore { 9 | 10 | /** 11 | * 获取Topic 12 | * @return Topic 13 | */ 14 | String getTopic(); 15 | 16 | /** 17 | * 获取Partition Group 序号 18 | * @return Partition Group 序号 19 | */ 20 | int getPartitionGroup(); 21 | 22 | /** 23 | * 物理删除最左文件 24 | * @return 25 | */ 26 | boolean physicalDeleteLeftFile(); 27 | 28 | /** 29 | * 物理删除所有文件,包括目录 30 | * @return 31 | */ 32 | boolean physicalDelete(); 33 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-api/src/main/java/org/joyqueue/store/event/StoreEvent.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.store.event; 2 | 3 | /** 4 | * StoreEvent 5 | * author: gaohaoxiang 6 | * date: 2020/3/20 7 | */ 8 | public abstract class StoreEvent { 9 | 10 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-api/src/main/java/org/joyqueue/store/event/StoreNodeEvent.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.store.event; 2 | 3 | /** 4 | * StoreNodeEvent 5 | * author: gaohaoxiang 6 | * date: 2020/3/20 7 | */ 8 | public abstract class StoreNodeEvent extends StoreEvent { 9 | 10 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/NoSuchPartitionGroupException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store; 17 | 18 | /** 19 | * @author liyue25 20 | * Date: 2018/9/27 21 | */ 22 | public class NoSuchPartitionGroupException extends RuntimeException { 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/PartialLogException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store; 17 | 18 | /** 19 | * @author liyue25 20 | * Date: 2019-01-29 21 | */ 22 | public class PartialLogException extends ReadException { 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/PartitionGroupExistsException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store; 17 | 18 | /** 19 | * @author liyue25 20 | * Date: 2018/9/26 21 | */ 22 | public class PartitionGroupExistsException extends RuntimeException { 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/StoreLockedException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store; 17 | 18 | /** 19 | * @author liyue25 20 | * Date: 2018/8/13 21 | */ 22 | public class StoreLockedException extends RuntimeException { 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/file/BufferAppender.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store.file; 17 | 18 | import java.nio.ByteBuffer; 19 | 20 | /** 21 | * @author liyue25 22 | * Date: 2019-01-07 23 | */ 24 | public interface BufferAppender { 25 | int append(T t, ByteBuffer dest); 26 | } 27 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/file/BufferReader.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store.file; 17 | 18 | import java.nio.ByteBuffer; 19 | 20 | /** 21 | * @author liyue25 22 | * Date: 2019-01-04 23 | */ 24 | public interface BufferReader { 25 | T read(ByteBuffer byteBuffer, int length); 26 | } 27 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/file/Timed.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store.file; 17 | 18 | public interface Timed { 19 | long lastAccessTime(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/index/BadIndexException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store.index; 17 | 18 | /** 19 | * 索引数据损坏 20 | * 21 | * @author liyue25 22 | * Date: 2018/8/16 23 | */ 24 | public class BadIndexException extends RuntimeException { 25 | } 26 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/index/InvalidIndicesException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store.index; 17 | 18 | /** 19 | * @author liyue25 20 | * Date: 2018/8/29 21 | */ 22 | public class InvalidIndicesException extends RuntimeException { 23 | InvalidIndicesException(String message) { 24 | super(message); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/nsm/VirtualThread.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store.nsm; 17 | 18 | /** 19 | * @author liyue25 20 | * Date: 2018-12-19 21 | */ 22 | public interface VirtualThread { 23 | boolean run() throws Exception; 24 | } 25 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/transaction/TransactionFileStore.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store.transaction; 17 | 18 | /** 19 | * @author liyue25 20 | * Date: 2018/10/10 21 | */ 22 | public class TransactionFileStore { 23 | } 24 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/utils/FileUtils.java: -------------------------------------------------------------------------------- 1 | package org.joyqueue.store.utils; 2 | 3 | import java.io.File; 4 | 5 | /** 6 | * FileUtils 7 | * author: gaohaoxiang 8 | * date: 2020/10/28 9 | */ 10 | public class FileUtils { 11 | 12 | public static boolean deleteFolder(File folder) { 13 | File[] files = folder.listFiles(); 14 | if (files != null) { 15 | for (File f : files) { 16 | if (f.isDirectory()) { 17 | deleteFolder(f); 18 | } else { 19 | if (!f.delete()) { 20 | } 21 | } 22 | } 23 | } 24 | return folder.delete(); 25 | } 26 | } -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/java/org/joyqueue/store/utils/Timed.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.store.utils; 17 | 18 | public interface Timed { 19 | long lastAccessTime(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/resources/META-INF/services/org.joyqueue.store.StoreService: -------------------------------------------------------------------------------- 1 | org.joyqueue.store.Store -------------------------------------------------------------------------------- /joyqueue-server/joyqueue-store/joyqueue-store-core/src/main/resources/META-INF/services/org.joyqueue.toolkit.config.PropertyDef: -------------------------------------------------------------------------------- 1 | org.joyqueue.store.StoreConfigKey -------------------------------------------------------------------------------- /toolkit/doc/src/main/java/org/joyqueue/toolkit/doc/Format.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.toolkit.doc; 17 | 18 | public interface Format { 19 | String format(String sequenceNum, T t); 20 | } 21 | -------------------------------------------------------------------------------- /toolkit/doc/src/main/java/org/joyqueue/toolkit/doc/HeuristicAutoTest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.toolkit.doc; 17 | 18 | import java.util.List; 19 | 20 | public interface HeuristicAutoTest { 21 | /** 22 | * test t 23 | **/ 24 | TestCase test(List paramClasses, T t) throws Exception; 25 | } 26 | -------------------------------------------------------------------------------- /toolkit/doc/src/main/java/org/joyqueue/toolkit/doc/MetaParser.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 The JoyQueue Authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package org.joyqueue.toolkit.doc; 17 | 18 | import java.util.Map; 19 | 20 | /** 21 | * parse meta data from file 22 | **/ 23 | public interface MetaParser { 24 | 25 | /** 26 | * meta resource location,eg. a package or file name 27 | **/ 28 | Map> parse(); 29 | } 30 | -------------------------------------------------------------------------------- /toolkit/doc/src/test/resources/auto_doc.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 The JoyQueue Authors. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | partitionGroup=0 18 | position=0 19 | partitionGroupId=0 20 | count=10 21 | timestamp=923e7937e932 22 | isFormat=true 23 | topics=["a","b"] 24 | length=100 25 | timeStamp=19395935 26 | index=0 27 | namespace=joyqueue 28 | app=test_app 29 | page=0 30 | partition=0 31 | file=abc 32 | pageSize=10 33 | path=xxxx 34 | topic=test_topic_1 35 | groupId=abc 36 | --------------------------------------------------------------------------------