From e922d6b97aad7335df2c8fba0cc210096a59362b Mon Sep 17 00:00:00 2001 From: yangjun Date: Fri, 31 Dec 2021 17:22:40 +0800 Subject: [PATCH] [ISSUE #670] fix checkstyle check fail (#680) fix checkstyle check fail --- README.md | 6 +- build.gradle | 2 +- .../rocketmq/controller/AdminController.java | 4 +- .../admin/rocketmq/handler/TopicsHandler.java | 12 +- .../rocketmq/response/TopicResponse.java | 6 +- .../admin/rocketmq/util/JsonUtils.java | 10 +- .../admin/rocketmq/util/NetUtils.java | 8 +- .../admin/rocketmq/util/RequestMapping.java | 18 +- .../rocketmq/util/UrlMappingPattern.java | 8 +- .../eventmesh/common/ThreadPoolFactory.java | 2 +- .../common/config/CommonConfiguration.java | 5 +- .../common/config/ConfigurationWrapper.java | 14 +- .../RandomLoadBalanceSelector.java | 5 +- .../eventmesh/common/loadbalance/Weight.java | 10 +- .../WeightRandomLoadBalanceSelector.java | 3 +- .../WeightRoundRobinLoadBalanceSelector.java | 5 +- .../common/protocol/SubscriptionItem.java | 10 +- .../common/protocol/http/HttpCommand.java | 30 +- .../protocol/http/body/BaseResponseBody.java | 4 +- .../common/protocol/http/body/Body.java | 4 +- .../body/client/HeartbeatRequestBody.java | 22 +- .../body/client/HeartbeatResponseBody.java | 9 +- .../http/body/client/RegRequestBody.java | 12 +- .../http/body/client/RegResponseBody.java | 9 +- .../body/client/SubscribeRequestBody.java | 12 +- .../body/client/SubscribeResponseBody.java | 9 +- .../http/body/client/UnRegRequestBody.java | 16 +- .../http/body/client/UnRegResponseBody.java | 9 +- .../body/client/UnSubscribeRequestBody.java | 12 +- .../body/client/UnSubscribeResponseBody.java | 9 +- .../body/message/PushMessageRequestBody.java | 26 +- .../body/message/PushMessageResponseBody.java | 9 +- .../body/message/ReplyMessageRequestBody.java | 26 +- .../message/ReplyMessageResponseBody.java | 9 +- .../message/SendMessageBatchRequestBody.java | 36 +- .../message/SendMessageBatchResponseBody.java | 9 +- .../SendMessageBatchV2RequestBody.java | 7 +- .../SendMessageBatchV2ResponseBody.java | 9 +- .../body/message/SendMessageRequestBody.java | 34 +- .../body/message/SendMessageResponseBody.java | 10 +- .../http/header/BaseRequestHeader.java | 7 +- .../http/header/BaseResponseHeader.java | 4 +- .../common/protocol/http/header/Header.java | 4 +- .../header/client/HeartbeatRequestHeader.java | 11 +- .../client/HeartbeatResponseHeader.java | 6 +- .../http/header/client/RegRequestHeader.java | 5 +- .../http/header/client/RegResponseHeader.java | 6 +- .../header/client/SubscribeRequestHeader.java | 5 +- .../client/SubscribeResponseHeader.java | 6 +- .../header/client/UnRegRequestHeader.java | 11 +- .../header/client/UnRegResponseHeader.java | 6 +- .../client/UnSubscribeRequestHeader.java | 5 +- .../client/UnSubscribeResponseHeader.java | 6 +- .../message/PushMessageRequestHeader.java | 9 +- .../message/ReplyMessageRequestHeader.java | 5 +- .../message/ReplyMessageResponseHeader.java | 6 +- .../SendMessageBatchRequestHeader.java | 5 +- .../SendMessageBatchResponseHeader.java | 6 +- .../SendMessageBatchV2RequestHeader.java | 5 +- .../SendMessageBatchV2ResponseHeader.java | 6 +- .../message/SendMessageRequestHeader.java | 5 +- .../message/SendMessageResponseHeader.java | 6 +- .../protocol/tcp/EventMeshClientInfo.java | 7 +- .../common/protocol/tcp/EventMeshMessage.java | 4 +- .../eventmesh/common/protocol/tcp/Header.java | 12 +- .../common/protocol/tcp/HeartBeatInfo.java | 12 +- .../common/protocol/tcp/Package.java | 2 + .../common/protocol/tcp/RedirectInfo.java | 9 +- .../common/protocol/tcp/RegisterInfo.java | 6 +- .../common/protocol/tcp/Subscription.java | 6 +- .../common/protocol/tcp/UnRegisterInfo.java | 12 +- .../common/protocol/tcp/UserAgent.java | 79 ++- .../common/protocol/tcp/codec/Codec.java | 21 +- .../eventmesh/common/utils/IPUtils.java | 8 +- .../common/utils/RandomStringUtils.java | 2 +- .../common/EventMeshMessageTest.java | 4 +- .../RandomLoadBalanceSelectorTest.java | 10 +- .../WeightRandomLoadBalanceSelectorTest.java | 12 +- ...ightRoundRobinLoadBalanceSelectorTest.java | 10 +- .../http/body/BaseResponseBodyTest.java | 5 +- .../http/header/BaseRequestHeaderTest.java | 7 +- .../http/header/BaseResponseHeaderTest.java | 5 +- .../client/AbstractRequestHeaderTest.java | 1 + .../client/AbstractResponseHeaderTest.java | 5 +- .../client/HeartbeatRequestHeaderTest.java | 4 +- .../client/HeartbeatResponseHeaderTest.java | 4 - .../header/client/RegRequestHeaderTest.java | 4 +- .../client/SubscribeRequestHeaderTest.java | 4 +- .../header/client/UnRegRequestHeaderTest.java | 4 +- .../client/UnSubscribeRequestHeaderTest.java | 4 +- .../message/PushMessageRequestHeaderTest.java | 9 +- .../PushMessageResponseHeaderTest.java | 5 +- .../ReplyMessageRequestHeaderTest.java | 9 +- .../ReplyMessageResponseHeaderTest.java | 5 +- .../common/protocol/tcp/codec/CodecTest.java | 17 +- .../common/utils/ThreadUtilsTest.java | 2 + .../test/resources/configuration.properties | 1 - .../apache/eventmesh/api/AbstractContext.java | 3 + .../eventmesh/api/RequestReplyCallback.java | 3 + .../connector/ConnectorResourceService.java | 6 +- .../admin/command/CreateTopicCommand.java | 2 +- .../cloudevent/RocketMQMessageFactory.java | 19 +- .../impl/RocketMQBinaryMessageReader.java | 4 +- .../cloudevent/impl/RocketMQHeaders.java | 4 +- .../impl/RocketMQMessageWriter.java | 6 +- .../rocketmq/config/ClientConfiguration.java | 92 ++-- .../rocketmq/config/ConfigurationWrapper.java | 2 +- .../ConnectorResourceServiceRocketmqImpl.java | 1 + .../rocketmq/consumer/PushConsumerImpl.java | 45 +- .../consumer/RocketMQConsumerImpl.java | 5 +- .../rocketmq/domain/NonStandardKeys.java | 3 + .../rocketmq/domain/RocketMQConstants.java | 3 + .../EventMeshConsumeConcurrentlyContext.java | 1 + .../EventMeshMessageListenerConcurrently.java | 9 +- .../rocketmq/producer/AbstractProducer.java | 56 +- .../rocketmq/producer/ProducerImpl.java | 45 +- .../producer/RocketMQProducerImpl.java | 14 +- .../connector/rocketmq/utils/BeanUtils.java | 126 ++--- .../rocketmq/utils/CloudEventUtils.java | 25 +- .../connector/rocketmq/utils/OMSUtil.java | 507 +++++++++--------- .../ConsumeMessageConcurrentlyService.java | 45 +- .../producer/DefaultProducerImplTest.java | 51 +- .../consumer/PushConsumerImplTest.java | 11 +- .../rocketmq/producer/ProducerImplTest.java | 24 +- .../apache/rocketmq/utils/BeanUtilsTest.java | 11 +- .../standalone/broker/MessageQueue.java | 3 +- .../standalone/broker/StandaloneBroker.java | 6 +- .../broker/model/MessageEntity.java | 4 +- .../broker/model/TopicMetadata.java | 6 +- .../broker/task/HistoryMessageClearTask.java | 7 +- .../standalone/broker/task/SubScribeTask.java | 16 +- .../consumer/StandaloneConsumer.java | 8 +- .../consumer/StandaloneConsumerAdaptor.java | 182 +++---- .../producer/StandaloneProducer.java | 22 +- .../producer/StandaloneProducerAdaptor.java | 8 +- .../broker/StandaloneBrokerTest.java | 16 +- .../pub/cloudevents/AsyncPublishInstance.java | 40 +- .../AsyncPublishInstance.java | 36 +- .../AsyncSyncRequestInstance.java | 24 +- .../eventmeshmessage/SyncRequestInstance.java | 24 +- .../demo/sub/controller/SubController.java | 16 +- .../http/demo/sub/service/SubService.java | 34 +- .../tcp/common/EventMeshTestUtils.java | 94 ++-- .../demo/pub/cloudevents/AsyncPublish.java | 16 +- .../tcp/demo/pub/cloudevents/SyncRequest.java | 20 +- .../pub/eventmeshmessage/AsyncPublish.java | 12 +- .../AsyncPublishBroadcast.java | 12 +- .../pub/eventmeshmessage/SyncRequest.java | 12 +- .../demo/sub/cloudevents/AsyncSubscribe.java | 12 +- .../demo/sub/cloudevents/SyncResponse.java | 22 +- .../sub/eventmeshmessage/AsyncSubscribe.java | 15 +- .../AsyncSubscribeBroadcast.java | 13 +- .../sub/eventmeshmessage/SyncResponse.java | 21 +- .../java/org/apache/eventmesh/util/Utils.java | 2 +- .../protocol/api/ProtocolAdaptor.java | 4 +- .../protocol/api/ProtocolPluginFactory.java | 8 +- .../CloudEventsProtocolAdaptor.java | 12 +- .../SendMessageBatchProtocolResolver.java | 3 +- .../SendMessageBatchV2ProtocolResolver.java | 84 ++- .../SendMessageRequestProtocolResolver.java | 22 +- .../tcp/TcpMessageProtocolResolver.java | 18 +- .../CloudEventsProtocolAdaptorTest.java | 4 +- .../MeshMessageProtocolAdaptor.java | 3 +- .../SendMessageBatchProtocolResolver.java | 3 +- .../SendMessageBatchV2ProtocolResolver.java | 10 +- .../SendMessageRequestProtocolResolver.java | 89 ++- .../tcp/TcpMessageProtocolResolver.java | 10 +- .../MeshMessageProtocolAdaptorTest.java | 4 +- .../OpenMessageProtocolAdaptor.java | 6 +- .../OpenMessageProtocolAdaptorTest.java | 4 +- .../api/exception/RegistryException.java | 4 + .../api/registry/RegistryService.java | 7 +- .../api/registry/dto/EventMeshDataInfo.java | 4 + .../registry/dto/EventMeshRegisterInfo.java | 4 + .../registry/dto/EventMeshUnRegisterInfo.java | 4 + .../org/apache/eventmesh/runtime/acl/Acl.java | 44 +- .../controller/ClientManageController.java | 6 +- .../QueryRecommendEventMeshHandler.java | 37 +- .../RedirectClientByIpPortHandler.java | 31 +- .../handler/RedirectClientByPathHandler.java | 33 +- .../RedirectClientBySubSystemHandler.java | 28 +- .../admin/handler/RejectAllClientHandler.java | 2 +- .../handler/RejectClientByIpPortHandler.java | 16 +- .../RejectClientBySubSystemHandler.java | 20 +- .../handler/ShowClientBySystemHandler.java | 10 +- .../admin/handler/ShowClientHandler.java | 18 +- .../ShowListenClientByTopicHandler.java | 10 +- .../runtime/boot/AbstractHTTPServer.java | 64 +-- .../runtime/boot/AbstractRemotingServer.java | 9 +- .../runtime/boot/EventMeshHTTPServer.java | 50 +- .../runtime/boot/EventMeshServer.java | 11 +- .../runtime/boot/EventMeshStartup.java | 5 +- .../runtime/boot/EventMeshTCPServer.java | 132 +++-- .../runtime/boot/SSLContextFactory.java | 8 +- .../EventMeshHTTPConfiguration.java | 114 ++-- .../EventMeshTCPConfiguration.java | 83 ++- .../runtime/connector/ConnectorResource.java | 6 +- .../runtime/constants/EventMeshConstants.java | 1 - .../core/consumergroup/ConsumerGroupConf.java | 12 +- .../consumergroup/ConsumerGroupTopicConf.java | 29 +- .../core/consumergroup/ProducerGroupConf.java | 8 +- .../core/plugin/MQConsumerWrapper.java | 18 +- .../core/plugin/MQProducerWrapper.java | 5 +- .../runtime/core/plugin/MQWrapper.java | 9 +- .../protocol/http/async/CompleteHandler.java | 5 + .../http/consumer/ConsumerGroupManager.java | 15 +- .../http/consumer/ConsumerManager.java | 58 +- .../http/consumer/EventMeshConsumer.java | 134 +++-- .../http/consumer/HandleMsgContext.java | 27 +- .../http/processor/AdminMetricsProcessor.java | 5 +- .../processor/AdminShutdownProcessor.java | 8 +- .../processor/BatchSendMessageProcessor.java | 88 +-- .../BatchSendMessageV2Processor.java | 184 +++---- .../http/processor/HeartBeatProcessor.java | 68 +-- .../http/processor/ReplyMessageProcessor.java | 138 ++--- .../processor/SendAsyncMessageProcessor.java | 88 +-- .../processor/SendSyncMessageProcessor.java | 197 ++++--- .../http/processor/SubscribeProcessor.java | 46 +- .../http/processor/UnSubscribeProcessor.java | 124 ++--- .../protocol/http/processor/inf/Client.java | 21 +- .../processor/inf/HttpRequestProcessor.java | 7 +- .../http/producer/EventMeshProducer.java | 13 +- .../http/producer/ProducerManager.java | 5 +- .../http/producer/SendMessageContext.java | 16 +- .../http/push/AbstractHTTPPushRequest.java | 21 +- .../http/push/AsyncHTTPPushRequest.java | 101 ++-- .../protocol/http/push/HTTPClientPool.java | 10 +- .../http/push/HTTPMessageHandler.java | 21 +- .../protocol/http/push/MessageHandler.java | 3 + .../protocol/http/retry/DelayRetryable.java | 3 + .../core/protocol/http/retry/HttpRetryer.java | 9 +- .../tcp/client/EventMeshTcp2Client.java | 24 +- .../client/EventMeshTcpConnectionHandler.java | 14 +- .../client/EventMeshTcpExceptionHandler.java | 13 +- .../client/EventMeshTcpMessageDispatcher.java | 33 +- .../tcp/client/group/ClientGroupWrapper.java | 223 ++++---- .../group/ClientSessionGroupMapping.java | 110 ++-- .../dispatch/DownstreamDispatchStrategy.java | 7 +- .../FreePriorityDispatchStrategy.java | 11 +- .../rebalance/EventMeshRebalanceService.java | 14 +- .../rebalance/EventMeshRebalanceStrategy.java | 4 + .../rebalance/EventmeshRebalanceImpl.java | 166 +++--- .../recommend/EventMeshRecommendImpl.java | 130 +++-- .../recommend/EventMeshRecommendStrategy.java | 8 +- .../protocol/tcp/client/session/Session.java | 70 ++- .../tcp/client/session/SessionContext.java | 7 +- .../client/session/push/ClientAckContext.java | 41 +- .../session/push/DownStreamMsgContext.java | 87 +-- .../tcp/client/session/push/PushContext.java | 21 +- .../client/session/push/SessionPusher.java | 40 +- .../session/retry/EventMeshTcpRetryer.java | 7 +- .../client/session/retry/RetryContext.java | 2 +- .../client/session/send/SessionSender.java | 70 +-- .../session/send/UpStreamMsgContext.java | 25 +- .../tcp/client/task/AbstractTask.java | 6 +- .../protocol/tcp/client/task/GoodbyeTask.java | 8 +- .../tcp/client/task/HeartBeatTask.java | 10 +- .../protocol/tcp/client/task/HelloTask.java | 30 +- .../protocol/tcp/client/task/ListenTask.java | 8 +- .../tcp/client/task/MessageAckTask.java | 16 +- .../tcp/client/task/MessageTransferTask.java | 68 +-- .../tcp/client/task/RecommendTask.java | 33 +- .../tcp/client/task/SubscribeTask.java | 19 +- .../tcp/client/task/UnSubscribeTask.java | 19 +- .../runtime/domain/NonStandardKeys.java | 4 + .../runtime/domain/RocketMQConstants.java | 5 + .../runtime/metrics/http/GroupMetrics.java | 4 +- .../metrics/http/HTTPMetricsServer.java | 19 +- .../runtime/metrics/http/HealthMetrics.java | 5 +- .../runtime/metrics/http/SummaryMetrics.java | 77 +-- .../metrics/http/TcpSummaryMetrics.java | 66 ++- .../runtime/metrics/http/TopicMetrics.java | 4 +- .../OpenTelemetryHTTPMetricsExporter.java | 13 +- .../OpenTelemetryPrometheusExporter.java | 17 +- .../OpenTelemetryTCPMetricsExporter.java | 42 +- .../metrics/tcp/EventMeshTcpMonitor.java | 42 +- .../eventmesh/runtime/registry/Registry.java | 18 +- .../eventmesh/runtime/util/EventMeshUtil.java | 194 ++++--- .../runtime/util/HttpTinyClient.java | 28 +- .../eventmesh/runtime/util/IOTinyUtils.java | 20 +- .../eventmesh/runtime/util/NetUtils.java | 6 +- .../runtime/util/RemotingHelper.java | 187 +++---- .../apache/eventmesh/runtime/util/Utils.java | 66 +-- .../runtime/util/ValueComparator.java | 4 +- .../RedirectClientByIpPortHandlerTest.java | 12 +- .../runtime/client/api/EventMeshClient.java | 6 +- .../runtime/client/api/PubClient.java | 5 +- .../runtime/client/api/SubClient.java | 7 +- .../client/common/ClientConstants.java | 4 +- .../runtime/client/common/ClientGlobal.java | 6 +- .../runtime/client/common/Codec.java | 60 ++- .../runtime/client/common/MessageUtils.java | 20 +- .../runtime/client/common/RequestContext.java | 7 +- .../runtime/client/common/TCPClient.java | 21 +- .../runtime/client/common/UserAgentUtils.java | 12 +- .../runtime/client/hook/ReceiveMsgHook.java | 4 +- .../client/impl/EventMeshClientImpl.java | 53 +- .../runtime/client/impl/PubClientImpl.java | 27 +- .../runtime/client/impl/SubClientImpl.java | 62 ++- .../runtime/cloudevent/CSVFormat.java | 107 ---- .../eventmesh/runtime/cloudevent/Data.java | 197 ------- .../runtime/cloudevent/OMSFactoryTest.java | 260 --------- .../runtime/cloudevent/OMSWriterTest.java | 287 ---------- .../runtime/demo/AsyncPubClient.java | 8 +- .../runtime/demo/AsyncSubClient.java | 8 +- .../runtime/demo/BroadCastPubClient.java | 1 - .../runtime/demo/BroadCastSubClient.java | 8 +- .../eventmesh/runtime/demo/CCSubClient.java | 8 +- .../eventmesh/runtime/demo/CClientDemo.java | 44 +- .../eventmesh/runtime/demo/SyncPubClient.java | 2 +- .../eventmesh/runtime/demo/SyncSubClient.java | 8 +- .../runtime/util/EventMeshUtilTest.java | 4 +- .../src/test/resources/log4j2.xml | 9 +- .../client/http/AbstractHttpClient.java | 10 +- .../http/consumer/EventMeshHttpConsumer.java | 59 +- .../consumer/context/LiteConsumeContext.java | 3 +- .../listener/LiteMessageListener.java | 3 + .../client/http/model/RequestParam.java | 7 +- .../http/producer/CloudEventProducer.java | 74 +-- .../http/producer/EventMeshHttpProducer.java | 17 +- .../producer/EventMeshMessageProducer.java | 67 +-- .../producer/EventMeshProtocolProducer.java | 2 +- .../http/producer/OpenMessageProducer.java | 38 +- .../RRCallbackResponseHandlerAdapter.java | 17 +- .../client/http/ssl/MyX509TrustManager.java | 11 +- .../http/util/HttpLoadBalanceUtils.java | 19 +- .../eventmesh/client/http/util/HttpUtils.java | 22 +- .../client/tcp/EventMeshTCPClient.java | 2 +- .../client/tcp/EventMeshTCPClientFactory.java | 9 +- .../client/tcp/EventMeshTCPSubClient.java | 2 +- .../client/tcp/common/AsyncRRCallback.java | 3 + .../client/tcp/common/MessageUtils.java | 58 +- .../client/tcp/common/RequestContext.java | 17 +- .../client/tcp/common/TcpClient.java | 37 +- .../tcp/conf/EventMeshTCPClientConfig.java | 4 +- .../impl/AbstractEventMeshTCPPubHandler.java | 7 +- .../impl/AbstractEventMeshTCPSubHandler.java | 7 +- .../impl/cloudevent/CloudEventTCPClient.java | 2 +- .../cloudevent/CloudEventTCPPubClient.java | 15 +- .../cloudevent/CloudEventTCPSubClient.java | 17 +- .../EventMeshMessageTCPClient.java | 4 +- .../EventMeshMessageTCPPubClient.java | 13 +- .../EventMeshMessageTCPSubClient.java | 9 +- .../openmessage/OpenMessageTCPClient.java | 3 +- .../openmessage/OpenMessageTCPPubClient.java | 1 + .../openmessage/OpenMessageTCPSubClient.java | 3 +- .../http/demo/AsyncPublishInstance.java | 26 +- .../http/demo/AsyncSyncRequestInstance.java | 28 +- .../client/http/demo/SyncRequestInstance.java | 26 +- .../http/util/HttpLoadBalanceUtilsTest.java | 5 +- .../client/tcp/common/EventMeshTestUtils.java | 46 +- .../impl/EventMeshTCPClientFactoryTest.java | 14 +- .../apache/eventmesh/api/acl/AclService.java | 4 + .../eventmesh/api/exception/AclException.java | 4 + .../spi/EventMeshExtensionFactory.java | 8 +- .../apache/eventmesh/spi/EventMeshSPI.java | 1 + .../spi/loader/EventMeshUrlClassLoader.java | 1 + .../spi/loader/JarExtensionClassLoader.java | 26 +- .../loader/MetaInfExtensionClassLoader.java | 5 +- .../spi/EventMeshExtensionFactoryTest.java | 1 + .../spi/example/TestPrototypeExtension.java | 3 + .../spi/example/TestSingletonExtension.java | 3 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 30 +- gradlew.bat | 46 +- style/checkStyle.xml | 20 +- 367 files changed, 4732 insertions(+), 4827 deletions(-) delete mode 100644 eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/CSVFormat.java delete mode 100644 eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/Data.java delete mode 100644 eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/OMSFactoryTest.java delete mode 100644 eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/OMSWriterTest.java create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties diff --git a/README.md b/README.md index e176173aa..70a32fc7d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Apache EventMesh (incubating) +# Apache EventMesh (incubating) [![CI status](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml/badge.svg)](https://github.com/apache/incubator-eventmesh/actions/workflows/ci.yml) [![CodeCov](https://codecov.io/gh/apache/incubator-eventmesh/branch/develop/graph/badge.svg)](https://codecov.io/gh/apache/incubator-eventmesh) [![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/apache/incubator-eventmesh.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/apache/incubator-eventmesh/context:java) @@ -16,12 +16,14 @@ EventMesh(incubating) is a dynamic event-driven application runtime used to deco **Multi-runtime:** ![architecture1](docs/images/eventmesh-arch3.png) + **Orchestration:** ![architecture1](docs/images/eventmesh-orchestration.png) **Federation:** ![architecture1](docs/images/eventmesh-federation.png) + **Components:** * **eventmesh-runtime** : an middleware to transmit events between event producers and consumers, support cloud native apps and microservices. @@ -71,4 +73,4 @@ Mailing Lists: | ---- | ---- |---- | ---- | ---- | |Users |User support and questions mailing list| [Subscribe](mailto:users-subscribe@eventmesh.incubator.apache.org) |[Unsubscribe](mailto:users-unsubscribe@eventmesh.incubator.apache.org) |[Mail Archives](https://lists.apache.org/list.html?users@eventmesh.apache.org)| |Development |Development related discussions| [Subscribe](mailto:dev-subscribe@eventmesh.incubator.apache.org) |[Unsubscribe](mailto:dev-unsubscribe@eventmesh.incubator.apache.org) |[Mail Archives](https://lists.apache.org/list.html?dev@eventmesh.apache.org)| -|Commits |All commits to repositories| [Subscribe](mailto:commits-subscribe@eventmesh.incubator.apache.org) |[Unsubscribe](mailto:commits-unsubscribe@eventmesh.incubator.apache.org) |[Mail Archives](https://lists.apache.org/list.html?commits@eventmesh.apache.org)| +|Commits |All commits to repositories| [Subscribe](mailto:commits-subscribe@eventmesh.incubator.apache.org) |[Unsubscribe](mailto:commits-unsubscribe@eventmesh.incubator.apache.org) |[Mail Archives](https://lists.apache.org/list.html?commits@eventmesh.apache.org)| \ No newline at end of file diff --git a/build.gradle b/build.gradle index fbd2269a6..307c53e8e 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ buildscript { } dependencies { - classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.7.1" + classpath "com.github.spotbugs.snom:spotbugs-gradle-plugin:5.0.3" classpath "io.spring.gradle:dependency-management-plugin:1.0.11.RELEASE" classpath "com.github.jk1:gradle-license-report:1.17" } diff --git a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/controller/AdminController.java b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/controller/AdminController.java index 8932afd5c..76027a100 100644 --- a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/controller/AdminController.java +++ b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/controller/AdminController.java @@ -34,9 +34,9 @@ public class AdminController { } public void run(HttpServer server) throws IOException { - + server.createContext("/topicmanage", new TopicsHandler()); - + logger.info("EventMesh-Admin Controller server context created successfully"); } } diff --git a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/handler/TopicsHandler.java b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/handler/TopicsHandler.java index 345f4bca3..84e1ae584 100644 --- a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/handler/TopicsHandler.java +++ b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/handler/TopicsHandler.java @@ -60,23 +60,23 @@ public class TopicsHandler implements HttpHandler { try { String params = NetUtils.parsePostBody(httpExchange); TopicCreateRequest topicCreateRequest = - JsonUtils.toObject(params, TopicCreateRequest.class); + JsonUtils.toObject(params, TopicCreateRequest.class); String topic = topicCreateRequest.getName(); - + if (StringUtils.isBlank(topic)) { result = "Create topic failed. Parameter topic not found."; logger.error(result); out.write(result.getBytes()); return; } - + //TBD: A new rocketmq service will be implemented for creating topics TopicResponse topicResponse = null; if (topicResponse != null) { - logger.info("create a new topic: {}", topic); + logger.info("create a new topic: {}", topic); httpExchange.getResponseHeaders().add("Content-Type", "appication/json"); httpExchange.sendResponseHeaders(200, 0); - result = JsonUtils.toJson(topicResponse); + result = JsonUtils.toJson(topicResponse); logger.info(result); out.write(result.getBytes()); return; @@ -89,7 +89,7 @@ public class TopicsHandler implements HttpHandler { } } catch (Exception e) { httpExchange.getResponseHeaders().add("Content-Type", "appication/json"); - httpExchange.sendResponseHeaders(500, 0); + httpExchange.sendResponseHeaders(500, 0); result = String.format("create topic failed! Server side error"); logger.error(result); out.write(result.getBytes()); diff --git a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/response/TopicResponse.java b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/response/TopicResponse.java index 1dde496bc..41b6e6a9b 100644 --- a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/response/TopicResponse.java +++ b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/response/TopicResponse.java @@ -27,7 +27,7 @@ public class TopicResponse { @JsonCreator public TopicResponse(@JsonProperty("topic") String topic, - @JsonProperty("created_time") String createdTime) { + @JsonProperty("created_time") String createdTime) { super(); this.topic = topic; this.createdTime = createdTime; @@ -51,12 +51,12 @@ public class TopicResponse { @JsonProperty("created_time") public void setCreatedTime(String createdTime) { this.createdTime = createdTime; - } + } @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("TopicResponse {topic=" + this.topic + ","); + sb.append("TopicResponse {topic=" + this.topic + ","); sb.append("created_time=" + this.createdTime + "}"); return sb.toString(); } diff --git a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/JsonUtils.java b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/JsonUtils.java index 69455c5db..f502cf179 100644 --- a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/JsonUtils.java +++ b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/JsonUtils.java @@ -25,15 +25,15 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; -public class JsonUtils { +public class JsonUtils { - private static ObjectMapper objectMapper; + private static ObjectMapper objectMapper; static { - objectMapper = new ObjectMapper(); + objectMapper = new ObjectMapper(); objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); + objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); } public static byte[] serialize(String topic, Class data) throws JsonProcessingException { @@ -47,7 +47,7 @@ public class JsonUtils { if (obj == null) { return null; } - return objectMapper.writeValueAsString(obj); + return objectMapper.writeValueAsString(obj); } public static T toObject(String json, Class clazz) throws JsonProcessingException { diff --git a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/NetUtils.java b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/NetUtils.java index c6c7992d2..0feedb2d8 100644 --- a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/NetUtils.java +++ b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/NetUtils.java @@ -30,14 +30,14 @@ import com.sun.net.httpserver.HttpExchange; public class NetUtils { private static final Logger logger = LoggerFactory.getLogger(NetUtils.class); - + public static String parsePostBody(HttpExchange exchange) throws IOException { StringBuilder body = new StringBuilder(); if ("post".equalsIgnoreCase(exchange.getRequestMethod()) - || "put".equalsIgnoreCase(exchange.getRequestMethod())) { - try (InputStreamReader reader = - new InputStreamReader(exchange.getRequestBody(), Consts.UTF_8)) { + || "put".equalsIgnoreCase(exchange.getRequestMethod())) { + try (InputStreamReader reader = + new InputStreamReader(exchange.getRequestBody(), Consts.UTF_8)) { char[] buffer = new char[256]; int read; while ((read = reader.read(buffer)) != -1) { diff --git a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/RequestMapping.java b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/RequestMapping.java index b093d3e9f..174f33d4a 100644 --- a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/RequestMapping.java +++ b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/RequestMapping.java @@ -19,10 +19,10 @@ package org.apache.eventmesh.admin.rocketmq.util; import com.sun.net.httpserver.HttpExchange; -public class RequestMapping { +public class RequestMapping { - public static boolean postMapping(String value, HttpExchange httpExchange) { - if ("post".equalsIgnoreCase(httpExchange.getRequestMethod())) { + public static boolean postMapping(String value, HttpExchange httpExchange) { + if ("post".equalsIgnoreCase(httpExchange.getRequestMethod())) { String requestUri = httpExchange.getRequestURI().getPath(); UrlMappingPattern matcher = new UrlMappingPattern(value); return matcher.matches(requestUri); @@ -30,8 +30,8 @@ public class RequestMapping { return false; } - public static boolean getMapping(String value, HttpExchange httpExchange) { - if ("get".equalsIgnoreCase(httpExchange.getRequestMethod())) { + public static boolean getMapping(String value, HttpExchange httpExchange) { + if ("get".equalsIgnoreCase(httpExchange.getRequestMethod())) { String requestUri = httpExchange.getRequestURI().getPath(); UrlMappingPattern matcher = new UrlMappingPattern(value); return matcher.matches(requestUri); @@ -39,8 +39,8 @@ public class RequestMapping { return false; } - public static boolean putMapping(String value, HttpExchange httpExchange) { - if ("put".equalsIgnoreCase(httpExchange.getRequestMethod())) { + public static boolean putMapping(String value, HttpExchange httpExchange) { + if ("put".equalsIgnoreCase(httpExchange.getRequestMethod())) { String requestUri = httpExchange.getRequestURI().getPath(); UrlMappingPattern matcher = new UrlMappingPattern(value); return matcher.matches(requestUri); @@ -48,8 +48,8 @@ public class RequestMapping { return false; } - public static boolean deleteMapping(String value, HttpExchange httpExchange) { - if ("delete".equalsIgnoreCase(httpExchange.getRequestMethod())) { + public static boolean deleteMapping(String value, HttpExchange httpExchange) { + if ("delete".equalsIgnoreCase(httpExchange.getRequestMethod())) { String requestUri = httpExchange.getRequestURI().getPath(); UrlMappingPattern matcher = new UrlMappingPattern(value); return matcher.matches(requestUri); diff --git a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/UrlMappingPattern.java b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/UrlMappingPattern.java index 0e31b13ca..09d0eb3d6 100644 --- a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/UrlMappingPattern.java +++ b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/util/UrlMappingPattern.java @@ -29,8 +29,8 @@ public class UrlMappingPattern { private static final String URL_PARAMETER_REGEX = "\\{(\\w*?)\\}"; - private static final String URL_PARAMETER_MATCH_REGEX = - "\\([%\\\\w-.\\\\~!\\$&'\\\\(\\\\)\\\\*\\\\+,;=:\\\\[\\\\]@]+?\\)"; + private static final String URL_PARAMETER_MATCH_REGEX = + "\\([%\\\\w-.\\\\~!\\$&'\\\\(\\\\)\\\\*\\\\+,;=:\\\\[\\\\]@]+?\\)"; private static final Pattern URL_PARAMETER_PATTERN = Pattern.compile(URL_PARAMETER_REGEX); @@ -74,8 +74,8 @@ public class UrlMappingPattern { public void compile() { acquireParamNames(); - String parsedPattern = - getUrlMappingPattern().replaceFirst(URL_FORMAT_REGEX, URL_FORMAT_MATCH_REGEX); + String parsedPattern = + getUrlMappingPattern().replaceFirst(URL_FORMAT_REGEX, URL_FORMAT_MATCH_REGEX); parsedPattern = parsedPattern.replaceAll(URL_PARAMETER_REGEX, URL_PARAMETER_MATCH_REGEX); this.compiledUrlMappingPattern = Pattern.compile(parsedPattern + URL_QUERY_STRING_REGEX); } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadPoolFactory.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadPoolFactory.java index 319673d24..3e3831c3c 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadPoolFactory.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/ThreadPoolFactory.java @@ -42,7 +42,7 @@ public class ThreadPoolFactory { public static ThreadPoolExecutor createThreadPoolExecutor(int core, int max, BlockingQueue blockingQueue, final String threadName, final boolean isDaemon) { return new ThreadPoolExecutor(core, max, 10 * 1000, TimeUnit.MILLISECONDS, blockingQueue, - new ThreadFactoryBuilder().setNameFormat(threadName).setDaemon(isDaemon).build() + new ThreadFactoryBuilder().setNameFormat(threadName).setDaemon(isDaemon).build() ); } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java index 33e9ce950..7f483a789 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java @@ -17,10 +17,11 @@ package org.apache.eventmesh.common.config; -import com.google.common.base.Preconditions; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.eventmesh.common.utils.IPUtils; + +import com.google.common.base.Preconditions; public class CommonConfiguration { public String eventMeshEnv = "P"; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWrapper.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWrapper.java index c9e01d081..b1eaac311 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWrapper.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigurationWrapper.java @@ -17,11 +17,9 @@ package org.apache.eventmesh.common.config; -import com.google.common.base.Preconditions; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.ThreadPoolFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.io.BufferedReader; import java.io.File; @@ -31,6 +29,11 @@ import java.util.Properties; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.base.Preconditions; + public class ConfigurationWrapper { public Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -64,8 +67,7 @@ public class ConfigurationWrapper { private void load() { try { logger.info("loading config: {}", file); - properties.load(new BufferedReader(new FileReader( - new File(file)))); + properties.load(new BufferedReader(new FileReader(new File(file)))); } catch (IOException e) { logger.error("loading properties [{}] error", file, e); } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelector.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelector.java index fb7a99223..f04a7683c 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelector.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelector.java @@ -19,11 +19,12 @@ package org.apache.eventmesh.common.loadbalance; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.RandomUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * This selector use random strategy. * Each selection will randomly give one from the given list diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/Weight.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/Weight.java index e793955c5..cba255b43 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/Weight.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/Weight.java @@ -61,10 +61,10 @@ public class Weight { @Override public String toString() { - return "Wight{" + - "target=" + target + - ", weight=" + weight + - ", currentWeight=" + currentWeight + - '}'; + return "Wight{" + + "target=" + target + + ", weight=" + weight + + ", currentWeight=" + currentWeight + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRandomLoadBalanceSelector.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRandomLoadBalanceSelector.java index 835bc4838..5b7904e69 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRandomLoadBalanceSelector.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRandomLoadBalanceSelector.java @@ -17,9 +17,10 @@ package org.apache.eventmesh.common.loadbalance; +import org.apache.eventmesh.common.exception.EventMeshException; + import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.RandomUtils; -import org.apache.eventmesh.common.exception.EventMeshException; import java.util.List; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelector.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelector.java index c0310003a..29dcc729e 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelector.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelector.java @@ -18,11 +18,12 @@ package org.apache.eventmesh.common.loadbalance; import org.apache.commons.collections4.CollectionUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * This selector use the weighted round robin strategy to select from list. * If the weight is greater, the probability of being selected is larger. diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionItem.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionItem.java index 0eda53ec9..b27ddb139 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionItem.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/SubscriptionItem.java @@ -60,11 +60,11 @@ public class SubscriptionItem { @Override public String toString() { - return "SubscriptionItem{" + - "topic=" + topic + - ", mode=" + mode + - ", type=" + type + - '}'; + return "SubscriptionItem{" + + "topic=" + topic + + ", mode=" + mode + + ", type=" + type + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpCommand.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpCommand.java index 4b2d7b581..11ad66aa1 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpCommand.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpCommand.java @@ -184,18 +184,18 @@ public class HttpCommand implements ProtocolTransportObject { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("httpCommand={") - .append(cmdType).append(",") - .append(httpMethod).append("/").append(httpVersion).append(",") - .append("requestCode=").append(requestCode).append(",") - .append("opaque=").append(opaque).append(","); + .append(cmdType).append(",") + .append(httpMethod).append("/").append(httpVersion).append(",") + .append("requestCode=").append(requestCode).append(",") + .append("opaque=").append(opaque).append(","); if (cmdType == CmdType.RES) { sb.append("cost=").append(resTime - reqTime).append(","); } sb.append("header=").append(header).append(",") - .append("body=").append(body) - .append("}"); + .append("body=").append(body) + .append("}"); return sb.toString(); } @@ -203,17 +203,17 @@ public class HttpCommand implements ProtocolTransportObject { public String abstractDesc() { StringBuilder sb = new StringBuilder(); sb.append("httpCommand={") - .append(cmdType).append(",") - .append(httpMethod).append("/").append(httpVersion).append(",") - .append("requestCode=").append(requestCode).append(",") - .append("opaque=").append(opaque).append(","); + .append(cmdType).append(",") + .append(httpMethod).append("/").append(httpVersion).append(",") + .append("requestCode=").append(requestCode).append(",") + .append("opaque=").append(opaque).append(","); if (cmdType == CmdType.RES) { sb.append("cost=").append(resTime - reqTime).append(","); } sb.append("header=").append(header).append(",") - .append("bodySize=").append(body.toString().length()).append("}"); + .append("bodySize=").append(body.toString().length()).append("}"); return sb.toString(); } @@ -221,9 +221,9 @@ public class HttpCommand implements ProtocolTransportObject { public String simpleDesc() { StringBuilder sb = new StringBuilder(); sb.append("httpCommand={") - .append(cmdType).append(",") - .append(httpMethod).append("/").append(httpVersion).append(",") - .append("requestCode=").append(requestCode).append("}"); + .append(cmdType).append(",") + .append(httpMethod).append("/").append(httpVersion).append(",") + .append("requestCode=").append(requestCode).append("}"); return sb.toString(); } @@ -233,7 +233,7 @@ public class HttpCommand implements ProtocolTransportObject { return null; } DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, - Unpooled.wrappedBuffer(JsonUtils.serialize(this.getBody()).getBytes(Constants.DEFAULT_CHARSET))); + Unpooled.wrappedBuffer(JsonUtils.serialize(this.getBody()).getBytes(Constants.DEFAULT_CHARSET))); HttpHeaders headers = response.headers(); headers.add(HttpHeaderNames.CONTENT_TYPE, "text/plain; charset=" + Constants.DEFAULT_CHARSET); headers.add(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes()); diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBody.java index 5cb5922f1..aefa71184 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBody.java @@ -18,11 +18,11 @@ package org.apache.eventmesh.common.protocol.http.body; +import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; + import java.util.HashMap; import java.util.Map; -import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; - public class BaseResponseBody extends Body { private Integer retCode; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/Body.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/Body.java index c6976433d..3dc8e6c27 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/Body.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/Body.java @@ -18,8 +18,6 @@ package org.apache.eventmesh.common.protocol.http.body; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.body.client.HeartbeatRequestBody; import org.apache.eventmesh.common.protocol.http.body.client.RegRequestBody; import org.apache.eventmesh.common.protocol.http.body.client.SubscribeRequestBody; @@ -32,6 +30,8 @@ import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchV2 import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody; import org.apache.eventmesh.common.protocol.http.common.RequestCode; +import java.util.Map; + public abstract class Body { public abstract Map toMap(); diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java index 080409889..a26ed2d1d 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java @@ -30,9 +30,9 @@ import com.fasterxml.jackson.core.type.TypeReference; public class HeartbeatRequestBody extends Body { - public static final String CLIENTTYPE = "clientType"; + public static final String CLIENTTYPE = "clientType"; public static final String HEARTBEATENTITIES = "heartbeatEntities"; - public static final String CONSUMERGROUP = "consumerGroup"; + public static final String CONSUMERGROUP = "consumerGroup"; private String consumerGroup; @@ -69,9 +69,9 @@ public class HeartbeatRequestBody extends Body { body.setClientType(MapUtils.getString(bodyParam, CLIENTTYPE)); body.setConsumerGroup(MapUtils.getString(bodyParam, CONSUMERGROUP)); body.setHeartbeatEntities(JsonUtils - .deserialize(MapUtils.getString(bodyParam, HEARTBEATENTITIES), - new TypeReference>() { - })); + .deserialize(MapUtils.getString(bodyParam, HEARTBEATENTITIES), + new TypeReference>() { + })); return body; } @@ -94,10 +94,10 @@ public class HeartbeatRequestBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("heartbeatEntity={") - .append("topic=").append(topic).append(",") - .append("serviceId=").append(serviceId).append(",") - .append("instanceId=").append(instanceId).append(",") - .append("url=").append(url).append("}"); + .append("topic=").append(topic).append(",") + .append("serviceId=").append(serviceId).append(",") + .append("instanceId=").append(instanceId).append(",") + .append("url=").append(url).append("}"); return sb.toString(); } } @@ -106,8 +106,8 @@ public class HeartbeatRequestBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("heartbeatRequestBody={") - .append("consumerGroup=").append(consumerGroup).append(",") - .append("clientType=").append(clientType).append("}"); + .append("consumerGroup=").append(consumerGroup).append(",") + .append("clientType=").append(clientType).append("}"); return sb.toString(); } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java index 2d213ce01..c9151dc65 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.body.client; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.Map; + public class HeartbeatResponseBody extends Body { //return code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java index 21a7beb90..affffdce0 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java @@ -72,8 +72,8 @@ public class RegRequestBody extends Body { body.setClientType(MapUtils.getString(bodyParam, CLIENTTYPE)); body.setEndPoint(MapUtils.getString(bodyParam, ENDPOINT)); body.setTopics(JsonUtils.deserialize(MapUtils.getString(bodyParam, TOPICS), - new TypeReference>() { - })); + new TypeReference>() { + })); return body; } @@ -89,9 +89,9 @@ public class RegRequestBody extends Body { @Override public String toString() { return "regRequestBody{" - + "clientType='" + clientType + '\'' - + ", endPoint='" + endPoint + '\'' - + ", topics=" + topics - + '}'; + + "clientType='" + clientType + '\'' + + ", endPoint='" + endPoint + '\'' + + ", topics=" + topics + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java index 1fc1366f3..aeb328853 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.body.client; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.Map; + public class RegResponseBody extends Body { private Integer retCode; private String retMsg; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java index 156cc3c5c..df413c1c3 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java @@ -71,8 +71,8 @@ public class SubscribeRequestBody extends Body { SubscribeRequestBody body = new SubscribeRequestBody(); body.setUrl(MapUtils.getString(bodyParam, URL)); body.setTopics(JsonUtils.deserialize(MapUtils.getString(bodyParam, TOPIC), - new TypeReference>() { - })); + new TypeReference>() { + })); body.setConsumerGroup(MapUtils.getString(bodyParam, CONSUMERGROUP)); return body; } @@ -89,9 +89,9 @@ public class SubscribeRequestBody extends Body { @Override public String toString() { return "subscribeBody{" - + "consumerGroup='" + consumerGroup + '\'' - + ", url='" + url + '\'' - + ", topics=" + topics - + '}'; + + "consumerGroup='" + consumerGroup + '\'' + + ", url='" + url + '\'' + + ", topics=" + topics + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java index 21b70826c..0b2f6cb3a 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.body.client; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.Map; + public class SubscribeResponseBody extends Body { private Integer retCode; private String retMsg; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java index b20f4c2d4..6fa82bda7 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java @@ -58,8 +58,8 @@ public class UnRegRequestBody extends Body { UnRegRequestBody body = new UnRegRequestBody(); body.setClientType(MapUtils.getString(bodyParam, CLIENTTYPE)); body.setTopics(JsonUtils.deserialize(MapUtils.getString(bodyParam, TOPICS), - new TypeReference>() { - })); + new TypeReference>() { + })); return body; } @@ -75,9 +75,9 @@ public class UnRegRequestBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("regRequestBody={") - .append("clientType=").append(clientType) - .append("topics=").append(topics) - .append("}"); + .append("clientType=").append(clientType) + .append("topics=").append(topics) + .append("}"); return sb.toString(); } @@ -90,9 +90,9 @@ public class UnRegRequestBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("unRegTopicEntity={") - .append("topic=").append(topic).append(",") - .append("serviceId=").append(serviceId).append(",") - .append("instanceId=").append(instanceId).append("}"); + .append("topic=").append(topic).append(",") + .append("serviceId=").append(serviceId).append(",") + .append("instanceId=").append(instanceId).append("}"); return sb.toString(); } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java index 325095187..975cb35a5 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.body.client; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.Map; + public class UnRegResponseBody extends Body { private Integer retCode; private String retMsg; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java index 5904a964f..ca9db6210 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java @@ -70,8 +70,8 @@ public class UnSubscribeRequestBody extends Body { UnSubscribeRequestBody body = new UnSubscribeRequestBody(); body.setUrl(MapUtils.getString(bodyParam, URL)); body.setTopics(JsonUtils - .deserialize(MapUtils.getString(bodyParam, TOPIC), new TypeReference>() { - })); + .deserialize(MapUtils.getString(bodyParam, TOPIC), new TypeReference>() { + })); body.setConsumerGroup(MapUtils.getString(bodyParam, CONSUMERGROUP)); return body; } @@ -88,9 +88,9 @@ public class UnSubscribeRequestBody extends Body { @Override public String toString() { return "unSubscribeRequestBody{" - + "consumerGroup='" + consumerGroup + '\'' - + ", url='" + url + '\'' - + ", topics=" + topics - + '}'; + + "consumerGroup='" + consumerGroup + '\'' + + ", url='" + url + '\'' + + ", topics=" + topics + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java index d62b9d9de..d1eeb77db 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.body.client; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.Map; + public class UnSubscribeResponseBody extends Body { private Integer retCode; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java index 8e24580f3..4a8feeb81 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java @@ -30,11 +30,11 @@ import com.fasterxml.jackson.core.type.TypeReference; public class PushMessageRequestBody extends Body { - public static final String RANDOMNO = "randomNo"; - public static final String TOPIC = "topic"; - public static final String BIZSEQNO = "bizseqno"; - public static final String UNIQUEID = "uniqueId"; - public static final String CONTENT = "content"; + public static final String RANDOMNO = "randomNo"; + public static final String TOPIC = "topic"; + public static final String BIZSEQNO = "bizseqno"; + public static final String UNIQUEID = "uniqueId"; + public static final String CONTENT = "content"; public static final String EXTFIELDS = "extFields"; private String randomNo; @@ -108,8 +108,8 @@ public class PushMessageRequestBody extends Body { if (StringUtils.isNotBlank(extFields)) { pushMessageRequestBody.setExtFields( - JsonUtils.deserialize(extFields, new TypeReference>() { - })); + JsonUtils.deserialize(extFields, new TypeReference>() { + })); } return pushMessageRequestBody; } @@ -131,12 +131,12 @@ public class PushMessageRequestBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("pushMessageRequestBody={") - .append("randomNo=").append(randomNo).append(",") - .append("topic=").append(topic).append(",") - .append("bizSeqNo=").append(bizSeqNo).append(",") - .append("uniqueId=").append(uniqueId).append(",") - .append("content=").append(content).append(",") - .append("extFields=").append(extFields).append("}"); + .append("randomNo=").append(randomNo).append(",") + .append("topic=").append(topic).append(",") + .append("bizSeqNo=").append(bizSeqNo).append(",") + .append("uniqueId=").append(uniqueId).append(",") + .append("content=").append(content).append(",") + .append("extFields=").append(extFields).append("}"); return sb.toString(); } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java index a5ac0d165..01000b0d0 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.body.message; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.Map; + public class PushMessageResponseBody extends Body { private Integer retCode; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java index 90d83c153..0814204e4 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java @@ -30,11 +30,11 @@ import com.fasterxml.jackson.core.type.TypeReference; public class ReplyMessageRequestBody extends Body { - public static final String ORIGTOPIC = "origtopic"; - public static final String BIZSEQNO = "bizseqno"; - public static final String UNIQUEID = "uniqueid"; - public static final String CONTENT = "content"; - public static final String EXTFIELDS = "extFields"; + public static final String ORIGTOPIC = "origtopic"; + public static final String BIZSEQNO = "bizseqno"; + public static final String UNIQUEID = "uniqueid"; + public static final String CONTENT = "content"; + public static final String EXTFIELDS = "extFields"; public static final String PRODUCERGROUP = "producergroup"; private String bizSeqNo; @@ -106,8 +106,8 @@ public class ReplyMessageRequestBody extends Body { String extFields = MapUtils.getString(bodyParam, EXTFIELDS); if (StringUtils.isNotBlank(extFields)) { body.setExtFields( - JsonUtils.deserialize(extFields, new TypeReference>() { - })); + JsonUtils.deserialize(extFields, new TypeReference>() { + })); } body.setProducerGroup(MapUtils.getString(bodyParam, PRODUCERGROUP)); return body; @@ -117,12 +117,12 @@ public class ReplyMessageRequestBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("replyMessageRequestBody={") - .append("bizSeqNo=").append(bizSeqNo).append(",") - .append("uniqueId=").append(uniqueId).append(",") - .append("origTopic=").append(origTopic).append(",") - .append("content=").append(content).append(",") - .append("producerGroup=").append(producerGroup).append(",") - .append("extFields=").append(extFields).append("}"); + .append("bizSeqNo=").append(bizSeqNo).append(",") + .append("uniqueId=").append(uniqueId).append(",") + .append("origTopic=").append(origTopic).append(",") + .append("content=").append(content).append(",") + .append("producerGroup=").append(producerGroup).append(",") + .append("extFields=").append(extFields).append("}"); return sb.toString(); } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java index 2f9ba960d..342f151c0 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.body.message; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.Map; + public class ReplyMessageResponseBody extends Body { //return code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java index 0b544c471..da7795533 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java @@ -31,9 +31,9 @@ import com.fasterxml.jackson.core.type.TypeReference; public class SendMessageBatchRequestBody extends Body { - public static final String BATCHID = "batchId"; - public static final String CONTENTS = "contents"; - public static final String SIZE = "size"; + public static final String BATCHID = "batchId"; + public static final String CONTENTS = "contents"; + public static final String SIZE = "size"; public static final String PRODUCERGROUP = "producerGroup"; private String batchId; @@ -83,10 +83,10 @@ public class SendMessageBatchRequestBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("sendMessageBatchRequestBody={") - .append("batchId=").append(batchId).append(",") - .append("size=").append(size).append(",") - .append("producerGroup=").append(producerGroup).append(",") - .append("contents=").append(JsonUtils.serialize(contents)).append("}"); + .append("batchId=").append(batchId).append(",") + .append("size=").append(size).append(",") + .append("producerGroup=").append(producerGroup).append(",") + .append("contents=").append(JsonUtils.serialize(contents)).append("}"); return sb.toString(); } @@ -101,29 +101,29 @@ public class SendMessageBatchRequestBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("batchMessageEntity={") - .append("bizSeqNo=").append(bizSeqNo).append(",") - .append("topic=").append(topic).append(",") - .append("msg=").append(msg).append(",") - .append("ttl=").append(ttl).append(",") - .append("tag=").append(tag).append("}"); + .append("bizSeqNo=").append(bizSeqNo).append(",") + .append("topic=").append(topic).append(",") + .append("msg=").append(msg).append(",") + .append("ttl=").append(ttl).append(",") + .append("tag=").append(tag).append("}"); return sb.toString(); } } public static SendMessageBatchRequestBody buildBody(final Map bodyParam) { String batchId = MapUtils.getString(bodyParam, - BATCHID); + BATCHID); String size = StringUtils.isBlank(MapUtils.getString(bodyParam, - SIZE)) ? "1" : MapUtils.getString(bodyParam, - SIZE); + SIZE)) ? "1" : MapUtils.getString(bodyParam, + SIZE); String contents = MapUtils.getString(bodyParam, - CONTENTS, null); + CONTENTS, null); SendMessageBatchRequestBody body = new SendMessageBatchRequestBody(); body.setBatchId(batchId); if (StringUtils.isNotBlank(contents)) { body.setContents( - JsonUtils.deserialize(contents, new TypeReference>() { - })); + JsonUtils.deserialize(contents, new TypeReference>() { + })); } body.setSize(size); body.setProducerGroup(MapUtils.getString(bodyParam, PRODUCERGROUP)); diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java index bdf8004de..f50447367 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.body.message; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.Map; + public class SendMessageBatchResponseBody extends Body { //return code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java index b08dca7b0..5abd7bc0c 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2RequestBody.java @@ -17,11 +17,12 @@ package org.apache.eventmesh.common.protocol.http.body.message; -import java.util.HashMap; -import java.util.Map; +import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.commons.collections4.MapUtils; -import org.apache.eventmesh.common.protocol.http.body.Body; + +import java.util.HashMap; +import java.util.Map; public class SendMessageBatchV2RequestBody extends Body { diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java index a2f69fb84..26cc08202 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.body.message; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.Map; + public class SendMessageBatchV2ResponseBody extends Body { //return code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java index 25d35922a..e14d230a5 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java @@ -30,13 +30,13 @@ import com.fasterxml.jackson.core.type.TypeReference; public class SendMessageRequestBody extends Body { - public static final String TOPIC = "topic"; - public static final String BIZSEQNO = "bizseqno"; - public static final String UNIQUEID = "uniqueid"; - public static final String CONTENT = "content"; - public static final String TTL = "ttl"; - public static final String TAG = "tag"; - public static final String EXTFIELDS = "extFields"; + public static final String TOPIC = "topic"; + public static final String BIZSEQNO = "bizseqno"; + public static final String UNIQUEID = "uniqueid"; + public static final String CONTENT = "content"; + public static final String TTL = "ttl"; + public static final String TAG = "tag"; + public static final String EXTFIELDS = "extFields"; public static final String PRODUCERGROUP = "producergroup"; private String topic; @@ -130,8 +130,8 @@ public class SendMessageRequestBody extends Body { String extFields = MapUtils.getString(bodyParam, EXTFIELDS); if (StringUtils.isNotBlank(extFields)) { body.setExtFields( - JsonUtils.deserialize(extFields, new TypeReference>() { - })); + JsonUtils.deserialize(extFields, new TypeReference>() { + })); } body.setProducerGroup(MapUtils.getString(bodyParam, PRODUCERGROUP)); return body; @@ -155,14 +155,14 @@ public class SendMessageRequestBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("sendMessageRequestBody={") - .append("topic=").append(topic).append(",") - .append("bizSeqNo=").append(bizSeqNo).append(",") - .append("uniqueId=").append(uniqueId).append(",") - .append("content=").append(content).append(",") - .append("ttl=").append(ttl).append(",") - .append("tag=").append(tag).append(",") - .append("producerGroup=").append(producerGroup).append(",") - .append("extFields=").append(extFields).append("}"); + .append("topic=").append(topic).append(",") + .append("bizSeqNo=").append(bizSeqNo).append(",") + .append("uniqueId=").append(uniqueId).append(",") + .append("content=").append(content).append(",") + .append("ttl=").append(ttl).append(",") + .append("tag=").append(tag).append(",") + .append("producerGroup=").append(producerGroup).append(",") + .append("extFields=").append(extFields).append("}"); return sb.toString(); } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java index 7a5f40dab..e4e9eaa12 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java @@ -73,9 +73,9 @@ public class SendMessageResponseBody extends Body { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("sendMessageResponseBody={") - .append("retCode=").append(retCode).append(",") - .append("retMsg=").append(retMsg).append(",") - .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}"); + .append("retCode=").append(retCode).append(",") + .append("retMsg=").append(retMsg).append(",") + .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}"); return sb.toString(); } @@ -91,8 +91,8 @@ public class SendMessageResponseBody extends Body { @Data @Builder public static class ReplyMessage { - public String topic; - public String body; + public String topic; + public String body; public Map properties; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/BaseRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/BaseRequestHeader.java index d58919e3c..f34f91541 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/BaseRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/BaseRequestHeader.java @@ -17,11 +17,12 @@ package org.apache.eventmesh.common.protocol.http.header; -import java.util.HashMap; -import java.util.Map; +import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.commons.collections4.MapUtils; -import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; + +import java.util.HashMap; +import java.util.Map; public class BaseRequestHeader extends Header { private String code; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/BaseResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/BaseResponseHeader.java index cd7bbaf59..2a2e2c766 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/BaseResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/BaseResponseHeader.java @@ -18,11 +18,11 @@ package org.apache.eventmesh.common.protocol.http.header; +import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; + import java.util.HashMap; import java.util.Map; -import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; - public class BaseResponseHeader extends Header { private String code; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/Header.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/Header.java index f2e44108e..9a432202a 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/Header.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/Header.java @@ -18,8 +18,6 @@ package org.apache.eventmesh.common.protocol.http.header; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.protocol.http.header.client.HeartbeatRequestHeader; import org.apache.eventmesh.common.protocol.http.header.client.RegRequestHeader; @@ -32,6 +30,8 @@ import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatch import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatchV2RequestHeader; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageRequestHeader; +import java.util.Map; + public abstract class Header { public abstract Map toMap(); diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatRequestHeader.java index 2713e8db2..85fceb694 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatRequestHeader.java @@ -17,16 +17,17 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; + public class HeartbeatRequestHeader extends Header { //request code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeader.java index e0d6e99a1..c1c35c47d 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeader.java @@ -18,12 +18,12 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import java.util.HashMap; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; +import java.util.HashMap; +import java.util.Map; + public class HeartbeatResponseHeader extends Header { private int code; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/RegRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/RegRequestHeader.java index 3b831a0f7..3d88dbf31 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/RegRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/RegRequestHeader.java @@ -17,13 +17,14 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + import java.util.HashMap; import java.util.Map; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/RegResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/RegResponseHeader.java index 54ca794d5..b928b79fd 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/RegResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/RegResponseHeader.java @@ -18,12 +18,12 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import java.util.HashMap; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; +import java.util.HashMap; +import java.util.Map; + public class RegResponseHeader extends Header { //response code, as same as the request code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeRequestHeader.java index e6ba1b79f..adef902d9 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeRequestHeader.java @@ -17,13 +17,14 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + import java.util.HashMap; import java.util.Map; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeResponseHeader.java index f21fbceb8..d16fb4e6a 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeResponseHeader.java @@ -17,12 +17,12 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import java.util.HashMap; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; +import java.util.HashMap; +import java.util.Map; + public class SubscribeResponseHeader extends Header { private int code; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegRequestHeader.java index 7503c7c5f..639d69647 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegRequestHeader.java @@ -17,16 +17,17 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; + public class UnRegRequestHeader extends Header { //request code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegResponseHeader.java index 4338c0305..550e796be 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegResponseHeader.java @@ -18,12 +18,12 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import java.util.HashMap; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; +import java.util.HashMap; +import java.util.Map; + public class UnRegResponseHeader extends Header { private int code; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeRequestHeader.java index d58e8c849..452e27884 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeRequestHeader.java @@ -17,13 +17,14 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + import java.util.HashMap; import java.util.Map; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeResponseHeader.java index f2638234d..bb90b4bf7 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeResponseHeader.java @@ -17,12 +17,12 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import java.util.HashMap; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; +import java.util.HashMap; +import java.util.Map; + public class UnSubscribeResponseHeader extends Header { private int code; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageRequestHeader.java index 99a558796..726c08a72 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageRequestHeader.java @@ -18,15 +18,16 @@ package org.apache.eventmesh.common.protocol.http.header.message; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.collections4.MapUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; + +import java.util.HashMap; +import java.util.Map; + public class PushMessageRequestHeader extends Header { //request code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageRequestHeader.java index 496b1906c..ad4a8ec24 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageRequestHeader.java @@ -17,13 +17,14 @@ package org.apache.eventmesh.common.protocol.http.header.message; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + import java.util.HashMap; import java.util.Map; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeader.java index f52428e4e..20d6f107e 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeader.java @@ -18,12 +18,12 @@ package org.apache.eventmesh.common.protocol.http.header.message; -import java.util.HashMap; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; +import java.util.HashMap; +import java.util.Map; + public class ReplyMessageResponseHeader extends Header { //response code, as same as the request code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchRequestHeader.java index 85492cf2f..9ee63f71b 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchRequestHeader.java @@ -18,13 +18,14 @@ package org.apache.eventmesh.common.protocol.http.header.message; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + import java.util.HashMap; import java.util.Map; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchResponseHeader.java index 8bee0b115..4ddfde68b 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchResponseHeader.java @@ -18,12 +18,12 @@ package org.apache.eventmesh.common.protocol.http.header.message; -import java.util.HashMap; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; +import java.util.HashMap; +import java.util.Map; + public class SendMessageBatchResponseHeader extends Header { //response code, as same as the request code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchV2RequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchV2RequestHeader.java index 15ff19a62..369d2c546 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchV2RequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchV2RequestHeader.java @@ -17,13 +17,14 @@ package org.apache.eventmesh.common.protocol.http.header.message; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + import java.util.HashMap; import java.util.Map; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchV2ResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchV2ResponseHeader.java index ed4898fd0..a188c9713 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchV2ResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageBatchV2ResponseHeader.java @@ -17,12 +17,12 @@ package org.apache.eventmesh.common.protocol.http.header.message; -import java.util.HashMap; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; +import java.util.HashMap; +import java.util.Map; + public class SendMessageBatchV2ResponseHeader extends Header { //response code, as same as the request code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageRequestHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageRequestHeader.java index f637563dc..19774280a 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageRequestHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageRequestHeader.java @@ -17,13 +17,14 @@ package org.apache.eventmesh.common.protocol.http.header.message; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + import java.util.HashMap; import java.util.Map; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageResponseHeader.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageResponseHeader.java index aa10c2a8c..a9db7ff58 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageResponseHeader.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/header/message/SendMessageResponseHeader.java @@ -18,12 +18,12 @@ package org.apache.eventmesh.common.protocol.http.header.message; -import java.util.HashMap; -import java.util.Map; - import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; +import java.util.HashMap; +import java.util.Map; + public class SendMessageResponseHeader extends Header { //response code, as same as the request code diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/EventMeshClientInfo.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/EventMeshClientInfo.java index 93616b2b8..bc97d9785 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/EventMeshClientInfo.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/EventMeshClientInfo.java @@ -29,7 +29,8 @@ // private long lastUpdateTimestamp; // private int protocolNumber; // -// public EventMeshClientInfo(String clientId, String consumerGroup, String endpoint, String language, long version, DataVersion dataVersion, long lastUpdateTimestamp, int protocolNumber) { +// public EventMeshClientInfo(String clientId, String consumerGroup, String endpoint, String language, long version, +// DataVersion dataVersion, long lastUpdateTimestamp, int protocolNumber) { // this.clientId = clientId; // this.endpoint = endpoint; // this.language = language; @@ -106,6 +107,8 @@ // // @Override // public String toString() { -// return "ClientId [clientId=" + clientId + ", consumerGroup=" + consumerGroup + ", endpoint=" + endpoint + ", language=" + language + ", version=" + version + ", dataVersion=" + dataVersion + ", lastUpdateTimestamp=" + lastUpdateTimestamp + "]"; +// return "ClientId [clientId=" + clientId + ", consumerGroup=" + consumerGroup + ", endpoint=" + endpoint +// + ", language=" + language + ", version=" + version + ", dataVersion=" + dataVersion +// + ", lastUpdateTimestamp=" + lastUpdateTimestamp + "]"; // } //} diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/EventMeshMessage.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/EventMeshMessage.java index a51f9e022..945824074 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/EventMeshMessage.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/EventMeshMessage.java @@ -29,7 +29,7 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class EventMeshMessage { - private String topic; + private String topic; private Map properties = new ConcurrentHashMap<>(); - private String body; + private String body; } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Header.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Header.java index dc8e56438..9c9a2890b 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Header.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Header.java @@ -25,10 +25,10 @@ import lombok.Data; @Data public class Header { - private Command cmd; - private int code; - private String desc; - private String seq; + private Command cmd; + private int code; + private String desc; + private String seq; private Map properties = new HashMap<>(); public Header() { @@ -72,4 +72,8 @@ public class Header { return property.toString(); } + public Command getCommand() { + return this.cmd; + } + } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/HeartBeatInfo.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/HeartBeatInfo.java index c12d6917d..9bd64ec87 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/HeartBeatInfo.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/HeartBeatInfo.java @@ -60,10 +60,12 @@ public class HeartBeatInfo { @Override public String toString() { - return "HeartBeatInfo{" + - "serviceId='" + serviceId + '\'' + - ", instanceId='" + instanceId + '\'' + - ", topicList=" + topicList + - '}'; + return "HeartBeatInfo{" + + "serviceId='" + serviceId + + '\'' + + ", instanceId='" + instanceId + + '\'' + + ", topicList=" + topicList + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Package.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Package.java index 1a2a223bf..43c5d1a10 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Package.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Package.java @@ -17,12 +17,14 @@ package org.apache.eventmesh.common.protocol.tcp; + import org.apache.eventmesh.common.protocol.ProtocolTransportObject; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; + @Data @NoArgsConstructor @AllArgsConstructor diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/RedirectInfo.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/RedirectInfo.java index 81373f848..8b552bfd2 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/RedirectInfo.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/RedirectInfo.java @@ -47,9 +47,10 @@ public class RedirectInfo { @Override public String toString() { - return "RedirectInfo{" + - "ip='" + ip + '\'' + - ", port=" + port + - '}'; + return "RedirectInfo{" + + "ip='" + ip + + '\'' + + ", port=" + port + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/RegisterInfo.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/RegisterInfo.java index 44303f2f5..750e29ed5 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/RegisterInfo.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/RegisterInfo.java @@ -40,8 +40,8 @@ public class RegisterInfo { @Override public String toString() { - return "RegisterInfo{" + - "topicList=" + topicList + - '}'; + return "RegisterInfo{" + + "topicList=" + topicList + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Subscription.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Subscription.java index 3fb74b95b..ad9f26941 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Subscription.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/Subscription.java @@ -43,8 +43,8 @@ public class Subscription { @Override public String toString() { - return "Subscription{" + - "topicList=" + topicList + - '}'; + return "Subscription{" + + "topicList=" + topicList + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/UnRegisterInfo.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/UnRegisterInfo.java index 33961ad48..d4c8626a5 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/UnRegisterInfo.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/UnRegisterInfo.java @@ -60,10 +60,12 @@ public class UnRegisterInfo { @Override public String toString() { - return "UnRegisterInfo{" + - "serviceId='" + serviceId + '\'' + - ", instanceId='" + instanceId + '\'' + - ", topicList=" + topicList + - '}'; + return "UnRegisterInfo{" + + "serviceId='" + serviceId + + '\'' + + ", instanceId='" + instanceId + + '\'' + + ", topicList=" + topicList + + '}'; } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/UserAgent.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/UserAgent.java index 1d0c8d3fa..077ae9a37 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/UserAgent.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/UserAgent.java @@ -17,11 +17,11 @@ package org.apache.eventmesh.common.protocol.tcp; +import java.util.Objects; + import lombok.Builder; import lombok.Data; -import java.util.Objects; - @Data @Builder public class UserAgent { @@ -29,9 +29,9 @@ public class UserAgent { private String env; private String subsystem; private String path; - private int pid; + private int pid; private String host; - private int port; + private int port; private String version; private String username; private String password; @@ -40,7 +40,7 @@ public class UserAgent { private String consumerGroup; private String purpose; @Builder.Default - private int unack = 0; + private int unack = 0; public UserAgent() { } @@ -67,28 +67,67 @@ public class UserAgent { @Override public String toString() { return String.format( - "UserAgent{env='%s', subsystem='%s', path='%s', pid=%d, host='%s', port=%d, version='%s', idc='%s', purpose='%s', unack='%d'}", - env, subsystem, path, pid, host, port, version, idc, purpose, unack); + "UserAgent{env='%s', subsystem='%s', path='%s', pid=%d, host='%s', port=%d, version='%s', idc='%s', purpose='%s', unack='%d'}", + env, subsystem, path, pid, host, port, version, idc, purpose, unack); } @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } UserAgent userAgent = (UserAgent) o; - if (pid != userAgent.pid) return false; - if (port != userAgent.port) return false; - if (unack != userAgent.unack) return false; - if (!Objects.equals(subsystem, userAgent.subsystem)) return false; - if (!Objects.equals(path, userAgent.path)) return false; - if (!Objects.equals(host, userAgent.host)) return false; - if (!Objects.equals(purpose, userAgent.purpose)) return false; - if (!Objects.equals(version, userAgent.version)) return false; - if (!Objects.equals(username, userAgent.username)) return false; - if (!Objects.equals(password, userAgent.password)) return false; - if (!Objects.equals(env, userAgent.env)) return false; + if (pid != userAgent.pid) { + return false; + } + + if (port != userAgent.port) { + return false; + } + + if (unack != userAgent.unack) { + return false; + } + + if (!Objects.equals(subsystem, userAgent.subsystem)) { + return false; + } + + + if (!Objects.equals(path, userAgent.path)) { + return false; + } + + if (!Objects.equals(host, userAgent.host)) { + return false; + } + + if (!Objects.equals(purpose, userAgent.purpose)) { + return false; + } + + if (!Objects.equals(version, userAgent.version)) { + return false; + } + + if (!Objects.equals(username, userAgent.username)) { + return false; + } + + if (!Objects.equals(password, userAgent.password)) { + return false; + } + + if (!Objects.equals(env, userAgent.env)) { + return false; + } + return Objects.equals(idc, userAgent.idc); } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/codec/Codec.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/codec/Codec.java index ab1d46120..b1593fe81 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/codec/Codec.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/codec/Codec.java @@ -34,6 +34,11 @@ import java.util.Arrays; import java.util.List; import java.util.TimeZone; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.MessageToByteEncoder; +import io.netty.handler.codec.ReplayingDecoder; + import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -41,24 +46,20 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.google.common.base.Preconditions; -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.MessageToByteEncoder; -import io.netty.handler.codec.ReplayingDecoder; import lombok.extern.slf4j.Slf4j; @Slf4j public class Codec { - private static final int FRAME_MAX_LENGTH = 1024 * 1024 * 4; - private static final Charset DEFAULT_CHARSET = Charset.forName(Constants.DEFAULT_CHARSET); + private static final int FRAME_MAX_LENGTH = 1024 * 1024 * 4; + private static final Charset DEFAULT_CHARSET = Charset.forName(Constants.DEFAULT_CHARSET); private static final byte[] CONSTANT_MAGIC_FLAG = serializeBytes("EventMesh"); - private static final byte[] VERSION = serializeBytes("0000"); + private static final byte[] VERSION = serializeBytes("0000"); // todo: move to constants public static String CLOUD_EVENTS_PROTOCOL_NAME = "cloudevents"; - public static String EM_MESSAGE_PROTOCOL_NAME = "eventmeshmessage"; + public static String EM_MESSAGE_PROTOCOL_NAME = "eventmeshmessage"; public static String OPEN_MESSAGE_PROTOCOL_NAME = "openmessage"; // todo: use json util @@ -178,8 +179,8 @@ public class Codec { private void validateFlag(byte[] flagBytes, byte[] versionBytes, ChannelHandlerContext ctx) { if (!Arrays.equals(flagBytes, CONSTANT_MAGIC_FLAG) || !Arrays.equals(versionBytes, VERSION)) { String errorMsg = String.format( - "invalid magic flag or version|flag=%s|version=%s|remoteAddress=%s", - deserializeBytes(flagBytes), deserializeBytes(versionBytes), ctx.channel().remoteAddress()); + "invalid magic flag or version|flag=%s|version=%s|remoteAddress=%s", + deserializeBytes(flagBytes), deserializeBytes(versionBytes), ctx.channel().remoteAddress()); throw new IllegalArgumentException(errorMsg); } } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/IPUtils.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/IPUtils.java index 434f5a580..b96ed17da 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/IPUtils.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/IPUtils.java @@ -36,8 +36,9 @@ public class IPUtils { // if the progress works under docker environment // return the host ip about this docker located from environment value String dockerHostIp = System.getenv("docker_host_ip"); - if (dockerHostIp != null && !"".equals(dockerHostIp)) + if (dockerHostIp != null && !"".equals(dockerHostIp)) { return dockerHostIp; + } //priority of networkInterface when generating client ip String priority = System.getProperty("networkInterface.priority", "eth0 preferList.indexOf(preferNetworkInterface.getName())) { preferNetworkInterface = networkInterface; } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/RandomStringUtils.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/RandomStringUtils.java index aaeaec84a..bc1455419 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/RandomStringUtils.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/RandomStringUtils.java @@ -22,7 +22,7 @@ import org.apache.commons.text.RandomStringGenerator; public class RandomStringUtils { private static final RandomStringGenerator RANDOM_NUM_GENERATOR = new RandomStringGenerator.Builder() - .withinRange('0', '9').build(); + .withinRange('0', '9').build(); public static String generateNum(int length) { return RANDOM_NUM_GENERATOR.generate(length); diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/EventMeshMessageTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/EventMeshMessageTest.java index 006a1d1cb..b0df5405f 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/EventMeshMessageTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/EventMeshMessageTest.java @@ -68,7 +68,7 @@ public class EventMeshMessageTest { prop.put("key1", "value1"); prop.put("key2", "value2"); return EventMeshMessage.builder() - .prop(prop) - .build(); + .prop(prop) + .build(); } } diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelectorTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelectorTest.java index 4f7198f89..728244117 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelectorTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/RandomLoadBalanceSelectorTest.java @@ -17,17 +17,17 @@ package org.apache.eventmesh.common.loadbalance; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - public class RandomLoadBalanceSelectorTest { private RandomLoadBalanceSelector randomLoadBalanceSelector; diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/WeightRandomLoadBalanceSelectorTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/WeightRandomLoadBalanceSelectorTest.java index 533163032..beb5e659e 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/WeightRandomLoadBalanceSelectorTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/WeightRandomLoadBalanceSelectorTest.java @@ -17,10 +17,8 @@ package org.apache.eventmesh.common.loadbalance; -import org.junit.Assert; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import static java.util.stream.Collectors.groupingBy; +import static java.util.stream.Collectors.summingInt; import java.lang.reflect.Field; import java.util.ArrayList; @@ -29,8 +27,10 @@ import java.util.Map; import java.util.function.Function; import java.util.stream.IntStream; -import static java.util.stream.Collectors.groupingBy; -import static java.util.stream.Collectors.summingInt; +import org.junit.Assert; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class WeightRandomLoadBalanceSelectorTest { diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelectorTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelectorTest.java index d37aed367..cf43ee48e 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelectorTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/loadbalance/WeightRoundRobinLoadBalanceSelectorTest.java @@ -17,17 +17,17 @@ package org.apache.eventmesh.common.loadbalance; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - public class WeightRoundRobinLoadBalanceSelectorTest { private Logger logger = LoggerFactory.getLogger(WeightRoundRobinLoadBalanceSelectorTest.class); diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBodyTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBodyTest.java index edba78248..4a8850ba0 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBodyTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/body/BaseResponseBodyTest.java @@ -17,12 +17,13 @@ package org.apache.eventmesh.common.protocol.http.body; +import static org.hamcrest.CoreMatchers.is; + import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; + import org.junit.Assert; import org.junit.Test; -import static org.hamcrest.CoreMatchers.is; - public class BaseResponseBodyTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/BaseRequestHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/BaseRequestHeaderTest.java index e511f192c..476896390 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/BaseRequestHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/BaseRequestHeaderTest.java @@ -18,14 +18,15 @@ package org.apache.eventmesh.common.protocol.http.header; +import static org.hamcrest.CoreMatchers.is; + import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; -import org.junit.Assert; -import org.junit.Test; import java.util.HashMap; import java.util.Map; -import static org.hamcrest.CoreMatchers.is; +import org.junit.Assert; +import org.junit.Test; public class BaseRequestHeaderTest { diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/BaseResponseHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/BaseResponseHeaderTest.java index f963eea55..23dc6540b 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/BaseResponseHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/BaseResponseHeaderTest.java @@ -17,12 +17,13 @@ package org.apache.eventmesh.common.protocol.http.header; +import static org.hamcrest.CoreMatchers.is; + import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; + import org.junit.Assert; import org.junit.Test; -import static org.hamcrest.CoreMatchers.is; - public class BaseResponseHeaderTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/AbstractRequestHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/AbstractRequestHeaderTest.java index 115aa12ee..0726e6f07 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/AbstractRequestHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/AbstractRequestHeaderTest.java @@ -19,6 +19,7 @@ package org.apache.eventmesh.common.protocol.http.header.client; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; + import org.junit.Assert; public class AbstractRequestHeaderTest { diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/AbstractResponseHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/AbstractResponseHeaderTest.java index 0b5b0bda9..54e1f0c35 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/AbstractResponseHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/AbstractResponseHeaderTest.java @@ -17,11 +17,12 @@ package org.apache.eventmesh.common.protocol.http.header.client; +import static org.hamcrest.CoreMatchers.is; + import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.header.Header; -import org.junit.Assert; -import static org.hamcrest.CoreMatchers.is; +import org.junit.Assert; public class AbstractResponseHeaderTest { diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatRequestHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatRequestHeaderTest.java index 7b1afaeea..c09359e3f 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatRequestHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatRequestHeaderTest.java @@ -18,10 +18,10 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import org.junit.Test; - import java.util.HashMap; +import org.junit.Test; + public class HeartbeatRequestHeaderTest extends AbstractRequestHeaderTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeaderTest.java index d27aeaf8d..a437b8f70 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/HeartbeatResponseHeaderTest.java @@ -17,12 +17,8 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; -import org.junit.Assert; import org.junit.Test; -import static org.hamcrest.CoreMatchers.is; - public class HeartbeatResponseHeaderTest extends AbstractResponseHeaderTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/RegRequestHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/RegRequestHeaderTest.java index dbeb33bf2..24f7eb385 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/RegRequestHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/RegRequestHeaderTest.java @@ -17,10 +17,10 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import org.junit.Test; - import java.util.HashMap; +import org.junit.Test; + public class RegRequestHeaderTest extends AbstractRequestHeaderTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeRequestHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeRequestHeaderTest.java index e88368890..af79ff03f 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeRequestHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/SubscribeRequestHeaderTest.java @@ -17,10 +17,10 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import org.junit.Test; - import java.util.HashMap; +import org.junit.Test; + public class SubscribeRequestHeaderTest extends AbstractRequestHeaderTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegRequestHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegRequestHeaderTest.java index 9e77a2171..50b8e8d6e 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegRequestHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/UnRegRequestHeaderTest.java @@ -18,10 +18,10 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import org.junit.Test; - import java.util.HashMap; +import org.junit.Test; + public class UnRegRequestHeaderTest extends AbstractRequestHeaderTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeRequestHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeRequestHeaderTest.java index 5ee7c9e50..562d92d83 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeRequestHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/client/UnSubscribeRequestHeaderTest.java @@ -17,10 +17,10 @@ package org.apache.eventmesh.common.protocol.http.header.client; -import org.junit.Test; - import java.util.HashMap; +import org.junit.Test; + public class UnSubscribeRequestHeaderTest extends AbstractRequestHeaderTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageRequestHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageRequestHeaderTest.java index 4f4d96efe..d68378957 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageRequestHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageRequestHeaderTest.java @@ -17,17 +17,18 @@ package org.apache.eventmesh.common.protocol.http.header.message; +import static org.hamcrest.CoreMatchers.is; + import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; import java.util.HashMap; import java.util.Map; -import static org.hamcrest.CoreMatchers.is; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; public class PushMessageRequestHeaderTest { diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageResponseHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageResponseHeaderTest.java index 174d57b88..3446ef0e2 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageResponseHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/PushMessageResponseHeaderTest.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.common.protocol.http.header.message; +import static org.hamcrest.CoreMatchers.is; + import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; + import org.junit.Assert; import org.junit.Test; -import static org.hamcrest.CoreMatchers.is; - public class PushMessageResponseHeaderTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageRequestHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageRequestHeaderTest.java index f8625c0e7..eec5d1854 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageRequestHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageRequestHeaderTest.java @@ -17,17 +17,18 @@ package org.apache.eventmesh.common.protocol.http.header.message; +import static org.hamcrest.CoreMatchers.is; + import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; import java.util.HashMap; import java.util.Map; -import static org.hamcrest.CoreMatchers.is; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; public class ReplyMessageRequestHeaderTest { diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeaderTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeaderTest.java index a3b90da3e..a6714a885 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeaderTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/http/header/message/ReplyMessageResponseHeaderTest.java @@ -17,12 +17,13 @@ package org.apache.eventmesh.common.protocol.http.header.message; +import static org.hamcrest.CoreMatchers.is; + import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; + import org.junit.Assert; import org.junit.Test; -import static org.hamcrest.CoreMatchers.is; - public class ReplyMessageResponseHeaderTest { @Test diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/tcp/codec/CodecTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/tcp/codec/CodecTest.java index 365717e23..bb66e5c04 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/tcp/codec/CodecTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/protocol/tcp/codec/CodecTest.java @@ -17,19 +17,26 @@ package org.apache.eventmesh.common.protocol.tcp.codec; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.PooledByteBufAllocator; +import org.apache.eventmesh.common.protocol.tcp.Command; +import org.apache.eventmesh.common.protocol.tcp.Header; import org.apache.eventmesh.common.protocol.tcp.Package; + +import java.util.ArrayList; + import org.junit.Assert; import org.junit.Test; -import java.util.ArrayList; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.PooledByteBufAllocator; public class CodecTest { @Test public void testCodec() throws Exception { - Package testP = new Package(); + Header header = new Header(); + header.setCmd(Command.HELLO_REQUEST); + Package testP = new Package(header); + testP.setBody(new Object()); Codec.Encoder ce = new Codec.Encoder(); ByteBuf buf = PooledByteBufAllocator.DEFAULT.buffer(); ce.encode(null, testP, buf); @@ -37,7 +44,7 @@ public class CodecTest { ArrayList result = new ArrayList<>(); cd.decode(null, buf, result); Assert.assertNotNull(result.get(0)); - Assert.assertEquals(result.get(0).toString(), testP.toString()); + Assert.assertEquals(testP.getHeader(), ((Package) result.get(0)).getHeader()); } } diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/ThreadUtilsTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/ThreadUtilsTest.java index a9aeb0e38..8aebf8833 100644 --- a/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/ThreadUtilsTest.java +++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/ThreadUtilsTest.java @@ -49,7 +49,9 @@ public class ThreadUtilsTest { try { ThreadUtils.randomSleep(50); } catch (Exception ignore) { + //ignore } + sleepTime = System.currentTimeMillis() - startTime; } } diff --git a/eventmesh-common/src/test/resources/configuration.properties b/eventmesh-common/src/test/resources/configuration.properties index a5e0828ca..d4a7542db 100644 --- a/eventmesh-common/src/test/resources/configuration.properties +++ b/eventmesh-common/src/test/resources/configuration.properties @@ -14,7 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # - eventMesh.server.env=value1 eventMesh.server.idc=value2 eventMesh.sysid=3 diff --git a/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/AbstractContext.java b/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/AbstractContext.java index 559a082bf..4fa7bd2ec 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/AbstractContext.java +++ b/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/AbstractContext.java @@ -17,5 +17,8 @@ package org.apache.eventmesh.api; +/** + * AbstractContext + */ public interface AbstractContext { } diff --git a/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/RequestReplyCallback.java b/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/RequestReplyCallback.java index 3def887e0..9fdfa666b 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/RequestReplyCallback.java +++ b/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/RequestReplyCallback.java @@ -19,6 +19,9 @@ package org.apache.eventmesh.api; import io.cloudevents.CloudEvent; +/** + * RequestReplyCallback + */ public interface RequestReplyCallback { void onSuccess(CloudEvent event); diff --git a/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/connector/ConnectorResourceService.java b/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/connector/ConnectorResourceService.java index d701639ae..8b6cff71c 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/connector/ConnectorResourceService.java +++ b/eventmesh-connector-plugin/eventmesh-connector-api/src/main/java/org/apache/eventmesh/api/connector/ConnectorResourceService.java @@ -14,11 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.api.connector; import org.apache.eventmesh.spi.EventMeshExtensionType; import org.apache.eventmesh.spi.EventMeshSPI; +/** + * ConnectorResourceService + */ @EventMeshSPI(isSingleton = true, eventMeshExtensionType = EventMeshExtensionType.CONNECTOR) public interface ConnectorResourceService { @@ -30,7 +34,7 @@ public interface ConnectorResourceService { void init() throws Exception; /** - *Resource release in connector,such as,some public threadpool if exist + * Resource release in connector,such as,some public threadpool if exist * * @throws Exception */ diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/admin/command/CreateTopicCommand.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/admin/command/CreateTopicCommand.java index 53f182256..f1e325e55 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/admin/command/CreateTopicCommand.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/admin/command/CreateTopicCommand.java @@ -43,7 +43,7 @@ public class CreateTopicCommand extends Command { init(); adminExt.start(); Set brokersAddr = CommandUtil.fetchMasterAddrByClusterName( - adminExt, clusterName); + adminExt, clusterName); for (String masterAddr : brokersAddr) { TopicConfig topicConfig = new TopicConfig(); topicConfig.setTopicName(topicName); diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/RocketMQMessageFactory.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/RocketMQMessageFactory.java index 966be1284..24699ef9f 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/RocketMQMessageFactory.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/RocketMQMessageFactory.java @@ -17,6 +17,10 @@ package org.apache.eventmesh.connector.rocketmq.cloudevent; +import org.apache.eventmesh.connector.rocketmq.cloudevent.impl.RocketMQBinaryMessageReader; +import org.apache.eventmesh.connector.rocketmq.cloudevent.impl.RocketMQHeaders; +import org.apache.eventmesh.connector.rocketmq.cloudevent.impl.RocketMQMessageWriter; + import org.apache.rocketmq.common.message.Message; import java.util.Map; @@ -25,16 +29,11 @@ import javax.annotation.ParametersAreNonnullByDefault; import io.cloudevents.core.message.MessageReader; import io.cloudevents.core.message.MessageWriter; -import io.cloudevents.core.message.impl.GenericStructuredMessageReader; import io.cloudevents.core.message.impl.MessageUtils; import io.cloudevents.lang.Nullable; import io.cloudevents.rw.CloudEventRWException; import io.cloudevents.rw.CloudEventWriter; -import org.apache.eventmesh.connector.rocketmq.cloudevent.impl.RocketMQBinaryMessageReader; -import org.apache.eventmesh.connector.rocketmq.cloudevent.impl.RocketMQHeaders; -import org.apache.eventmesh.connector.rocketmq.cloudevent.impl.RocketMQMessageWriter; - @ParametersAreNonnullByDefault public final class RocketMQMessageFactory { @@ -50,13 +49,13 @@ public final class RocketMQMessageFactory { public static MessageReader createReader(final Map props, @Nullable final byte[] body) - throws CloudEventRWException { + throws CloudEventRWException { return MessageUtils.parseStructuredOrBinaryMessage( - () -> null, - format -> null, - () -> props.get(RocketMQHeaders.SPEC_VERSION), - sv -> new RocketMQBinaryMessageReader(sv, props, body) + () -> null, + format -> null, + () -> props.get(RocketMQHeaders.SPEC_VERSION), + sv -> new RocketMQBinaryMessageReader(sv, props, body) ); } diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQBinaryMessageReader.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQBinaryMessageReader.java index 8b120380b..fe95bfbfd 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQBinaryMessageReader.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQBinaryMessageReader.java @@ -26,14 +26,14 @@ import io.cloudevents.core.data.BytesCloudEventData; import io.cloudevents.core.message.impl.BaseGenericBinaryMessageReaderImpl; public class RocketMQBinaryMessageReader - extends BaseGenericBinaryMessageReaderImpl { + extends BaseGenericBinaryMessageReaderImpl { private final Map headers; public RocketMQBinaryMessageReader(SpecVersion version, Map headers, byte[] payload) { super(version, - payload != null && payload.length > 0 ? BytesCloudEventData.wrap(payload) : null); + payload != null && payload.length > 0 ? BytesCloudEventData.wrap(payload) : null); Objects.requireNonNull(headers); this.headers = headers; diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQHeaders.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQHeaders.java index 64600ae0a..793092355 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQHeaders.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQHeaders.java @@ -27,10 +27,10 @@ public class RocketMQHeaders { public static final String CE_PREFIX = "CE_"; protected static final Map ATTRIBUTES_TO_HEADERS = - MessageUtils.generateAttributesToHeadersMapping(v -> v); + MessageUtils.generateAttributesToHeadersMapping(v -> v); public static final String CONTENT_TYPE = - ATTRIBUTES_TO_HEADERS.get(CloudEventV1.DATACONTENTTYPE); + ATTRIBUTES_TO_HEADERS.get(CloudEventV1.DATACONTENTTYPE); public static final String SPEC_VERSION = ATTRIBUTES_TO_HEADERS.get(CloudEventV1.SPECVERSION); diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQMessageWriter.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQMessageWriter.java index 60f0609a3..e1f87869c 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQMessageWriter.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/cloudevent/impl/RocketMQMessageWriter.java @@ -29,7 +29,7 @@ import io.cloudevents.rw.CloudEventWriter; public final class RocketMQMessageWriter - implements MessageWriter, Message>, CloudEventWriter { + implements MessageWriter, Message>, CloudEventWriter { private Message message; @@ -66,7 +66,7 @@ public final class RocketMQMessageWriter @Override public CloudEventContextWriter withContextAttribute(String name, String value) - throws CloudEventRWException { + throws CloudEventRWException { //String propName = RocketMQHeaders.ATTRIBUTES_TO_HEADERS.get(name); //if (propName == null) { @@ -85,7 +85,7 @@ public final class RocketMQMessageWriter @Override public Message setEvent(final EventFormat format, final byte[] value) - throws CloudEventRWException { + throws CloudEventRWException { message.putUserProperty(RocketMQHeaders.CONTENT_TYPE, format.serializedContentType()); message.setBody(value); return message; diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/config/ClientConfiguration.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/config/ClientConfiguration.java index 20e6d87b6..f51576d3b 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/config/ClientConfiguration.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/config/ClientConfiguration.java @@ -23,22 +23,22 @@ import com.google.common.base.Preconditions; public class ClientConfiguration { - public String namesrvAddr = ""; - public String clientUserName = "username"; - public String clientPass = "password"; - public Integer consumeThreadMin = 2; - public Integer consumeThreadMax = 2; - public Integer consumeQueueSize = 10000; - public Integer pullBatchSize = 32; - public Integer ackWindow = 1000; - public Integer pubWindow = 100; - public long consumeTimeout = 0L; - public Integer pollNameServerInterval = 10 * 1000; + public String namesrvAddr = ""; + public String clientUserName = "username"; + public String clientPass = "password"; + public Integer consumeThreadMin = 2; + public Integer consumeThreadMax = 2; + public Integer consumeQueueSize = 10000; + public Integer pullBatchSize = 32; + public Integer ackWindow = 1000; + public Integer pubWindow = 100; + public long consumeTimeout = 0L; + public Integer pollNameServerInterval = 10 * 1000; public Integer heartbeatBrokerInterval = 30 * 1000; - public Integer rebalanceInterval = 20 * 1000; - public String clusterName = ""; - public String accessKey = ""; - public String secretKey = ""; + public Integer rebalanceInterval = 20 * 1000; + public String clusterName = ""; + public String accessKey = ""; + public String secretKey = ""; public void init() { @@ -54,86 +54,86 @@ public class ClientConfiguration { String namesrvAddrStr = ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_NAMESRV_ADDR); Preconditions.checkState(StringUtils.isNotEmpty(namesrvAddrStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_NAMESRV_ADDR)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_NAMESRV_ADDR)); namesrvAddr = StringUtils.trim(namesrvAddrStr); String consumeThreadPoolMinStr = - ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MIN); + ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MIN); if (StringUtils.isNotEmpty(consumeThreadPoolMinStr)) { Preconditions.checkState(StringUtils.isNumeric(consumeThreadPoolMinStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MIN)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MIN)); consumeThreadMin = Integer.valueOf(consumeThreadPoolMinStr); } String consumeThreadPoolMaxStr = - ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MAX); + ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MAX); if (StringUtils.isNotEmpty(consumeThreadPoolMaxStr)) { Preconditions.checkState(StringUtils.isNumeric(consumeThreadPoolMaxStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MAX)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MAX)); consumeThreadMax = Integer.valueOf(consumeThreadPoolMaxStr); } String consumerThreadPoolQueueSizeStr = - ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_QUEUESIZE); + ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_QUEUESIZE); if (StringUtils.isNotEmpty(consumerThreadPoolQueueSizeStr)) { Preconditions.checkState(StringUtils.isNumeric(consumerThreadPoolQueueSizeStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_QUEUESIZE)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_QUEUESIZE)); consumeQueueSize = Integer.valueOf(consumerThreadPoolQueueSizeStr); } String clientAckWindowStr = ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_ACK_WINDOW); if (StringUtils.isNotEmpty(clientAckWindowStr)) { Preconditions.checkState(StringUtils.isNumeric(clientAckWindowStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_ACK_WINDOW)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_ACK_WINDOW)); ackWindow = Integer.valueOf(clientAckWindowStr); } String clientPubWindowStr = ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_PUB_WINDOW); if (StringUtils.isNotEmpty(clientPubWindowStr)) { Preconditions.checkState(StringUtils.isNumeric(clientPubWindowStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_PUB_WINDOW)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_PUB_WINDOW)); pubWindow = Integer.valueOf(clientPubWindowStr); } String consumeTimeoutStr = - ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_CONSUME_TIMEOUT); + ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_CONSUME_TIMEOUT); if (StringUtils.isNotBlank(consumeTimeoutStr)) { Preconditions.checkState(StringUtils.isNumeric(consumeTimeoutStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_CONSUME_TIMEOUT)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_CONSUME_TIMEOUT)); consumeTimeout = Long.valueOf(consumeTimeoutStr); } String clientPullBatchSizeStr = - ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_PULL_BATCHSIZE); + ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_PULL_BATCHSIZE); if (StringUtils.isNotEmpty(clientPullBatchSizeStr)) { Preconditions.checkState(StringUtils.isNumeric(clientPullBatchSizeStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_PULL_BATCHSIZE)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_PULL_BATCHSIZE)); pullBatchSize = Integer.valueOf(clientPullBatchSizeStr); } String clientPollNamesrvIntervalStr = - ConfigurationWrapper.getProp( - ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_POLL_NAMESRV_INTERVAL); + ConfigurationWrapper.getProp( + ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_POLL_NAMESRV_INTERVAL); if (StringUtils.isNotEmpty(clientPollNamesrvIntervalStr)) { Preconditions.checkState(StringUtils.isNumeric(clientPollNamesrvIntervalStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_POLL_NAMESRV_INTERVAL)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_POLL_NAMESRV_INTERVAL)); pollNameServerInterval = Integer.valueOf(clientPollNamesrvIntervalStr); } String clientHeartbeatBrokerIntervalStr = - ConfigurationWrapper.getProp( - ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_HEARTBEAT_BROKER_INTERVAL); + ConfigurationWrapper.getProp( + ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_HEARTBEAT_BROKER_INTERVAL); if (StringUtils.isNotEmpty(clientHeartbeatBrokerIntervalStr)) { Preconditions.checkState(StringUtils.isNumeric(clientHeartbeatBrokerIntervalStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_HEARTBEAT_BROKER_INTERVAL)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_HEARTBEAT_BROKER_INTERVAL)); heartbeatBrokerInterval = Integer.valueOf(clientHeartbeatBrokerIntervalStr); } String clientRebalanceIntervalIntervalStr = - ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_REBALANCE_INTERVAL); + ConfigurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_REBALANCE_INTERVAL); if (StringUtils.isNotEmpty(clientRebalanceIntervalIntervalStr)) { Preconditions.checkState(StringUtils.isNumeric(clientRebalanceIntervalIntervalStr), - String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_REBALANCE_INTERVAL)); + String.format("%s error", ConfKeys.KEYS_EVENTMESH_ROCKETMQ_CLIENT_REBALANCE_INTERVAL)); rebalanceInterval = Integer.valueOf(clientRebalanceIntervalIntervalStr); } @@ -162,40 +162,40 @@ public class ClientConfiguration { public static String KEYS_EVENTMESH_ROCKETMQ_PASSWORD = "eventMesh.server.rocketmq.password"; public static String KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MIN = - "eventMesh.server.rocketmq.client.consumeThreadMin"; + "eventMesh.server.rocketmq.client.consumeThreadMin"; public static String KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_MAX = - "eventMesh.server.rocketmq.client.consumeThreadMax"; + "eventMesh.server.rocketmq.client.consumeThreadMax"; public static String KEYS_EVENTMESH_ROCKETMQ_CONSUME_THREADPOOL_QUEUESIZE = - "eventMesh.server.rocketmq.client.consumeThreadPoolQueueSize"; + "eventMesh.server.rocketmq.client.consumeThreadPoolQueueSize"; public static String KEYS_EVENTMESH_ROCKETMQ_CLIENT_ACK_WINDOW = "eventMesh.server.rocketmq.client.ackwindow"; public static String KEYS_EVENTMESH_ROCKETMQ_CLIENT_PUB_WINDOW = "eventMesh.server.rocketmq.client.pubwindow"; public static String KEYS_EVENTMESH_ROCKETMQ_CLIENT_CONSUME_TIMEOUT = - "eventMesh.server.rocketmq.client.comsumeTimeoutInMin"; + "eventMesh.server.rocketmq.client.comsumeTimeoutInMin"; public static String KEYS_EVENTMESH_ROCKETMQ_CLIENT_PULL_BATCHSIZE = - "eventMesh.server.rocketmq.client.pullBatchSize"; + "eventMesh.server.rocketmq.client.pullBatchSize"; public static String KEYS_EVENTMESH_ROCKETMQ_CLIENT_POLL_NAMESRV_INTERVAL = - "eventMesh.server.rocketmq.client.pollNameServerInterval"; + "eventMesh.server.rocketmq.client.pollNameServerInterval"; public static String KEYS_EVENTMESH_ROCKETMQ_CLIENT_HEARTBEAT_BROKER_INTERVAL = - "eventMesh.server.rocketmq.client.heartbeatBrokerInterval"; + "eventMesh.server.rocketmq.client.heartbeatBrokerInterval"; public static String KEYS_EVENTMESH_ROCKETMQ_CLIENT_REBALANCE_INTERVAL = - "eventMesh.server.rocketmq.client.rebalanceInterval"; + "eventMesh.server.rocketmq.client.rebalanceInterval"; public static String KEYS_EVENTMESH_ROCKETMQ_CLUSTER = "eventMesh.server.rocketmq.cluster"; public static String KEYS_EVENTMESH_ROCKETMQ_ACCESS_KEY = - "eventMesh.server.rocketmq.accessKey"; + "eventMesh.server.rocketmq.accessKey"; public static String KEYS_EVENTMESH_ROCKETMQ_SECRET_KEY = - "eventMesh.server.rocketmq.secretKey"; + "eventMesh.server.rocketmq.secretKey"; } } \ No newline at end of file diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/config/ConfigurationWrapper.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/config/ConfigurationWrapper.java index 9ff3861ad..51303b222 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/config/ConfigurationWrapper.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/config/ConfigurationWrapper.java @@ -44,7 +44,7 @@ public class ConfigurationWrapper { properties.load(new BufferedReader(new FileReader(configFile))); } catch (IOException e) { throw new IllegalArgumentException( - String.format("Cannot load RocketMQ configuration file from :%s", configFile)); + String.format("Cannot load RocketMQ configuration file from :%s", configFile)); } } diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/connector/ConnectorResourceServiceRocketmqImpl.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/connector/ConnectorResourceServiceRocketmqImpl.java index f802ec077..f26747e9d 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/connector/ConnectorResourceServiceRocketmqImpl.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/connector/ConnectorResourceServiceRocketmqImpl.java @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.connector.rocketmq.connector; import org.apache.eventmesh.api.connector.ConnectorResourceService; diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/consumer/PushConsumerImpl.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/consumer/PushConsumerImpl.java index e7e5ae8e7..348e4364b 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/consumer/PushConsumerImpl.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/consumer/PushConsumerImpl.java @@ -32,15 +32,14 @@ import org.apache.eventmesh.connector.rocketmq.patch.EventMeshConsumeConcurrentl import org.apache.eventmesh.connector.rocketmq.patch.EventMeshConsumeConcurrentlyStatus; import org.apache.eventmesh.connector.rocketmq.patch.EventMeshMessageListenerConcurrently; import org.apache.eventmesh.connector.rocketmq.utils.BeanUtils; -import org.apache.eventmesh.connector.rocketmq.utils.OMSUtil; import org.apache.eventmesh.connector.rocketmq.utils.CloudEventUtils; +import org.apache.eventmesh.connector.rocketmq.utils.OMSUtil; import org.apache.commons.lang3.StringUtils; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.client.exception.MQClientException; import org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService; import org.apache.rocketmq.client.impl.consumer.ConsumeMessageService; -import org.apache.rocketmq.client.utils.MessageUtil; import org.apache.rocketmq.common.message.MessageConst; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.common.protocol.heartbeat.MessageModel; @@ -76,7 +75,7 @@ public class PushConsumerImpl { String consumerGroup = clientConfig.getConsumerId(); if (null == consumerGroup || consumerGroup.isEmpty()) { throw new ConnectorRuntimeException( - "Consumer Group is necessary for RocketMQ, please set it."); + "Consumer Group is necessary for RocketMQ, please set it."); } this.rocketmqPushConsumer.setConsumerGroup(consumerGroup); this.rocketmqPushConsumer.setMaxReconsumeTimes(clientConfig.getRmqMaxRedeliveryTimes()); @@ -84,7 +83,7 @@ public class PushConsumerImpl { this.rocketmqPushConsumer.setConsumeThreadMax(clientConfig.getRmqMaxConsumeThreadNums()); this.rocketmqPushConsumer.setConsumeThreadMin(clientConfig.getRmqMinConsumeThreadNums()); this.rocketmqPushConsumer.setMessageModel( - MessageModel.valueOf(clientConfig.getMessageModel())); + MessageModel.valueOf(clientConfig.getMessageModel())); String consumerId = OMSUtil.buildInstanceName(); //this.rocketmqPushConsumer.setInstanceName(consumerId); @@ -157,14 +156,14 @@ public class PushConsumerImpl { public void updateOffset(List cloudEvents, AbstractContext context) { ConsumeMessageService consumeMessageService = rocketmqPushConsumer - .getDefaultMQPushConsumerImpl().getConsumeMessageService(); + .getDefaultMQPushConsumerImpl().getConsumeMessageService(); List msgExtList = new ArrayList<>(cloudEvents.size()); for (CloudEvent msg : cloudEvents) { msgExtList.add(CloudEventUtils.msgConvertExt( - RocketMQMessageFactory.createWriter(msg.getSubject()).writeBinary(msg))); + RocketMQMessageFactory.createWriter(msg.getSubject()).writeBinary(msg))); } ((ConsumeMessageConcurrentlyService) consumeMessageService) - .updateOffset(msgExtList, (EventMeshConsumeConcurrentlyContext) context); + .updateOffset(msgExtList, (EventMeshConsumeConcurrentlyContext) context); } @@ -178,13 +177,13 @@ public class PushConsumerImpl { } msg.putUserProperty(Constants.PROPERTY_MESSAGE_BORN_TIMESTAMP, - String.valueOf(msg.getBornTimestamp())); + String.valueOf(msg.getBornTimestamp())); msg.putUserProperty(Constants.PROPERTY_MESSAGE_STORE_TIMESTAMP, - String.valueOf(msg.getStoreTimestamp())); + String.valueOf(msg.getStoreTimestamp())); //for rr request/reply CloudEvent cloudEvent = - RocketMQMessageFactory.createReader(CloudEventUtils.msgConvert(msg)).toEvent(); + RocketMQMessageFactory.createReader(CloudEventUtils.msgConvert(msg)).toEvent(); CloudEventBuilder cloudEventBuilder = null; for (String sysPropKey : MessageConst.STRING_HASH_SET) { @@ -207,22 +206,22 @@ public class PushConsumerImpl { final Properties contextProperties = new Properties(); contextProperties.put(NonStandardKeys.MESSAGE_CONSUME_STATUS, - EventMeshConsumeConcurrentlyStatus.RECONSUME_LATER.name()); + EventMeshConsumeConcurrentlyStatus.RECONSUME_LATER.name()); AsyncConsumeContext asyncConsumeContext = new AsyncConsumeContext() { @Override public void commit(EventMeshAction action) { switch (action) { case CommitMessage: contextProperties.put(NonStandardKeys.MESSAGE_CONSUME_STATUS, - EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); + EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); break; case ReconsumeLater: contextProperties.put(NonStandardKeys.MESSAGE_CONSUME_STATUS, - EventMeshConsumeConcurrentlyStatus.RECONSUME_LATER.name()); + EventMeshConsumeConcurrentlyStatus.RECONSUME_LATER.name()); break; case ManualAck: contextProperties.put(NonStandardKeys.MESSAGE_CONSUME_STATUS, - EventMeshConsumeConcurrentlyStatus.CONSUME_FINISH.name()); + EventMeshConsumeConcurrentlyStatus.CONSUME_FINISH.name()); break; default: break; @@ -233,7 +232,7 @@ public class PushConsumerImpl { listener.consume(cloudEvent, asyncConsumeContext); return EventMeshConsumeConcurrentlyStatus.valueOf( - contextProperties.getProperty(NonStandardKeys.MESSAGE_CONSUME_STATUS)); + contextProperties.getProperty(NonStandardKeys.MESSAGE_CONSUME_STATUS)); } @@ -249,12 +248,12 @@ public class PushConsumerImpl { } msg.putUserProperty(Constants.PROPERTY_MESSAGE_BORN_TIMESTAMP, - String.valueOf(msg.getBornTimestamp())); + String.valueOf(msg.getBornTimestamp())); msg.putUserProperty(EventMeshConstants.STORE_TIMESTAMP, - String.valueOf(msg.getStoreTimestamp())); + String.valueOf(msg.getStoreTimestamp())); CloudEvent cloudEvent = - RocketMQMessageFactory.createReader(CloudEventUtils.msgConvert(msg)).toEvent(); + RocketMQMessageFactory.createReader(CloudEventUtils.msgConvert(msg)).toEvent(); CloudEventBuilder cloudEventBuilder = null; @@ -279,7 +278,7 @@ public class PushConsumerImpl { final Properties contextProperties = new Properties(); contextProperties.put(NonStandardKeys.MESSAGE_CONSUME_STATUS, - EventMeshConsumeConcurrentlyStatus.RECONSUME_LATER.name()); + EventMeshConsumeConcurrentlyStatus.RECONSUME_LATER.name()); EventMeshAsyncConsumeContext eventMeshAsyncConsumeContext = new EventMeshAsyncConsumeContext() { @Override @@ -287,15 +286,15 @@ public class PushConsumerImpl { switch (action) { case CommitMessage: contextProperties.put(NonStandardKeys.MESSAGE_CONSUME_STATUS, - EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); + EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); break; case ReconsumeLater: contextProperties.put(NonStandardKeys.MESSAGE_CONSUME_STATUS, - EventMeshConsumeConcurrentlyStatus.RECONSUME_LATER.name()); + EventMeshConsumeConcurrentlyStatus.RECONSUME_LATER.name()); break; case ManualAck: contextProperties.put(NonStandardKeys.MESSAGE_CONSUME_STATUS, - EventMeshConsumeConcurrentlyStatus.CONSUME_FINISH.name()); + EventMeshConsumeConcurrentlyStatus.CONSUME_FINISH.name()); break; default: break; @@ -308,7 +307,7 @@ public class PushConsumerImpl { listener.consume(cloudEvent, eventMeshAsyncConsumeContext); return EventMeshConsumeConcurrentlyStatus.valueOf( - contextProperties.getProperty(NonStandardKeys.MESSAGE_CONSUME_STATUS)); + contextProperties.getProperty(NonStandardKeys.MESSAGE_CONSUME_STATUS)); } } diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/consumer/RocketMQConsumerImpl.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/consumer/RocketMQConsumerImpl.java index 5e4d4d3c9..12fc21447 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/consumer/RocketMQConsumerImpl.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/consumer/RocketMQConsumerImpl.java @@ -32,6 +32,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.cloudevents.CloudEvent; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -46,14 +47,14 @@ public class RocketMQConsumerImpl implements Consumer { final ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.init(); boolean isBroadcast = Boolean.parseBoolean(keyValue.getProperty("isBroadcast")); - String consumerGroup = keyValue.getProperty("consumerGroup"); - String instanceName = keyValue.getProperty("instanceName"); + String consumerGroup = keyValue.getProperty("consumerGroup"); if (isBroadcast) { consumerGroup = Constants.BROADCAST_PREFIX + consumerGroup; } String namesrvAddr = clientConfiguration.namesrvAddr; + String instanceName = keyValue.getProperty("instanceName"); Properties properties = new Properties(); properties.put("ACCESS_POINTS", namesrvAddr); properties.put("REGION", "namespace"); diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/domain/NonStandardKeys.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/domain/NonStandardKeys.java index 5264d785e..c36aaf8bb 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/domain/NonStandardKeys.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/domain/NonStandardKeys.java @@ -17,6 +17,9 @@ package org.apache.eventmesh.connector.rocketmq.domain; +/** + * NonStandardKeys + */ public interface NonStandardKeys { String CONSUMER_GROUP = "rmq.consumer.group"; String PRODUCER_GROUP = "rmq.producer.group"; diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/domain/RocketMQConstants.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/domain/RocketMQConstants.java index 063f0f36f..f387d3c7f 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/domain/RocketMQConstants.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/domain/RocketMQConstants.java @@ -17,6 +17,9 @@ package org.apache.eventmesh.connector.rocketmq.domain; +/** + * RocketMQConstants + */ public interface RocketMQConstants { /** diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/patch/EventMeshConsumeConcurrentlyContext.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/patch/EventMeshConsumeConcurrentlyContext.java index 05442a6ab..2dcfa9503 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/patch/EventMeshConsumeConcurrentlyContext.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/patch/EventMeshConsumeConcurrentlyContext.java @@ -18,6 +18,7 @@ package org.apache.eventmesh.connector.rocketmq.patch; import org.apache.eventmesh.api.AbstractContext; + import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; import org.apache.rocketmq.client.impl.consumer.ProcessQueue; import org.apache.rocketmq.common.message.MessageQueue; diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/patch/EventMeshMessageListenerConcurrently.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/patch/EventMeshMessageListenerConcurrently.java index 47e8ee11b..0d32ba27d 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/patch/EventMeshMessageListenerConcurrently.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/patch/EventMeshMessageListenerConcurrently.java @@ -17,13 +17,14 @@ package org.apache.eventmesh.connector.rocketmq.patch; -import java.util.List; - import org.apache.commons.collections4.CollectionUtils; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; import org.apache.rocketmq.common.message.MessageExt; + +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,6 +54,8 @@ public abstract class EventMeshMessageListenerConcurrently implements MessageLis case CONSUME_FINISH: eventMeshConsumeConcurrentlyContext.setManualAck(true); return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; + default: + return status; } } catch (Throwable e) { LOG.info("handleMessage fail", e); @@ -62,7 +65,7 @@ public abstract class EventMeshMessageListenerConcurrently implements MessageLis LOG.info("handleMessage fail", e); return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } - return status; + //return status; } public abstract EventMeshConsumeConcurrentlyStatus handleMessage(MessageExt msg, EventMeshConsumeConcurrentlyContext context); diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/AbstractProducer.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/AbstractProducer.java index 3b0b7ce55..e95a47f0b 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/AbstractProducer.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/AbstractProducer.java @@ -17,9 +17,6 @@ package org.apache.eventmesh.connector.rocketmq.producer; -import java.util.Properties; -import java.util.concurrent.atomic.AtomicBoolean; - import org.apache.eventmesh.api.exception.ConnectorRuntimeException; import org.apache.eventmesh.connector.rocketmq.config.ClientConfig; import org.apache.eventmesh.connector.rocketmq.exception.RMQMessageFormatException; @@ -38,15 +35,18 @@ import org.apache.rocketmq.remoting.exception.RemotingConnectException; import org.apache.rocketmq.remoting.exception.RemotingTimeoutException; import org.apache.rocketmq.remoting.protocol.LanguageCode; +import java.util.Properties; +import java.util.concurrent.atomic.AtomicBoolean; + public abstract class AbstractProducer { - final static InternalLogger log = ClientLogger.getLog(); + static final InternalLogger log = ClientLogger.getLog(); final Properties properties; final DefaultMQProducer rocketmqProducer; protected final AtomicBoolean started = new AtomicBoolean(false); // private boolean started = false; private final ClientConfig clientConfig; - private final String PRODUCER_ID = "PRODUCER_ID"; + private static final String PRODUCER_ID = "PRODUCER_ID"; AbstractProducer(final Properties properties) { this.properties = properties; @@ -101,39 +101,37 @@ public abstract class AbstractProducer { if (e.getCause() != null) { if (e.getCause() instanceof RemotingTimeoutException) { return new RMQTimeoutException( - String.format("Send message to broker timeout, %dms, Topic=%s, msgId=%s", - this.rocketmqProducer.getSendMsgTimeout(), topic, msgId), e); - } else if (e.getCause() instanceof MQBrokerException || - e.getCause() instanceof RemotingConnectException) { + String.format("Send message to broker timeout, %dms, Topic=%s, msgId=%s", + this.rocketmqProducer.getSendMsgTimeout(), topic, msgId), e); + } else if (e.getCause() instanceof MQBrokerException + || e.getCause() instanceof RemotingConnectException) { if (e.getCause() instanceof MQBrokerException) { MQBrokerException brokerException = (MQBrokerException) e.getCause(); return new ConnectorRuntimeException( - String.format("Received a broker exception, Topic=%s, msgId=%s, %s", - topic, msgId, brokerException.getErrorMessage()), e); + String.format("Received a broker exception, Topic=%s, msgId=%s, %s", + topic, msgId, brokerException.getErrorMessage()), e); } if (e.getCause() instanceof RemotingConnectException) { RemotingConnectException connectException = - (RemotingConnectException) e.getCause(); + (RemotingConnectException) e.getCause(); return new ConnectorRuntimeException( - String.format( - "Network connection experiences failures. Topic=%s, msgId=%s, %s", - topic, msgId, connectException.getMessage()), - e); + String.format( + "Network connection experiences failures. Topic=%s, msgId=%s, %s", + topic, msgId, connectException.getMessage()), e); } } - } - // Exception thrown by local. - else { + } else { + // Exception thrown by local. MQClientException clientException = (MQClientException) e; if (-1 == clientException.getResponseCode()) { return new ConnectorRuntimeException( - String.format("Topic does not exist, Topic=%s, msgId=%s", - topic, msgId), e); + String.format("Topic does not exist, Topic=%s, msgId=%s", + topic, msgId), e); } else if (ResponseCode.MESSAGE_ILLEGAL == clientException.getResponseCode()) { return new RMQMessageFormatException( - String.format("A illegal message for RocketMQ, Topic=%s, msgId=%s", - topic, msgId), e); + String.format("A illegal message for RocketMQ, Topic=%s, msgId=%s", + topic, msgId), e); } } } @@ -144,16 +142,16 @@ public abstract class AbstractProducer { switch (producer.getServiceState()) { case CREATE_JUST: throw new ConnectorRuntimeException( - String.format("You do not have start the producer, %s", - producer.getServiceState())); + String.format("You do not have start the producer, %s", + producer.getServiceState())); case SHUTDOWN_ALREADY: throw new ConnectorRuntimeException( - String.format("Your producer has been shut down, %s", - producer.getServiceState())); + String.format("Your producer has been shut down, %s", + producer.getServiceState())); case START_FAILED: throw new ConnectorRuntimeException( - String.format("When you start your service throws an exception, %s", - producer.getServiceState())); + String.format("When you start your service throws an exception, %s", + producer.getServiceState())); case RUNNING: default: } diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/ProducerImpl.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/ProducerImpl.java index 89c6b98b4..fd4cecc71 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/ProducerImpl.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/ProducerImpl.java @@ -40,6 +40,7 @@ import org.apache.rocketmq.remoting.exception.RemotingException; import java.util.Properties; import io.cloudevents.CloudEvent; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -62,7 +63,7 @@ public class ProducerImpl extends AbstractProducer { super.getRocketmqProducer().setPollNameServerInterval(60000); super.getRocketmqProducer().getDefaultMQProducerImpl().getmQClientFactory().getNettyClientConfig() - .setClientAsyncSemaphoreValue(eventMeshServerAsyncAccumulationThreshold); + .setClientAsyncSemaphoreValue(eventMeshServerAsyncAccumulationThreshold); super.getRocketmqProducer().setCompressMsgBodyOverHowmuch(10); } @@ -70,7 +71,7 @@ public class ProducerImpl extends AbstractProducer { public SendResult send(CloudEvent cloudEvent) { this.checkProducerServiceState(rocketmqProducer.getDefaultMQProducerImpl()); org.apache.rocketmq.common.message.Message msg = - RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); + RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); msg = supplySysProp(msg, cloudEvent); String messageId = null; try { @@ -90,7 +91,7 @@ public class ProducerImpl extends AbstractProducer { public void sendOneway(CloudEvent cloudEvent) { this.checkProducerServiceState(this.rocketmqProducer.getDefaultMQProducerImpl()); org.apache.rocketmq.common.message.Message msg = - RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); + RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); msg = supplySysProp(msg, cloudEvent); try { this.rocketmqProducer.sendOneway(msg); @@ -104,7 +105,7 @@ public class ProducerImpl extends AbstractProducer { public void sendAsync(CloudEvent cloudEvent, SendCallback sendCallback) { this.checkProducerServiceState(this.rocketmqProducer.getDefaultMQProducerImpl()); org.apache.rocketmq.common.message.Message msg = - RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); + RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); msg = supplySysProp(msg, cloudEvent); try { this.rocketmqProducer.send(msg, this.sendCallbackConvert(msg, sendCallback)); @@ -115,11 +116,11 @@ public class ProducerImpl extends AbstractProducer { } public void request(CloudEvent cloudEvent, RequestReplyCallback rrCallback, long timeout) - throws InterruptedException, RemotingException, MQClientException, MQBrokerException { + throws InterruptedException, RemotingException, MQClientException, MQBrokerException { this.checkProducerServiceState(this.rocketmqProducer.getDefaultMQProducerImpl()); org.apache.rocketmq.common.message.Message msg = - RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); + RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); msg = supplySysProp(msg, cloudEvent); @@ -129,7 +130,7 @@ public class ProducerImpl extends AbstractProducer { public boolean reply(final CloudEvent cloudEvent, final SendCallback sendCallback) { this.checkProducerServiceState(this.rocketmqProducer.getDefaultMQProducerImpl()); org.apache.rocketmq.common.message.Message msg = - RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); + RocketMQMessageFactory.createWriter(cloudEvent.getSubject()).writeBinary(cloudEvent); MessageAccessor.putProperty(msg, MessageConst.PROPERTY_MESSAGE_TYPE, MixAll.REPLY_MESSAGE_FLAG); msg = supplySysProp(msg, cloudEvent); @@ -187,22 +188,22 @@ public class ProducerImpl extends AbstractProducer { private org.apache.rocketmq.client.producer.SendCallback sendCallbackConvert(final Message message, final SendCallback sendCallback) { org.apache.rocketmq.client.producer.SendCallback rmqSendCallback = - new org.apache.rocketmq.client.producer.SendCallback() { - @Override - public void onSuccess(org.apache.rocketmq.client.producer.SendResult sendResult) { - sendCallback.onSuccess(CloudEventUtils.convertSendResult(sendResult)); - } + new org.apache.rocketmq.client.producer.SendCallback() { + @Override + public void onSuccess(org.apache.rocketmq.client.producer.SendResult sendResult) { + sendCallback.onSuccess(CloudEventUtils.convertSendResult(sendResult)); + } - @Override - public void onException(Throwable e) { - String topic = message.getTopic(); - ConnectorRuntimeException onsEx = ProducerImpl.this.checkProducerException(topic, null, e); - OnExceptionContext context = new OnExceptionContext(); - context.setTopic(topic); - context.setException(onsEx); - sendCallback.onException(context); - } - }; + @Override + public void onException(Throwable e) { + String topic = message.getTopic(); + ConnectorRuntimeException onsEx = ProducerImpl.this.checkProducerException(topic, null, e); + OnExceptionContext context = new OnExceptionContext(); + context.setTopic(topic); + context.setException(onsEx); + sendCallback.onException(context); + } + }; return rmqSendCallback; } diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/RocketMQProducerImpl.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/RocketMQProducerImpl.java index 47ed2b1d8..366f3b341 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/RocketMQProducerImpl.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/producer/RocketMQProducerImpl.java @@ -31,6 +31,7 @@ import org.apache.rocketmq.remoting.exception.RemotingException; import java.util.Properties; import io.cloudevents.CloudEvent; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -82,9 +83,14 @@ public class RocketMQProducerImpl implements Producer { producer.sendAsync(message, sendCallback); } + @Override + public SendResult publish(CloudEvent message) { + return producer.send(message); + } + @Override public void request(CloudEvent message, RequestReplyCallback rrCallback, long timeout) - throws InterruptedException, RemotingException, MQClientException, MQBrokerException { + throws InterruptedException, RemotingException, MQClientException, MQBrokerException { producer.request(message, rrCallback, timeout); } @@ -97,7 +103,7 @@ public class RocketMQProducerImpl implements Producer { @Override public void checkTopicExist(String topic) throws Exception { this.producer.getRocketmqProducer().getDefaultMQProducerImpl().getmQClientFactory().getMQClientAPIImpl() - .getDefaultTopicRouteInfoFromNameServer(topic, EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); + .getDefaultTopicRouteInfoFromNameServer(topic, EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); } @Override @@ -105,10 +111,6 @@ public class RocketMQProducerImpl implements Producer { producer.setExtFields(); } - @Override - public SendResult publish(CloudEvent message) { - return producer.send(message); - } @Override public void sendOneway(CloudEvent message) { diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/BeanUtils.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/BeanUtils.java index 0aae801dc..1dfc77535 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/BeanUtils.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/BeanUtils.java @@ -17,6 +17,10 @@ package org.apache.eventmesh.connector.rocketmq.utils; +import org.apache.commons.lang3.StringUtils; +import org.apache.rocketmq.client.log.ClientLogger; +import org.apache.rocketmq.logging.InternalLogger; + import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; @@ -24,12 +28,9 @@ import java.util.Map; import java.util.Properties; import java.util.Set; -import org.apache.commons.lang3.StringUtils; -import org.apache.rocketmq.client.log.ClientLogger; -import org.apache.rocketmq.logging.InternalLogger; - public final class BeanUtils { - final static InternalLogger log = ClientLogger.getLog(); + + private static final InternalLogger log = ClientLogger.getLog(); /** * Maps primitive {@code Class}es to their corresponding wrapper {@code Class}. @@ -95,16 +96,41 @@ public final class BeanUtils { return obj; } -// public static T populate(final KeyValue properties, final Class clazz) { -// T obj = null; -// try { -// obj = clazz.newInstance(); -// return populate(properties, obj); -// } catch (Throwable e) { -// log.warn("Error occurs !", e); -// } -// return obj; -// } + public static T populate(final Properties properties, final T obj) { + Class clazz = obj.getClass(); + try { + + Set> entries = properties.entrySet(); + for (Map.Entry entry : entries) { + String entryKey = entry.getKey().toString(); + String[] keyGroup = entryKey.split("[\\._]"); + for (int i = 0; i < keyGroup.length; i++) { + keyGroup[i] = keyGroup[i].toLowerCase(); + keyGroup[i] = StringUtils.capitalize(keyGroup[i]); + } + String beanFieldNameWithCapitalization = StringUtils.join(keyGroup); + try { + setProperties(clazz, obj, "set" + beanFieldNameWithCapitalization, entry.getValue()); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { + //ignored... + } + } + } catch (RuntimeException e) { + log.warn("Error occurs !", e); + } + return obj; + } + + //public static T populate(final KeyValue properties, final Class clazz) { + // T obj = null; + // try { + // obj = clazz.newInstance(); + // return populate(properties, obj); + // } catch (Throwable e) { + // log.warn("Error occurs !", e); + // } + // return obj; + //} public static Class getMethodClass(Class clazz, String methodName) { Method[] methods = clazz.getMethods(); @@ -135,53 +161,29 @@ public final class BeanUtils { } } - public static T populate(final Properties properties, final T obj) { - Class clazz = obj.getClass(); - try { - Set> entries = properties.entrySet(); - for (Map.Entry entry : entries) { - String entryKey = entry.getKey().toString(); - String[] keyGroup = entryKey.split("[\\._]"); - for (int i = 0; i < keyGroup.length; i++) { - keyGroup[i] = keyGroup[i].toLowerCase(); - keyGroup[i] = StringUtils.capitalize(keyGroup[i]); - } - String beanFieldNameWithCapitalization = StringUtils.join(keyGroup); - try { - setProperties(clazz, obj, "set" + beanFieldNameWithCapitalization, entry.getValue()); - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { - //ignored... - } - } - } catch (RuntimeException e) { - log.warn("Error occurs !", e); - } - return obj; - } - -// public static T populate(final Properties properties, final T obj) { -// Class clazz = obj.getClass(); -// try { -// -// final Set keySet = properties.keySet(); -// for (Object key : keySet) { -// String[] keyGroup = key.toString().split("[\\._]"); -// for (int i = 0; i < keyGroup.length; i++) { -// keyGroup[i] = keyGroup[i].toLowerCase(); -// keyGroup[i] = StringUtils.capitalize(keyGroup[i]); -// } -// String beanFieldNameWithCapitalization = StringUtils.join(keyGroup); -// try { -// setProperties(clazz, obj, "set" + beanFieldNameWithCapitalization, properties.getProperty(key.toString())); -// } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { -// //ignored... -// } -// } -// } catch (RuntimeException e) { -// log.warn("Error occurs !", e); -// } -// return obj; -// } + //public static T populate(final Properties properties, final T obj) { + // Class clazz = obj.getClass(); + // try { + // + // final Set keySet = properties.keySet(); + // for (Object key : keySet) { + // String[] keyGroup = key.toString().split("[\\._]"); + // for (int i = 0; i < keyGroup.length; i++) { + // keyGroup[i] = keyGroup[i].toLowerCase(); + // keyGroup[i] = StringUtils.capitalize(keyGroup[i]); + // } + // String beanFieldNameWithCapitalization = StringUtils.join(keyGroup); + // try { + // setProperties(clazz, obj, "set" + beanFieldNameWithCapitalization, properties.getProperty(key.toString())); + // } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { + // //ignored... + // } + // } + // } catch (RuntimeException e) { + // log.warn("Error occurs !", e); + // } + // return obj; + //} } diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/CloudEventUtils.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/CloudEventUtils.java index 207346889..b2dc90eaf 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/CloudEventUtils.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/CloudEventUtils.java @@ -32,7 +32,7 @@ import java.util.Set; public class CloudEventUtils { public static SendResult convertSendResult( - org.apache.rocketmq.client.producer.SendResult rmqResult) { + org.apache.rocketmq.client.producer.SendResult rmqResult) { SendResult sendResult = new SendResult(); sendResult.setTopic(rmqResult.getMessageQueue().getTopic()); sendResult.setMessageId(rmqResult.getMsgId()); @@ -66,29 +66,29 @@ public class CloudEventUtils { if (rmqMsg.getMsgId() != null) { MessageAccessor.putProperty(message, buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_MESSAGE_ID), - rmqMsg.getMsgId()); + rmqMsg.getMsgId()); } if (rmqMsg.getTopic() != null) { MessageAccessor.putProperty(message, buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_DESTINATION), - rmqMsg.getTopic()); + rmqMsg.getTopic()); } // MessageAccessor.putProperty(message, buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_BORN_HOST), - String.valueOf(rmqMsg.getBornHost())); + String.valueOf(rmqMsg.getBornHost())); MessageAccessor.putProperty(message, buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_BORN_TIMESTAMP), - String.valueOf(rmqMsg.getBornTimestamp())); + String.valueOf(rmqMsg.getBornTimestamp())); MessageAccessor.putProperty(message, buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_STORE_HOST), - String.valueOf(rmqMsg.getStoreHost())); + String.valueOf(rmqMsg.getStoreHost())); MessageAccessor.putProperty(message, buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_STORE_TIMESTAMP), - String.valueOf(rmqMsg.getStoreTimestamp())); + String.valueOf(rmqMsg.getStoreTimestamp())); //use in manual ack MessageAccessor.putProperty(message, buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_QUEUE_ID), - String.valueOf(rmqMsg.getQueueId())); + String.valueOf(rmqMsg.getQueueId())); MessageAccessor.putProperty(message, buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_QUEUE_OFFSET), - String.valueOf(rmqMsg.getQueueOffset())); + String.valueOf(rmqMsg.getQueueOffset())); for (String sysPropKey : MessageConst.STRING_HASH_SET) { if (StringUtils.isNotEmpty(message.getProperty(sysPropKey))) { @@ -103,7 +103,6 @@ public class CloudEventUtils { } - private static String buildCloudEventPropertyKey(String propName) { //return RocketMQHeaders.CE_PREFIX + propName; return propName; @@ -112,7 +111,7 @@ public class CloudEventUtils { public static org.apache.rocketmq.common.message.MessageExt msgConvertExt(Message message) { org.apache.rocketmq.common.message.MessageExt rmqMessageExt = - new org.apache.rocketmq.common.message.MessageExt(); + new org.apache.rocketmq.common.message.MessageExt(); try { if (message.getKeys() != null) { rmqMessageExt.setKeys(message.getKeys()); @@ -131,9 +130,9 @@ public class CloudEventUtils { rmqMessageExt.setTopic(message.getTopic()); int queueId = - Integer.parseInt(message.getProperty(buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_QUEUE_ID))); + Integer.parseInt(message.getProperty(buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_QUEUE_ID))); long queueOffset = Long.parseLong( - message.getProperty(buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_QUEUE_OFFSET))); + message.getProperty(buildCloudEventPropertyKey(Constants.PROPERTY_MESSAGE_QUEUE_OFFSET))); //use in manual ack rmqMessageExt.setQueueId(queueId); rmqMessageExt.setQueueOffset(queueOffset); diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/OMSUtil.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/OMSUtil.java index dd2a36bd8..7d00e8062 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/OMSUtil.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/eventmesh/connector/rocketmq/utils/OMSUtil.java @@ -17,18 +17,7 @@ package org.apache.eventmesh.connector.rocketmq.utils; -import java.lang.reflect.Field; -import java.util.Iterator; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Properties; -import java.util.Set; - - -import org.apache.eventmesh.common.Constants; import org.apache.rocketmq.common.UtilAll; -import org.apache.rocketmq.common.message.MessageAccessor; -import org.apache.rocketmq.common.message.MessageExt; public class OMSUtil { @@ -41,252 +30,252 @@ public class OMSUtil { return Integer.toString(UtilAll.getPid()) + "%EventMesh" + "%" + System.nanoTime(); } -// public static org.apache.rocketmq.common.message.Message msgConvert(Message omsMessage) { -// org.apache.rocketmq.common.message.Message rmqMessage = new org.apache.rocketmq.common.message.Message(); -// if (omsMessage == null) { -// throw new OMSRuntimeException("'message' is null"); -// } else { -// if (omsMessage.getTopic() != null) { -// rmqMessage.setTopic(omsMessage.getTopic()); -// } -// if (omsMessage.getKey() != null) { -// rmqMessage.setKeys(omsMessage.getKey()); -// } -// if (omsMessage.getTag() != null) { -// rmqMessage.setTags(omsMessage.getTag()); -// } -// if (omsMessage.getStartDeliverTime() > 0L) { -// rmqMessage.putUserProperty("TIMER_DELIVER_MS", String.valueOf(omsMessage.getStartDeliverTime())); -// } -// -// if (omsMessage.getBody() != null) { -// rmqMessage.setBody(omsMessage.getBody()); -// } -// -// if (omsMessage.getShardingKey() != null && !omsMessage.getShardingKey().isEmpty()) { -// rmqMessage.putUserProperty("__SHARDINGKEY", omsMessage.getShardingKey()); -// } -// } -// Properties systemProperties = omsMessage.getSystemProperties(); -// Properties userProperties = omsMessage.getUserProperties(); -// -// //All destinations in RocketMQ use Topic -//// rmqMessage.setTopic(systemProperties.getProperty(BuiltinKeys.DESTINATION)); -// -//// if (sysHeaders.containsKey(BuiltinKeys.START_TIME)) { -//// long deliverTime = sysHeaders.getLong(BuiltinKeys.START_TIME, 0); -//// if (deliverTime > 0) { -//// rmqMessage.putUserProperty(RocketMQConstants.START_DELIVER_TIME, String.valueOf(deliverTime)); -//// } -//// } -// -// for (String key : userProperties.stringPropertyNames()) { -// MessageAccessor.putProperty(rmqMessage, key, userProperties.getProperty(key)); -// } -// -// //System headers has a high priority -// for (String key : systemProperties.stringPropertyNames()) { -// MessageAccessor.putProperty(rmqMessage, key, systemProperties.getProperty(key)); -// } -// -// return rmqMessage; -// } -// -// public static Message msgConvert(MessageExt rmqMsg) { -// Message message = new Message(); -// if (rmqMsg.getTopic() != null) { -// message.setTopic(rmqMsg.getTopic()); -// } -// -// if (rmqMsg.getKeys() != null) { -// message.setKey(rmqMsg.getKeys()); -// } -// -// if (rmqMsg.getTags() != null) { -// message.setTag(rmqMsg.getTags()); -// } -// -// if (rmqMsg.getBody() != null) { -// message.setBody(rmqMsg.getBody()); -// } -// -// if (rmqMsg.getUserProperty("TIMER_DELIVER_MS") != null) { -// long ms = Long.parseLong(rmqMsg.getUserProperty("TIMER_DELIVER_MS")); -// rmqMsg.getProperties().remove("TIMER_DELIVER_MS"); -// message.setStartDeliverTime(ms); -// } -// -// Properties systemProperties = new Properties(); -// Properties userProperties = new Properties(); -// -// -// final Set> entries = rmqMsg.getProperties().entrySet(); -// -// for (final Map.Entry entry : entries) { -// if (isOMSHeader(entry.getKey())) { -// //sysHeader -// systemProperties.put(entry.getKey(), entry.getValue()); -// } else { -// //userHeader -// userProperties.put(entry.getKey(), entry.getValue()); -// } -// } -// -// if (rmqMsg.getMsgId() != null){ -// systemProperties.put(Constants.PROPERTY_MESSAGE_MESSAGE_ID, rmqMsg.getMsgId()); -// } -// -// if (rmqMsg.getTopic() != null){ -// systemProperties.put(Constants.PROPERTY_MESSAGE_DESTINATION, rmqMsg.getTopic()); -// } -// -//// omsMsg.putSysHeaders(BuiltinKeys.SEARCH_KEYS, rmqMsg.getKeys()); -// systemProperties.put(Constants.PROPERTY_MESSAGE_BORN_HOST, String.valueOf(rmqMsg.getBornHost())); -// systemProperties.put(Constants.PROPERTY_MESSAGE_BORN_TIMESTAMP, rmqMsg.getBornTimestamp()); -// systemProperties.put(Constants.PROPERTY_MESSAGE_STORE_HOST, String.valueOf(rmqMsg.getStoreHost())); -// systemProperties.put("STORE_TIMESTAMP", rmqMsg.getStoreTimestamp()); -// -// //use in manual ack -// userProperties.put(Constants.PROPERTY_MESSAGE_QUEUE_ID, rmqMsg.getQueueId()); -// userProperties.put(Constants.PROPERTY_MESSAGE_QUEUE_OFFSET, rmqMsg.getQueueOffset()); -// -// message.setSystemProperties(systemProperties); -// message.setUserProperties(userProperties); -// -// return message; -// } -// -// public static org.apache.rocketmq.common.message.MessageExt msgConvertExt(Message omsMessage) { -// -// org.apache.rocketmq.common.message.MessageExt rmqMessageExt = new org.apache.rocketmq.common.message.MessageExt(); -// try { -// if (omsMessage.getKey() != null) { -// rmqMessageExt.setKeys(omsMessage.getKey()); -// } -// if (omsMessage.getTag() != null) { -// rmqMessageExt.setTags(omsMessage.getTag()); -// } -// if (omsMessage.getStartDeliverTime() > 0L) { -// rmqMessageExt.putUserProperty("TIMER_DELIVER_MS", String.valueOf(omsMessage.getStartDeliverTime())); -// } -// -// if (omsMessage.getBody() != null) { -// rmqMessageExt.setBody(omsMessage.getBody()); -// } -// -// if (omsMessage.getShardingKey() != null && !omsMessage.getShardingKey().isEmpty()) { -// rmqMessageExt.putUserProperty("__SHARDINGKEY", omsMessage.getShardingKey()); -// } -// -// Properties systemProperties = omsMessage.getSystemProperties(); -// Properties userProperties = omsMessage.getUserProperties(); -// -// //All destinations in RocketMQ use Topic -// rmqMessageExt.setTopic(omsMessage.getTopic()); -// -// int queueId = (int) userProperties.get(Constants.PROPERTY_MESSAGE_QUEUE_ID); -// long queueOffset = (long) userProperties.get(Constants.PROPERTY_MESSAGE_QUEUE_OFFSET); -// //use in manual ack -// rmqMessageExt.setQueueId(queueId); -// rmqMessageExt.setQueueOffset(queueOffset); -// -// for (String key : userProperties.stringPropertyNames()) { -// MessageAccessor.putProperty(rmqMessageExt, key, userProperties.getProperty(key)); -// } -// -// //System headers has a high priority -// for (String key : systemProperties.stringPropertyNames()) { -// MessageAccessor.putProperty(rmqMessageExt, key, systemProperties.getProperty(key)); -// } -// -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return rmqMessageExt; -// -// } -// -// public static boolean isOMSHeader(String value) { -// for (Field field : OMSBuiltinKeys.class.getDeclaredFields()) { -// try { -// if (field.get(OMSBuiltinKeys.class).equals(value)) { -// return true; -// } -// } catch (IllegalAccessException e) { -// return false; -// } -// } -// return false; -// } -// -// /** -// * Convert a RocketMQ SEND_OK SendResult instance to a OMS SendResult. -// * -// * @param rmqResult RocketMQ result -// * @return send result -// */ -// public static SendResult sendResultConvert(org.apache.rocketmq.client.producer.SendResult rmqResult) { -// SendResult sendResult = new SendResult(); -// sendResult.setTopic(rmqResult.getMessageQueue().getTopic()); -// sendResult.setMessageId(rmqResult.getMsgId()); -// return sendResult; -// } -// -//// public static KeyValue buildKeyValue(KeyValue... keyValues) { -//// KeyValue keyValue = OMS.newKeyValue(); -//// for (KeyValue properties : keyValues) { -//// for (String key : properties.keySet()) { -//// keyValue.put(key, properties.getString(key)); -//// } -//// } -//// return keyValue; -//// } -// -// /** -// * Returns an iterator that cycles indefinitely over the elements of {@code Iterable}. -// * -// * @param Target type -// * @return Iterator -// */ -// public static Iterator cycle(final Iterable iterable) { -// return new Iterator() { -// Iterator iterator = new Iterator() { -// @Override -// public synchronized boolean hasNext() { -// return false; -// } -// -// @Override -// public synchronized T next() { -// throw new NoSuchElementException(); -// } -// -// @Override -// public synchronized void remove() { -// //Ignore -// } -// }; -// -// @Override -// public synchronized boolean hasNext() { -// return iterator.hasNext() || iterable.iterator().hasNext(); -// } -// -// @Override -// public synchronized T next() { -// if (!iterator.hasNext()) { -// iterator = iterable.iterator(); -// if (!iterator.hasNext()) { -// throw new NoSuchElementException(); -// } -// } -// return iterator.next(); -// } -// -// @Override -// public synchronized void remove() { -// iterator.remove(); -// } -// }; -// } + //public static org.apache.rocketmq.common.message.Message msgConvert(Message omsMessage) { + // org.apache.rocketmq.common.message.Message rmqMessage = new org.apache.rocketmq.common.message.Message(); + // if (omsMessage == null) { + // throw new OMSRuntimeException("'message' is null"); + // } else { + // if (omsMessage.getTopic() != null) { + // rmqMessage.setTopic(omsMessage.getTopic()); + // } + // if (omsMessage.getKey() != null) { + // rmqMessage.setKeys(omsMessage.getKey()); + // } + // if (omsMessage.getTag() != null) { + // rmqMessage.setTags(omsMessage.getTag()); + // } + // if (omsMessage.getStartDeliverTime() > 0L) { + // rmqMessage.putUserProperty("TIMER_DELIVER_MS", String.valueOf(omsMessage.getStartDeliverTime())); + // } + // + // if (omsMessage.getBody() != null) { + // rmqMessage.setBody(omsMessage.getBody()); + // } + // + // if (omsMessage.getShardingKey() != null && !omsMessage.getShardingKey().isEmpty()) { + // rmqMessage.putUserProperty("__SHARDINGKEY", omsMessage.getShardingKey()); + // } + // } + // Properties systemProperties = omsMessage.getSystemProperties(); + // Properties userProperties = omsMessage.getUserProperties(); + // + // //All destinations in RocketMQ use Topic + // //rmqMessage.setTopic(systemProperties.getProperty(BuiltinKeys.DESTINATION)); + // + // //if (sysHeaders.containsKey(BuiltinKeys.START_TIME)) { + // // long deliverTime = sysHeaders.getLong(BuiltinKeys.START_TIME, 0); + // // if (deliverTime > 0) { + // // rmqMessage.putUserProperty(RocketMQConstants.START_DELIVER_TIME, String.valueOf(deliverTime)); + // // } + // //} + // + // for (String key : userProperties.stringPropertyNames()) { + // MessageAccessor.putProperty(rmqMessage, key, userProperties.getProperty(key)); + // } + // + // //System headers has a high priority + // for (String key : systemProperties.stringPropertyNames()) { + // MessageAccessor.putProperty(rmqMessage, key, systemProperties.getProperty(key)); + // } + // + // return rmqMessage; + //} + // + //public static Message msgConvert(MessageExt rmqMsg) { + // Message message = new Message(); + // if (rmqMsg.getTopic() != null) { + // message.setTopic(rmqMsg.getTopic()); + // } + // + // if (rmqMsg.getKeys() != null) { + // message.setKey(rmqMsg.getKeys()); + // } + // + // if (rmqMsg.getTags() != null) { + // message.setTag(rmqMsg.getTags()); + // } + // + // if (rmqMsg.getBody() != null) { + // message.setBody(rmqMsg.getBody()); + // } + // + // if (rmqMsg.getUserProperty("TIMER_DELIVER_MS") != null) { + // long ms = Long.parseLong(rmqMsg.getUserProperty("TIMER_DELIVER_MS")); + // rmqMsg.getProperties().remove("TIMER_DELIVER_MS"); + // message.setStartDeliverTime(ms); + // } + // + // Properties systemProperties = new Properties(); + // Properties userProperties = new Properties(); + // + // + // final Set> entries = rmqMsg.getProperties().entrySet(); + // + // for (final Map.Entry entry : entries) { + // if (isOMSHeader(entry.getKey())) { + // //sysHeader + // systemProperties.put(entry.getKey(), entry.getValue()); + // } else { + // //userHeader + // userProperties.put(entry.getKey(), entry.getValue()); + // } + // } + // + // if (rmqMsg.getMsgId() != null){ + // systemProperties.put(Constants.PROPERTY_MESSAGE_MESSAGE_ID, rmqMsg.getMsgId()); + // } + // + // if (rmqMsg.getTopic() != null){ + // systemProperties.put(Constants.PROPERTY_MESSAGE_DESTINATION, rmqMsg.getTopic()); + // } + // + // //omsMsg.putSysHeaders(BuiltinKeys.SEARCH_KEYS, rmqMsg.getKeys()); + // systemProperties.put(Constants.PROPERTY_MESSAGE_BORN_HOST, String.valueOf(rmqMsg.getBornHost())); + // systemProperties.put(Constants.PROPERTY_MESSAGE_BORN_TIMESTAMP, rmqMsg.getBornTimestamp()); + // systemProperties.put(Constants.PROPERTY_MESSAGE_STORE_HOST, String.valueOf(rmqMsg.getStoreHost())); + // systemProperties.put("STORE_TIMESTAMP", rmqMsg.getStoreTimestamp()); + // + // //use in manual ack + // userProperties.put(Constants.PROPERTY_MESSAGE_QUEUE_ID, rmqMsg.getQueueId()); + // userProperties.put(Constants.PROPERTY_MESSAGE_QUEUE_OFFSET, rmqMsg.getQueueOffset()); + // + // message.setSystemProperties(systemProperties); + // message.setUserProperties(userProperties); + // + // return message; + //} + // + //public static org.apache.rocketmq.common.message.MessageExt msgConvertExt(Message omsMessage) { + // + // org.apache.rocketmq.common.message.MessageExt rmqMessageExt = new org.apache.rocketmq.common.message.MessageExt(); + // try { + // if (omsMessage.getKey() != null) { + // rmqMessageExt.setKeys(omsMessage.getKey()); + // } + // if (omsMessage.getTag() != null) { + // rmqMessageExt.setTags(omsMessage.getTag()); + // } + // if (omsMessage.getStartDeliverTime() > 0L) { + // rmqMessageExt.putUserProperty("TIMER_DELIVER_MS", String.valueOf(omsMessage.getStartDeliverTime())); + // } + // + // if (omsMessage.getBody() != null) { + // rmqMessageExt.setBody(omsMessage.getBody()); + // } + // + // if (omsMessage.getShardingKey() != null && !omsMessage.getShardingKey().isEmpty()) { + // rmqMessageExt.putUserProperty("__SHARDINGKEY", omsMessage.getShardingKey()); + // } + // + // Properties systemProperties = omsMessage.getSystemProperties(); + // Properties userProperties = omsMessage.getUserProperties(); + // + // //All destinations in RocketMQ use Topic + // rmqMessageExt.setTopic(omsMessage.getTopic()); + // + // int queueId = (int) userProperties.get(Constants.PROPERTY_MESSAGE_QUEUE_ID); + // long queueOffset = (long) userProperties.get(Constants.PROPERTY_MESSAGE_QUEUE_OFFSET); + // //use in manual ack + // rmqMessageExt.setQueueId(queueId); + // rmqMessageExt.setQueueOffset(queueOffset); + // + // for (String key : userProperties.stringPropertyNames()) { + // MessageAccessor.putProperty(rmqMessageExt, key, userProperties.getProperty(key)); + // } + // + // //System headers has a high priority + // for (String key : systemProperties.stringPropertyNames()) { + // MessageAccessor.putProperty(rmqMessageExt, key, systemProperties.getProperty(key)); + // } + // + // } catch (Exception e) { + // e.printStackTrace(); + // } + // return rmqMessageExt; + // + //} + // + //public static boolean isOMSHeader(String value) { + // for (Field field : OMSBuiltinKeys.class.getDeclaredFields()) { + // try { + // if (field.get(OMSBuiltinKeys.class).equals(value)) { + // return true; + // } + // } catch (IllegalAccessException e) { + // return false; + // } + // } + // return false; + //} + // + ///** + // * Convert a RocketMQ SEND_OK SendResult instance to a OMS SendResult. + // * + // * @param rmqResult RocketMQ result + // * @return send result + // */ + //public static SendResult sendResultConvert(org.apache.rocketmq.client.producer.SendResult rmqResult) { + // SendResult sendResult = new SendResult(); + // sendResult.setTopic(rmqResult.getMessageQueue().getTopic()); + // sendResult.setMessageId(rmqResult.getMsgId()); + // return sendResult; + //} + // + ////public static KeyValue buildKeyValue(KeyValue... keyValues) { + //// KeyValue keyValue = OMS.newKeyValue(); + //// for (KeyValue properties : keyValues) { + //// for (String key : properties.keySet()) { + //// keyValue.put(key, properties.getString(key)); + //// } + //// } + //// return keyValue; + ////} + // + ///** + // * Returns an iterator that cycles indefinitely over the elements of {@code Iterable}. + // * + // * @param Target type + // * @return Iterator + // */ + //public static Iterator cycle(final Iterable iterable) { + // return new Iterator() { + // Iterator iterator = new Iterator() { + // @Override + // public synchronized boolean hasNext() { + // return false; + // } + // + // @Override + // public synchronized T next() { + // throw new NoSuchElementException(); + // } + // + // @Override + // public synchronized void remove() { + // //Ignore + // } + // }; + // + // @Override + // public synchronized boolean hasNext() { + // return iterator.hasNext() || iterable.iterator().hasNext(); + // } + // + // @Override + // public synchronized T next() { + // if (!iterator.hasNext()) { + // iterator = iterable.iterator(); + // if (!iterator.hasNext()) { + // throw new NoSuchElementException(); + // } + // } + // return iterator.next(); + // } + // + // @Override + // public synchronized void remove() { + // iterator.remove(); + // } + // }; + //} } diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageConcurrentlyService.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageConcurrentlyService.java index 16ef1fde6..9471224f7 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageConcurrentlyService.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageConcurrentlyService.java @@ -18,6 +18,7 @@ package org.apache.rocketmq.client.impl.consumer; import org.apache.eventmesh.connector.rocketmq.patch.EventMeshConsumeConcurrentlyContext; + import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; @@ -37,8 +38,19 @@ import org.apache.rocketmq.common.protocol.body.ConsumeMessageDirectlyResult; import org.apache.rocketmq.logging.InternalLogger; import org.apache.rocketmq.remoting.common.RemotingHelper; -import java.util.*; -import java.util.concurrent.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; public class ConsumeMessageConcurrentlyService implements ConsumeMessageService { private static final InternalLogger log = ClientLogger.getLog(); @@ -101,12 +113,12 @@ public class ConsumeMessageConcurrentlyService implements ConsumeMessageService } -// @Override -// public void shutdown(long awaitTerminateMillis) { -// this.scheduledExecutorService.shutdown(); -// this.consumeExecutor.shutdown(); -// this.cleanExpireMsgExecutors.shutdown(); -// } + //@Override + //public void shutdown(long awaitTerminateMillis) { + // this.scheduledExecutorService.shutdown(); + // this.consumeExecutor.shutdown(); + // this.cleanExpireMsgExecutors.shutdown(); + //} public void shutdown() { this.scheduledExecutorService.shutdown(); @@ -171,7 +183,7 @@ public class ConsumeMessageConcurrentlyService implements ConsumeMessageService List msgs = new ArrayList(); msgs.add(msg); MessageQueue mq = new MessageQueue(); -// mq.setBrokerName(brokerName); + //mq.setBrokerName(brokerName); mq.setTopic(msg.getTopic()); mq.setQueueId(msg.getQueueId()); @@ -280,12 +292,12 @@ public class ConsumeMessageConcurrentlyService implements ConsumeMessageService public void processConsumeResult( final ConsumeConcurrentlyStatus status, final EventMeshConsumeConcurrentlyContext context, - final ConsumeRequest consumeRequest - ) { + final ConsumeRequest consumeRequest) { int ackIndex = context.getAckIndex(); - if (consumeRequest.getMsgs().isEmpty()) + if (consumeRequest.getMsgs().isEmpty()) { return; + } switch (status) { case CONSUME_SUCCESS: @@ -386,7 +398,8 @@ public class ConsumeMessageConcurrentlyService implements ConsumeMessageService private void submitConsumeRequestLater(final ConsumeRequest consumeRequest) { final int times = defaultMQPushConsumerImpl.getDefaultMQPushConsumer().getMaxReconsumeTimes(); - log.warn("rejected by thread pool, try resubmit {} times, consumerGroup:{}", times, defaultMQPushConsumerImpl.getDefaultMQPushConsumer().getConsumerGroup()); + log.warn("rejected by thread pool, try resubmit {} times, consumerGroup:{}", times, + defaultMQPushConsumerImpl.getDefaultMQPushConsumer().getConsumerGroup()); this.scheduledExecutorService.schedule(new Runnable() { @Override @@ -397,12 +410,13 @@ public class ConsumeMessageConcurrentlyService implements ConsumeMessageService try { Thread.sleep(1000); } catch (InterruptedException e) { + //ignore } ConsumeMessageConcurrentlyService.this.consumeExecutor.submit(consumeRequest); success = true; break; } catch (RejectedExecutionException e) { - + //ignore } } if (!success) { @@ -437,7 +451,8 @@ public class ConsumeMessageConcurrentlyService implements ConsumeMessageService @Override public void run() { if (this.processQueue.isDropped()) { - log.info("the message queue not be able to consume, because it's dropped. group={} {}", ConsumeMessageConcurrentlyService.this.consumerGroup, this.messageQueue); + log.info("the message queue not be able to consume, because it's dropped. group={} {}", + ConsumeMessageConcurrentlyService.this.consumerGroup, this.messageQueue); return; } diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/eventmesh/producer/DefaultProducerImplTest.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/eventmesh/producer/DefaultProducerImplTest.java index 16ff257b7..3114c54f0 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/eventmesh/producer/DefaultProducerImplTest.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/eventmesh/producer/DefaultProducerImplTest.java @@ -18,21 +18,14 @@ package org.apache.eventmesh.producer; -import static org.assertj.core.api.Assertions.assertThat; - -import org.apache.eventmesh.api.producer.MeshMQProducer; -import org.apache.eventmesh.connector.rocketmq.producer.RocketMQProducerImpl; - import org.junit.After; import org.junit.Before; -import org.junit.Test; - -import io.openmessaging.api.exception.OMSRuntimeException; public class DefaultProducerImplTest { @Before - public void before() {} + public void before() { + } @After @@ -40,24 +33,24 @@ public class DefaultProducerImplTest { //TBD:Remove topic } - @Test - public void testCreate_EmptyTopic() { - MeshMQProducer meshPub = new RocketMQProducerImpl(); - try { - meshPub.createTopic(" "); - } catch (OMSRuntimeException e) { - assertThat(e.getMessage()).isEqualToIgnoringWhitespace("RocketMQ can not create topic"); - } - } - - @Test - public void testCreate_NullTopic() { - MeshMQProducer meshPub = new RocketMQProducerImpl(); - try { - meshPub.createTopic(null); - } catch (OMSRuntimeException e) { - String errorMessage = e.getMessage(); - assertThat(errorMessage).isEqualTo("RocketMQ can not create topic null"); - } - } + //@Test + //public void testCreate_EmptyTopic() { + // MeshMQProducer meshPub = new RocketMQProducerImpl(); + // try { + // meshPub.createTopic(" "); + // } catch (OMSRuntimeException e) { + // assertThat(e.getMessage()).isEqualToIgnoringWhitespace("RocketMQ can not create topic"); + // } + //} + // + //@Test + //public void testCreate_NullTopic() { + // MeshMQProducer meshPub = new RocketMQProducerImpl(); + // try { + // meshPub.createTopic(null); + // } catch (OMSRuntimeException e) { + // String errorMessage = e.getMessage(); + // assertThat(errorMessage).isEqualTo("RocketMQ can not create topic null"); + // } + //} } \ No newline at end of file diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/consumer/PushConsumerImplTest.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/consumer/PushConsumerImplTest.java index 4f67de757..31bcd5f8e 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/consumer/PushConsumerImplTest.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/consumer/PushConsumerImplTest.java @@ -52,10 +52,11 @@ public class PushConsumerImplTest { @Before public void before() throws Exception { Properties consumerProp = new Properties(); -// consumerProp.setProperty(OMSBuiltinKeys.DRIVER_IMPL, -// "org.apache.eventmesh.connector.rocketmq.MessagingAccessPointImpl"); + //consumerProp.setProperty(OMSBuiltinKeys.DRIVER_IMPL, + // "org.apache.eventmesh.connector.rocketmq.MessagingAccessPointImpl"); consumerProp.setProperty("access_points", "IP1:9876,IP2:9876"); - //final MessagingAccessPoint messagingAccessPoint = OMS.builder().build(consumerProp);//.endpoint("oms:rocketmq://IP1:9876,IP2:9876/namespace").build(config); + //final MessagingAccessPoint messagingAccessPoint = OMS.builder().build(consumerProp); + // .endpoint("oms:rocketmq://IP1:9876,IP2:9876/namespace").build(config); consumerProp.setProperty("message.model", "CLUSTERING"); @@ -81,7 +82,7 @@ public class PushConsumerImplTest { @Test public void testConsumeMessage() { - final byte[] testBody = new byte[] {'a', 'b'}; + final byte[] testBody = new byte[]{'a', 'b'}; MessageExt consumedMsg = new MessageExt(); consumedMsg.setMsgId("NewMsgId"); @@ -98,7 +99,7 @@ public class PushConsumerImplTest { } }); ((MessageListenerConcurrently) rocketmqPushConsumer - .getMessageListener()).consumeMessage(Collections.singletonList(consumedMsg), null); + .getMessageListener()).consumeMessage(Collections.singletonList(consumedMsg), null); } diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/producer/ProducerImplTest.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/producer/ProducerImplTest.java index 27e0c69f2..d144bd2c4 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/producer/ProducerImplTest.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/producer/ProducerImplTest.java @@ -94,12 +94,12 @@ public class ProducerImplTest { CloudEvent cloudEvent = CloudEventBuilder.v1() - .withId("id1") - .withSource(URI.create("https://github.com/cloudevents/*****")) - .withType("producer.example") - .withSubject("HELLO_TOPIC") - .withData("hello world".getBytes()) - .build(); + .withId("id1") + .withSource(URI.create("https://github.com/cloudevents/*****")) + .withType("producer.example") + .withSubject("HELLO_TOPIC") + .withData("hello world".getBytes()) + .build(); org.apache.eventmesh.api.SendResult result = producer.send(cloudEvent); @@ -120,12 +120,12 @@ public class ProducerImplTest { try { CloudEvent cloudEvent = CloudEventBuilder.v1() - .withId("id1") - .withSource(URI.create("https://github.com/cloudevents/*****")) - .withType("producer.example") - .withSubject("HELLO_TOPIC") - .withData(new byte[]{'a'}) - .build(); + .withId("id1") + .withSource(URI.create("https://github.com/cloudevents/*****")) + .withType("producer.example") + .withSubject("HELLO_TOPIC") + .withData(new byte[]{'a'}) + .build(); producer.send(cloudEvent); failBecauseExceptionWasNotThrown(ConnectorRuntimeException.class); } catch (Exception e) { diff --git a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/utils/BeanUtilsTest.java b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/utils/BeanUtilsTest.java index 7f545f3c0..1a7f52c0e 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/utils/BeanUtilsTest.java +++ b/eventmesh-connector-plugin/eventmesh-connector-rocketmq/src/test/java/org/apache/rocketmq/utils/BeanUtilsTest.java @@ -17,11 +17,12 @@ package org.apache.rocketmq.utils; -import java.util.Properties; - import org.apache.eventmesh.connector.rocketmq.config.ClientConfig; import org.apache.eventmesh.connector.rocketmq.domain.NonStandardKeys; import org.apache.eventmesh.connector.rocketmq.utils.BeanUtils; + +import java.util.Properties; + import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -30,13 +31,13 @@ public class BeanUtilsTest { private Properties properties = new Properties(); public static class CustomizedConfig extends ClientConfig { - final static String STRING_TEST = "string.test"; + static final String STRING_TEST = "string.test"; String stringTest = "foobar"; - final static String DOUBLE_TEST = "double.test"; + static final String DOUBLE_TEST = "double.test"; double doubleTest = 123.0; - final static String LONG_TEST = "long.test"; + static final String LONG_TEST = "long.test"; long longTest = 123L; String getStringTest() { diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/MessageQueue.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/MessageQueue.java index 6936a1b6d..ddac489d4 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/MessageQueue.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/MessageQueue.java @@ -17,12 +17,13 @@ package org.apache.eventmesh.connector.standalone.broker; -import com.google.common.base.Preconditions; import org.apache.eventmesh.connector.standalone.broker.model.MessageEntity; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; +import com.google.common.base.Preconditions; + /** * This is a block queue, can get entity by offset. * The queue is a FIFO data structure. diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/StandaloneBroker.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/StandaloneBroker.java index 822d1c09e..2e715e35b 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/StandaloneBroker.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/StandaloneBroker.java @@ -17,15 +17,17 @@ package org.apache.eventmesh.connector.standalone.broker; -import io.cloudevents.CloudEvent; -import org.apache.commons.lang3.tuple.Pair; import org.apache.eventmesh.connector.standalone.broker.model.MessageEntity; import org.apache.eventmesh.connector.standalone.broker.model.TopicMetadata; import org.apache.eventmesh.connector.standalone.broker.task.HistoryMessageClearTask; +import org.apache.commons.lang3.tuple.Pair; + import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; +import io.cloudevents.CloudEvent; + /** * This broker used to store event, it just support standalone mode, you shouldn't use this module in production environment */ diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/model/MessageEntity.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/model/MessageEntity.java index dd7468f03..0225874b7 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/model/MessageEntity.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/model/MessageEntity.java @@ -17,10 +17,10 @@ package org.apache.eventmesh.connector.standalone.broker.model; -import io.cloudevents.CloudEvent; - import java.io.Serializable; +import io.cloudevents.CloudEvent; + public class MessageEntity implements Serializable { private TopicMetadata topicMetadata; diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/model/TopicMetadata.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/model/TopicMetadata.java index d098e5660..9b6c673e3 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/model/TopicMetadata.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/model/TopicMetadata.java @@ -51,8 +51,10 @@ public class TopicMetadata implements Serializable { @Override public String toString() { - return "TopicMetadata{" + - "topic='" + topicName + '\'' + + return "TopicMetadata{" + + + "topic='" + topicName + '\'' + + '}'; } } diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/task/HistoryMessageClearTask.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/task/HistoryMessageClearTask.java index a8fa87a1a..5499f331f 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/task/HistoryMessageClearTask.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/task/HistoryMessageClearTask.java @@ -20,12 +20,13 @@ package org.apache.eventmesh.connector.standalone.broker.task; import org.apache.eventmesh.connector.standalone.broker.MessageQueue; import org.apache.eventmesh.connector.standalone.broker.model.MessageEntity; import org.apache.eventmesh.connector.standalone.broker.model.TopicMetadata; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * This task used to clear the history message, the element in message queue can only be cleaned by this task. */ @@ -39,7 +40,7 @@ public class HistoryMessageClearTask implements Runnable { /** * If the currentTimeMills - messageCreateTimeMills >= MESSAGE_STORE_WINDOW, then the message will be clear */ - private final long MESSAGE_STORE_WINDOW = 60 * 60 * 1000; + private static final long MESSAGE_STORE_WINDOW = 60 * 60 * 1000; public HistoryMessageClearTask(ConcurrentHashMap messageContainer) { this.messageContainer = messageContainer; diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/task/SubScribeTask.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/task/SubScribeTask.java index f5058c111..81f1e2bfc 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/task/SubScribeTask.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/broker/task/SubScribeTask.java @@ -31,10 +31,10 @@ import io.cloudevents.CloudEvent; public class SubScribeTask implements Runnable { - private String topicName; - private StandaloneBroker standaloneBroker; - private EventListener listener; - private volatile boolean isRunning; + private String topicName; + private StandaloneBroker standaloneBroker; + private EventListener listener; + private volatile boolean isRunning; private AtomicInteger offset; @@ -75,7 +75,7 @@ public class SubScribeTask implements Runnable { case CommitMessage: // update offset logger.info("message commit, topic: {}, current offset:{}", topicName, - offset.get()); + offset.get()); break; case ReconsumeLater: // don't update offset @@ -84,7 +84,7 @@ public class SubScribeTask implements Runnable { // update offset offset.incrementAndGet(); logger - .info("message ack, topic: {}, current offset:{}", topicName, offset.get()); + .info("message ack, topic: {}, current offset:{}", topicName, offset.get()); break; default: @@ -97,13 +97,13 @@ public class SubScribeTask implements Runnable { } catch (Exception ex) { logger.error("consumer error, topic: {}, offset: {}", topicName, offset == null ? null : offset.get(), - ex); + ex); } try { Thread.sleep(1000); } catch (InterruptedException e) { logger.error("Thread is interrupted, topic: {}, offset: {} thread name: {}", - topicName, offset == null ? null : offset.get(), Thread.currentThread().getName(), e); + topicName, offset == null ? null : offset.get(), Thread.currentThread().getName(), e); Thread.currentThread().interrupt(); } } diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/consumer/StandaloneConsumer.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/consumer/StandaloneConsumer.java index 5a1837964..225b20830 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/consumer/StandaloneConsumer.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/consumer/StandaloneConsumer.java @@ -48,9 +48,9 @@ public class StandaloneConsumer implements Consumer { this.subscribeTaskTable = new ConcurrentHashMap<>(16); this.isStarted = new AtomicBoolean(false); this.consumeExecutorService = ThreadPoolFactory.createThreadPoolExecutor( - Runtime.getRuntime().availableProcessors() * 2, - Runtime.getRuntime().availableProcessors() * 2, - "StandaloneConsumerThread" + Runtime.getRuntime().availableProcessors() * 2, + Runtime.getRuntime().availableProcessors() * 2, + "StandaloneConsumerThread" ); } @@ -84,7 +84,7 @@ public class StandaloneConsumer implements Consumer { @Override public void updateOffset(List cloudEvents, AbstractContext context) { cloudEvents.forEach(cloudEvent -> standaloneBroker.updateOffset( - new TopicMetadata(cloudEvent.getSubject()), (Long) cloudEvent.getExtension("offset")) + new TopicMetadata(cloudEvent.getSubject()), (Long) cloudEvent.getExtension("offset")) ); } diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/consumer/StandaloneConsumerAdaptor.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/consumer/StandaloneConsumerAdaptor.java index 716b4a21d..c09d422ff 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/consumer/StandaloneConsumerAdaptor.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/consumer/StandaloneConsumerAdaptor.java @@ -78,95 +78,95 @@ public class StandaloneConsumerAdaptor implements Consumer { consumer.unsubscribe(topic); } -// @Override -// public void init(Properties keyValue) throws Exception { -// String producerGroup = keyValue.getProperty("producerGroup"); -// -// MessagingAccessPointImpl messagingAccessPoint = new MessagingAccessPointImpl(keyValue); -// consumer = (StandaloneConsumer) messagingAccessPoint.createConsumer(keyValue); -// -// } -// -// @Override -// public void updateOffset(List msgs, AbstractContext context) { -// for(Message message : msgs) { -// consumer.updateOffset(message); -// } -// } -// -// @Override -// public void subscribe(String topic, AsyncMessageListener listener) throws Exception { -// // todo: support subExpression -// consumer.subscribe(topic, "*", listener); -// } -// -// @Override -// public void unsubscribe(String topic) { -// consumer.unsubscribe(topic); -// } -// -// @Override -// public void subscribe(String topic, String subExpression, MessageListener listener) { -// throw new UnsupportedOperationException("not supported yet"); -// } -// -// @Override -// public void subscribe(String topic, MessageSelector selector, MessageListener listener) { -// throw new UnsupportedOperationException("not supported yet"); -// } -// -// @Override -// public void subscribe(String topic, String subExpression, GenericMessageListener listener) { -// throw new UnsupportedOperationException("not supported yet"); -// } -// -// @Override -// public void subscribe(String topic, MessageSelector selector, GenericMessageListener listener) { -// throw new UnsupportedOperationException("not supported yet"); -// } -// -// @Override -// public void subscribe(String topic, String subExpression, AsyncMessageListener listener) { -// throw new UnsupportedOperationException("not supported yet"); -// } -// -// @Override -// public void subscribe(String topic, MessageSelector selector, AsyncMessageListener listener) { -// throw new UnsupportedOperationException("not supported yet"); -// } -// -// @Override -// public void subscribe(String topic, String subExpression, AsyncGenericMessageListener listener) { -// throw new UnsupportedOperationException("not supported yet"); -// } -// -// @Override -// public void subscribe(String topic, MessageSelector selector, AsyncGenericMessageListener listener) { -// throw new UnsupportedOperationException("not supported yet"); -// } -// -// @Override -// public void updateCredential(Properties credentialProperties) { -// -// } -// -// @Override -// public boolean isStarted() { -// return consumer.isStarted(); -// } -// -// @Override -// public boolean isClosed() { -// return consumer.isClosed(); -// } -// -// @Override -// public void start() { -// consumer.start(); -// } -// -// @Override -// public void shutdown() { -// consumer.shutdown(); -// } + //@Override + //public void init(Properties keyValue) throws Exception { + // String producerGroup = keyValue.getProperty("producerGroup"); + // + // MessagingAccessPointImpl messagingAccessPoint = new MessagingAccessPointImpl(keyValue); + // consumer = (StandaloneConsumer) messagingAccessPoint.createConsumer(keyValue); + // + //} + // + //@Override + //public void updateOffset(List msgs, AbstractContext context) { + // for(Message message : msgs) { + // consumer.updateOffset(message); + // } + //} + // + //@Override + //public void subscribe(String topic, AsyncMessageListener listener) throws Exception { + // // todo: support subExpression + // consumer.subscribe(topic, "*", listener); + //} + // + //@Override + //public void unsubscribe(String topic) { + // consumer.unsubscribe(topic); + //} + // + //@Override + //public void subscribe(String topic, String subExpression, MessageListener listener) { + // throw new UnsupportedOperationException("not supported yet"); + //} + // + //@Override + //public void subscribe(String topic, MessageSelector selector, MessageListener listener) { + // throw new UnsupportedOperationException("not supported yet"); + //} + // + //@Override + //public void subscribe(String topic, String subExpression, GenericMessageListener listener) { + // throw new UnsupportedOperationException("not supported yet"); + //} + // + //@Override + //public void subscribe(String topic, MessageSelector selector, GenericMessageListener listener) { + // throw new UnsupportedOperationException("not supported yet"); + //} + // + //@Override + //public void subscribe(String topic, String subExpression, AsyncMessageListener listener) { + // throw new UnsupportedOperationException("not supported yet"); + //} + // + //@Override + //public void subscribe(String topic, MessageSelector selector, AsyncMessageListener listener) { + // throw new UnsupportedOperationException("not supported yet"); + //} + // + //@Override + //public void subscribe(String topic, String subExpression, AsyncGenericMessageListener listener) { + // throw new UnsupportedOperationException("not supported yet"); + //} + // + //@Override + //public void subscribe(String topic, MessageSelector selector, AsyncGenericMessageListener listener) { + // throw new UnsupportedOperationException("not supported yet"); + //} + // + //@Override + //public void updateCredential(Properties credentialProperties) { + // + //} + // + //@Override + //public boolean isStarted() { + // return consumer.isStarted(); + //} + // + //@Override + //public boolean isClosed() { + // return consumer.isClosed(); + //} + // + //@Override + //public void start() { + // consumer.start(); + //} + // + //@Override + //public void shutdown() { + // consumer.shutdown(); + //} } diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/producer/StandaloneProducer.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/producer/StandaloneProducer.java index e6dce1a9b..c6aaf43a3 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/producer/StandaloneProducer.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/producer/StandaloneProducer.java @@ -31,10 +31,10 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Preconditions; - import io.cloudevents.CloudEvent; +import com.google.common.base.Preconditions; + public class StandaloneProducer { private Logger logger = LoggerFactory.getLogger(StandaloneProducer.class); @@ -79,7 +79,7 @@ public class StandaloneProducer { } catch (Exception e) { logger.error("send message error, topic: {}", cloudEvent.getSubject(), e); throw new ConnectorRuntimeException( - String.format("Send message error, topic: %s", cloudEvent.getSubject())); + String.format("Send message error, topic: %s", cloudEvent.getSubject())); } } @@ -92,10 +92,10 @@ public class StandaloneProducer { sendCallback.onSuccess(sendResult); } catch (Exception ex) { OnExceptionContext onExceptionContext = OnExceptionContext.builder() - .messageId(cloudEvent.getId()) - .topic(cloudEvent.getSubject()) - .exception(new ConnectorRuntimeException(ex)) - .build(); + .messageId(cloudEvent.getId()) + .topic(cloudEvent.getSubject()) + .exception(new ConnectorRuntimeException(ex)) + .build(); sendCallback.onException(onExceptionContext); } } @@ -113,10 +113,10 @@ public class StandaloneProducer { sendCallback.onSuccess(sendResult); } catch (Exception ex) { OnExceptionContext onExceptionContext = OnExceptionContext.builder() - .messageId(cloudEvent.getId()) - .topic(cloudEvent.getSubject()) - .exception(new ConnectorRuntimeException(ex)) - .build(); + .messageId(cloudEvent.getId()) + .topic(cloudEvent.getSubject()) + .exception(new ConnectorRuntimeException(ex)) + .build(); sendCallback.onException(onExceptionContext); } } diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/producer/StandaloneProducerAdaptor.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/producer/StandaloneProducerAdaptor.java index 8cff7e4f8..cab52f243 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/producer/StandaloneProducerAdaptor.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/main/java/org/apache/eventmesh/connector/standalone/producer/StandaloneProducerAdaptor.java @@ -83,10 +83,10 @@ public class StandaloneProducerAdaptor implements Producer { standaloneProducer.sendAsync(cloudEvent, sendCallback); } -// @Override -// public void request(CloudEvent cloudEvent, RRCallback rrCallback, long timeout) throws Exception { -// standaloneProducer.request(cloudEvent, rrCallback, timeout); -// } + //@Override + //public void request(CloudEvent cloudEvent, RRCallback rrCallback, long timeout) throws Exception { + // standaloneProducer.request(cloudEvent, rrCallback, timeout); + //} @Override public void request(CloudEvent cloudEvent, RequestReplyCallback rrCallback, long timeout) throws Exception { diff --git a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/test/java/org/apache/eventmesh/connector/standalone/broker/StandaloneBrokerTest.java b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/test/java/org/apache/eventmesh/connector/standalone/broker/StandaloneBrokerTest.java index 92e4eb7dc..1e66b0fff 100644 --- a/eventmesh-connector-plugin/eventmesh-connector-standalone/src/test/java/org/apache/eventmesh/connector/standalone/broker/StandaloneBrokerTest.java +++ b/eventmesh-connector-plugin/eventmesh-connector-standalone/src/test/java/org/apache/eventmesh/connector/standalone/broker/StandaloneBrokerTest.java @@ -19,6 +19,8 @@ package org.apache.eventmesh.connector.standalone.broker; import org.apache.eventmesh.connector.standalone.broker.model.MessageEntity; +import java.net.URI; + import org.junit.Assert; import org.junit.Test; @@ -35,14 +37,24 @@ public class StandaloneBrokerTest { @Test public void putMessage() throws InterruptedException { StandaloneBroker instance = StandaloneBroker.getInstance(); - MessageEntity messageEntity = instance.putMessage("test-topic", CloudEventBuilder.v1().build()); + CloudEvent cloudEvent = CloudEventBuilder.v1() + .withId("test") + .withSource(URI.create("testsource")) + .withType("testType") + .build(); + MessageEntity messageEntity = instance.putMessage("test-topic", cloudEvent); Assert.assertNotNull(messageEntity); } @Test public void takeMessage() throws InterruptedException { StandaloneBroker instance = StandaloneBroker.getInstance(); - instance.putMessage("test-topic", CloudEventBuilder.v1().build()); + CloudEvent cloudEvent = CloudEventBuilder.v1() + .withId("test") + .withSource(URI.create("testsource")) + .withType("testType") + .build(); + instance.putMessage("test-topic", cloudEvent); CloudEvent message = instance.takeMessage("test-topic"); Assert.assertNotNull(message); } diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/cloudevents/AsyncPublishInstance.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/cloudevents/AsyncPublishInstance.java index 0f98ac2fa..c205f5514 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/cloudevents/AsyncPublishInstance.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/cloudevents/AsyncPublishInstance.java @@ -21,10 +21,8 @@ import org.apache.eventmesh.client.http.conf.EventMeshHttpClientConfig; import org.apache.eventmesh.client.http.producer.EventMeshHttpProducer; import org.apache.eventmesh.client.tcp.common.EventMeshCommon; import org.apache.eventmesh.common.Constants; -import org.apache.eventmesh.common.EventMeshMessage; import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.utils.JsonUtils; -import org.apache.eventmesh.common.utils.RandomStringUtils; import org.apache.eventmesh.common.utils.ThreadUtils; import org.apache.eventmesh.util.Utils; @@ -39,8 +37,8 @@ import java.util.UUID; import io.cloudevents.CloudEvent; import io.cloudevents.core.builder.CloudEventBuilder; + import lombok.extern.slf4j.Slf4j; -import static org.apache.eventmesh.tcp.common.EventMeshTestCaseTopicSet.TOPIC_PRX_WQ2ClientUniCast; @Slf4j public class AsyncPublishInstance { @@ -64,16 +62,16 @@ public class AsyncPublishInstance { final String topic = "TEST-TOPIC-HTTP-ASYNC"; EventMeshHttpClientConfig eventMeshClientConfig = EventMeshHttpClientConfig.builder() - .liteEventMeshAddr(eventMeshIPPort) - .producerGroup("EventMeshTest-producerGroup") - .env("env") - .idc("idc") - .ip(IPUtils.getLocalAddress()) - .sys("1234") - .pid(String.valueOf(ThreadUtils.getPID())) - .userName("eventmesh") - .password("pass") - .build(); + .liteEventMeshAddr(eventMeshIPPort) + .producerGroup("EventMeshTest-producerGroup") + .env("env") + .idc("idc") + .ip(IPUtils.getLocalAddress()) + .sys("1234") + .pid(String.valueOf(ThreadUtils.getPID())) + .userName("eventmesh") + .password("pass") + .build(); try (EventMeshHttpProducer eventMeshHttpProducer = new EventMeshHttpProducer(eventMeshClientConfig)) { for (int i = 0; i < messageSize; i++) { @@ -81,14 +79,14 @@ public class AsyncPublishInstance { content.put("content", "testAsyncMessage"); CloudEvent event = CloudEventBuilder.v1() - .withId(UUID.randomUUID().toString()) - .withSubject(topic) - .withSource(URI.create("/")) - .withDataContentType("application/cloudevents+json") - .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME) - .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8)) - .withExtension(Constants.EVENTMESH_MESSAGE_CONST_TTL, String.valueOf(4 * 1000)) - .build(); + .withId(UUID.randomUUID().toString()) + .withSubject(topic) + .withSource(URI.create("/")) + .withDataContentType("application/cloudevents+json") + .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME) + .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8)) + .withExtension(Constants.EVENTMESH_MESSAGE_CONST_TTL, String.valueOf(4 * 1000)) + .build(); eventMeshHttpProducer.publish(event); } Thread.sleep(30000); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncPublishInstance.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncPublishInstance.java index 751cb2cf9..80a009297 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncPublishInstance.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncPublishInstance.java @@ -17,8 +17,6 @@ package org.apache.eventmesh.http.demo.pub.eventmeshmessage; -import lombok.extern.slf4j.Slf4j; - import org.apache.eventmesh.client.http.conf.EventMeshHttpClientConfig; import org.apache.eventmesh.client.http.producer.EventMeshHttpProducer; import org.apache.eventmesh.common.Constants; @@ -35,6 +33,8 @@ import java.util.HashMap; import java.util.Map; import java.util.Properties; +import lombok.extern.slf4j.Slf4j; + @Slf4j public class AsyncPublishInstance { @@ -57,16 +57,16 @@ public class AsyncPublishInstance { final String topic = "TEST-TOPIC-HTTP-ASYNC"; EventMeshHttpClientConfig eventMeshClientConfig = EventMeshHttpClientConfig.builder() - .liteEventMeshAddr(eventMeshIPPort) - .producerGroup("EventMeshTest-producerGroup") - .env("env") - .idc("idc") - .ip(IPUtils.getLocalAddress()) - .sys("1234") - .pid(String.valueOf(ThreadUtils.getPID())) - .userName("eventmesh") - .password("pass") - .build(); + .liteEventMeshAddr(eventMeshIPPort) + .producerGroup("EventMeshTest-producerGroup") + .env("env") + .idc("idc") + .ip(IPUtils.getLocalAddress()) + .sys("1234") + .pid(String.valueOf(ThreadUtils.getPID())) + .userName("eventmesh") + .password("pass") + .build(); try (EventMeshHttpProducer eventMeshHttpProducer = new EventMeshHttpProducer(eventMeshClientConfig);) { for (int i = 0; i < messageSize; i++) { @@ -74,12 +74,12 @@ public class AsyncPublishInstance { content.put("content", "testPublishMessage"); EventMeshMessage eventMeshMessage = EventMeshMessage.builder() - .bizSeqNo(RandomStringUtils.generateNum(30)) - .content(JsonUtils.serialize(content)) - .topic(topic) - .uniqueId(RandomStringUtils.generateNum(30)) - .build() - .addProp(Constants.EVENTMESH_MESSAGE_CONST_TTL, String.valueOf(4 * 1000)); + .bizSeqNo(RandomStringUtils.generateNum(30)) + .content(JsonUtils.serialize(content)) + .topic(topic) + .uniqueId(RandomStringUtils.generateNum(30)) + .build() + .addProp(Constants.EVENTMESH_MESSAGE_CONST_TTL, String.valueOf(4 * 1000)); eventMeshHttpProducer.publish(eventMeshMessage); } Thread.sleep(30000); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncSyncRequestInstance.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncSyncRequestInstance.java index 428472634..ea359d25d 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncSyncRequestInstance.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncSyncRequestInstance.java @@ -54,28 +54,28 @@ public class AsyncSyncRequestInstance { } EventMeshHttpClientConfig eventMeshClientConfig = EventMeshHttpClientConfig.builder() - .liteEventMeshAddr(eventMeshIPPort) - .producerGroup("EventMeshTest-producerGroup") - .env("env") - .idc("idc") - .ip(IPUtils.getLocalAddress()) - .sys("1234") - .pid(String.valueOf(ThreadUtils.getPID())).build(); + .liteEventMeshAddr(eventMeshIPPort) + .producerGroup("EventMeshTest-producerGroup") + .env("env") + .idc("idc") + .ip(IPUtils.getLocalAddress()) + .sys("1234") + .pid(String.valueOf(ThreadUtils.getPID())).build(); eventMeshHttpProducer = new EventMeshHttpProducer(eventMeshClientConfig); final long startTime = System.currentTimeMillis(); final EventMeshMessage eventMeshMessage = EventMeshMessage.builder() - .bizSeqNo(RandomStringUtils.generateNum(30)) - .content("testAsyncMessage") - .topic(topic) - .uniqueId(RandomStringUtils.generateNum(30)).build(); + .bizSeqNo(RandomStringUtils.generateNum(30)) + .content("testAsyncMessage") + .topic(topic) + .uniqueId(RandomStringUtils.generateNum(30)).build(); eventMeshHttpProducer.request(eventMeshMessage, new RRCallback() { @Override public void onSuccess(EventMeshMessage o) { log.debug("sendmsg : {}, return : {}, cost:{}ms", eventMeshMessage.getContent(), o.getContent(), - System.currentTimeMillis() - startTime); + System.currentTimeMillis() - startTime); } @Override diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/SyncRequestInstance.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/SyncRequestInstance.java index 4d7e1d264..e61307cca 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/SyncRequestInstance.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/SyncRequestInstance.java @@ -52,27 +52,27 @@ public class SyncRequestInstance { } EventMeshHttpClientConfig eventMeshClientConfig = EventMeshHttpClientConfig.builder() - .liteEventMeshAddr(eventMeshIPPort) - .producerGroup("EventMeshTest-producerGroup") - .env("env") - .idc("idc") - .ip(IPUtils.getLocalAddress()) - .sys("1234") - .pid(String.valueOf(ThreadUtils.getPID())).build(); + .liteEventMeshAddr(eventMeshIPPort) + .producerGroup("EventMeshTest-producerGroup") + .env("env") + .idc("idc") + .ip(IPUtils.getLocalAddress()) + .sys("1234") + .pid(String.valueOf(ThreadUtils.getPID())).build(); eventMeshHttpProducer = new EventMeshHttpProducer(eventMeshClientConfig); long startTime = System.currentTimeMillis(); EventMeshMessage eventMeshMessage = EventMeshMessage.builder() - .bizSeqNo(RandomStringUtils.generateNum(30)) - .content("contentStr with special protocal") - .topic(topic) - .uniqueId(RandomStringUtils.generateNum(30)).build(); + .bizSeqNo(RandomStringUtils.generateNum(30)) + .content("contentStr with special protocal") + .topic(topic) + .uniqueId(RandomStringUtils.generateNum(30)).build(); EventMeshMessage rsp = eventMeshHttpProducer.request(eventMeshMessage, 10000); if (logger.isDebugEnabled()) { logger.debug("sendmsg : {}, return : {}, cost:{}ms", eventMeshMessage.getContent(), rsp.getContent(), - System.currentTimeMillis() - startTime); + System.currentTimeMillis() - startTime); } } catch (Exception e) { logger.warn("send msg failed", e); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java index c82864b4b..58b5b632d 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java @@ -17,11 +17,6 @@ package org.apache.eventmesh.http.demo.sub.controller; -import io.cloudevents.CloudEvent; -import io.cloudevents.core.provider.EventFormatProvider; -import io.cloudevents.jackson.JsonFormat; -import lombok.extern.slf4j.Slf4j; - import org.apache.eventmesh.client.tcp.common.EventMeshCommon; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.utils.JsonUtils; @@ -40,6 +35,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import io.cloudevents.CloudEvent; +import io.cloudevents.core.provider.EventFormatProvider; +import io.cloudevents.jackson.JsonFormat; + +import lombok.extern.slf4j.Slf4j; + @Slf4j @RestController @@ -55,8 +56,9 @@ public class SubController { log.info("=======receive message======= {}", content); Map contentMap = JsonUtils.deserialize(content, HashMap.class); if (StringUtils.equals(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME, contentMap.get(ProtocolKey.PROTOCOL_TYPE))) { - CloudEvent event = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE) - .deserialize(content.getBytes(StandardCharsets.UTF_8)); + CloudEvent event = EventFormatProvider.getInstance() + .resolveFormat(JsonFormat.CONTENT_TYPE) + .deserialize(content.getBytes(StandardCharsets.UTF_8)); String data = new String(event.getData().toBytes(), StandardCharsets.UTF_8); log.info("=======receive data======= {}", data); } diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/service/SubService.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/service/SubService.java index 0c0f2c192..816ed2589 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/service/SubService.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/service/SubService.java @@ -52,17 +52,17 @@ public class SubService implements InitializingBean { final Properties properties = Utils.readPropertiesFile("application.properties"); - final List topicList = Lists.newArrayList( - new SubscriptionItem("TEST-TOPIC-HTTP-ASYNC", SubscriptionMode.CLUSTERING, SubscriptionType.ASYNC) + final List topicList = Lists.newArrayList( + new SubscriptionItem("TEST-TOPIC-HTTP-ASYNC", SubscriptionMode.CLUSTERING, SubscriptionType.ASYNC) ); - final String localIp = IPUtils.getLocalAddress(); - final String localPort = properties.getProperty("server.port"); - final String eventMeshIp = properties.getProperty("eventmesh.ip"); - final String eventMeshHttpPort = properties.getProperty("eventmesh.http.port"); - final String url = "http://" + localIp + ":" + localPort + "/sub/test"; - final String env = "P"; - final String idc = "FT"; - final String subsys = "1234"; + final String localIp = IPUtils.getLocalAddress(); + final String localPort = properties.getProperty("server.port"); + final String eventMeshIp = properties.getProperty("eventmesh.ip"); + final String eventMeshHttpPort = properties.getProperty("eventmesh.http.port"); + final String url = "http://" + localIp + ":" + localPort + "/sub/test"; + final String env = "P"; + final String idc = "FT"; + final String subsys = "1234"; // CountDownLatch size is the same as messageSize in AsyncPublishInstance.java (Publisher) private CountDownLatch countDownLatch = new CountDownLatch(AsyncPublishInstance.messageSize); @@ -72,13 +72,13 @@ public class SubService implements InitializingBean { final String eventMeshIPPort = eventMeshIp + ":" + eventMeshHttpPort; EventMeshHttpClientConfig eventMeshClientConfig = EventMeshHttpClientConfig.builder() - .liteEventMeshAddr(eventMeshIPPort) - .consumerGroup("EventMeshTest-consumerGroup") - .env(env) - .idc(idc) - .ip(IPUtils.getLocalAddress()) - .sys(subsys) - .pid(String.valueOf(ThreadUtils.getPID())).build(); + .liteEventMeshAddr(eventMeshIPPort) + .consumerGroup("EventMeshTest-consumerGroup") + .env(env) + .idc(idc) + .ip(IPUtils.getLocalAddress()) + .sys(subsys) + .pid(String.valueOf(ThreadUtils.getPID())).build(); eventMeshHttpConsumer = new EventMeshHttpConsumer(eventMeshClientConfig); eventMeshHttpConsumer.heartBeat(topicList, url); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/common/EventMeshTestUtils.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/common/EventMeshTestUtils.java index dad5e65d2..78a2f1031 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/common/EventMeshTestUtils.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/common/EventMeshTestUtils.java @@ -17,9 +17,6 @@ package org.apache.eventmesh.tcp.common; -import io.cloudevents.CloudEvent; -import io.cloudevents.core.builder.CloudEventBuilder; -import io.cloudevents.core.v1.CloudEventV1; import static org.apache.eventmesh.common.protocol.tcp.Command.RESPONSE_TO_SERVER; import static org.apache.eventmesh.tcp.common.EventMeshTestCaseTopicSet.TOPIC_PRX_SyncSubscribeTest; import static org.apache.eventmesh.tcp.common.EventMeshTestCaseTopicSet.TOPIC_PRX_WQ2ClientBroadCast; @@ -41,44 +38,47 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; +import io.cloudevents.CloudEvent; +import io.cloudevents.core.builder.CloudEventBuilder; + public class EventMeshTestUtils { private static final int seqLength = 10; // generate pub-client public static UserAgent generateClient1() { UserAgent agent = UserAgent.builder() - .env("test") - .host("127.0.0.1") - .password(generateRandomString(8)) - .username("PU4283") - .producerGroup("EventmeshTest-ProducerGroup") - .consumerGroup("EventmeshTest-ConsumerGroup") - .path("/data/app/umg_proxy") - .port(8362) - .subsystem("5023") - .pid(32893) - .version("2.0.11") - .idc("FT") - .build(); + .env("test") + .host("127.0.0.1") + .password(generateRandomString(8)) + .username("PU4283") + .producerGroup("EventmeshTest-ProducerGroup") + .consumerGroup("EventmeshTest-ConsumerGroup") + .path("/data/app/umg_proxy") + .port(8362) + .subsystem("5023") + .pid(32893) + .version("2.0.11") + .idc("FT") + .build(); return MessageUtils.generatePubClient(agent); } // generate sub-client public static UserAgent generateClient2() { UserAgent agent = UserAgent.builder() - .env("test") - .host("127.0.0.1") - .password(generateRandomString(8)) - .username("PU4283") - .producerGroup("EventmeshTest-ProducerGroup") - .consumerGroup("EventmeshTest-ConsumerGroup") - .path("/data/app/umg_proxy") - .port(9362) - .subsystem("5017") - .pid(42893) - .version("2.0.11") - .idc("FT") - .build(); + .env("test") + .host("127.0.0.1") + .password(generateRandomString(8)) + .username("PU4283") + .producerGroup("EventmeshTest-ProducerGroup") + .consumerGroup("EventmeshTest-ConsumerGroup") + .path("/data/app/umg_proxy") + .port(9362) + .subsystem("5017") + .pid(42893) + .version("2.0.11") + .idc("FT") + .build(); return MessageUtils.generateSubClient(agent); } @@ -171,14 +171,14 @@ public class EventMeshTestUtils { content.put("content", "testAsyncMessage"); CloudEvent event = CloudEventBuilder.v1() - .withId(UUID.randomUUID().toString()) - .withSubject(TOPIC_PRX_WQ2ClientUniCast) - .withSource(URI.create("/")) - .withDataContentType("application/cloudevents+json") - .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME) - .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8)) - .withExtension("ttl", "30000") - .build(); + .withId(UUID.randomUUID().toString()) + .withSubject(TOPIC_PRX_WQ2ClientUniCast) + .withSource(URI.create("/")) + .withDataContentType("application/cloudevents+json") + .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME) + .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8)) + .withExtension("ttl", "30000") + .build(); return event; } @@ -187,16 +187,16 @@ public class EventMeshTestUtils { content.put("content", "testSyncRR"); CloudEvent event = CloudEventBuilder.v1() - .withId(UUID.randomUUID().toString()) - .withSubject(TOPIC_PRX_SyncSubscribeTest) - .withSource(URI.create("/")) - .withDataContentType("application/cloudevents+json") - .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME) - .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8)) - .withExtension("ttl", "30000") - .withExtension("msgtype", "persistent") - .withExtension("keys", generateRandomString(16)) - .build(); + .withId(UUID.randomUUID().toString()) + .withSubject(TOPIC_PRX_SyncSubscribeTest) + .withSource(URI.create("/")) + .withDataContentType("application/cloudevents+json") + .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME) + .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8)) + .withExtension("ttl", "30000") + .withExtension("msgtype", "persistent") + .withExtension("keys", generateRandomString(16)) + .build(); return event; } } diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/AsyncPublish.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/AsyncPublish.java index f7321d4b7..7b1fc3b3b 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/AsyncPublish.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/AsyncPublish.java @@ -17,12 +17,10 @@ package org.apache.eventmesh.tcp.demo.pub.cloudevents; -import io.cloudevents.CloudEvent; - import org.apache.eventmesh.client.tcp.EventMeshTCPClient; +import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.client.tcp.common.EventMeshCommon; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; -import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.tcp.common.EventMeshTestUtils; import org.apache.eventmesh.util.Utils; @@ -32,6 +30,8 @@ import java.util.Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cloudevents.CloudEvent; + public class AsyncPublish { public static Logger logger = LoggerFactory.getLogger(AsyncPublish.class); @@ -47,12 +47,12 @@ public class AsyncPublish { try { UserAgent userAgent = EventMeshTestUtils.generateClient1(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host(eventMeshIp) - .port(eventMeshTcpPort) - .userAgent(userAgent) - .build(); + .host(eventMeshIp) + .port(eventMeshTcpPort) + .userAgent(userAgent) + .build(); client = - EventMeshTCPClientFactory.createEventMeshTCPClient(eventMeshTcpClientConfig, CloudEvent.class); + EventMeshTCPClientFactory.createEventMeshTCPClient(eventMeshTcpClientConfig, CloudEvent.class); client.init(); for (int i = 0; i < 5; i++) { diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/SyncRequest.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/SyncRequest.java index c04d2a7a6..5d5b66638 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/SyncRequest.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/cloudevents/SyncRequest.java @@ -21,19 +21,19 @@ import org.apache.eventmesh.client.tcp.EventMeshTCPClient; import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.client.tcp.common.EventMeshCommon; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; -import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.tcp.common.EventMeshTestUtils; import org.apache.eventmesh.util.Utils; +import java.nio.charset.StandardCharsets; +import java.util.Properties; + import io.cloudevents.CloudEvent; import io.cloudevents.core.provider.EventFormatProvider; import io.cloudevents.jackson.JsonFormat; -import lombok.extern.slf4j.Slf4j; -import java.nio.charset.StandardCharsets; -import java.util.Properties; +import lombok.extern.slf4j.Slf4j; @Slf4j public class SyncRequest { @@ -46,20 +46,20 @@ public class SyncRequest { final int eventMeshTcpPort = Integer.parseInt(properties.getProperty("eventmesh.tcp.port")); UserAgent userAgent = EventMeshTestUtils.generateClient1(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host(eventMeshIp) - .port(eventMeshTcpPort) - .userAgent(userAgent) - .build(); + .host(eventMeshIp) + .port(eventMeshTcpPort) + .userAgent(userAgent) + .build(); try { client = EventMeshTCPClientFactory.createEventMeshTCPClient( - eventMeshTcpClientConfig, CloudEvent.class); + eventMeshTcpClientConfig, CloudEvent.class); client.init(); CloudEvent event = EventMeshTestUtils.generateCloudEventV1SyncRR(); log.info("begin send rr msg=================={}", event); Package response = client.rr(event, EventMeshCommon.DEFAULT_TIME_OUT_MILLS); CloudEvent replyEvent = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE) - .deserialize(response.getBody().toString().getBytes(StandardCharsets.UTF_8)); + .deserialize(response.getBody().toString().getBytes(StandardCharsets.UTF_8)); String content = new String(replyEvent.getData().toBytes(), StandardCharsets.UTF_8); log.info("receive rr reply==================={}|{}", response, content); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/AsyncPublish.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/AsyncPublish.java index a1687ce62..876164b6f 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/AsyncPublish.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/AsyncPublish.java @@ -18,9 +18,9 @@ package org.apache.eventmesh.tcp.demo.pub.eventmeshmessage; import org.apache.eventmesh.client.tcp.EventMeshTCPClient; +import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.client.tcp.common.EventMeshCommon; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; -import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.tcp.common.EventMeshTestUtils; @@ -46,12 +46,12 @@ public class AsyncPublish { try { UserAgent userAgent = EventMeshTestUtils.generateClient1(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host(eventMeshIp) - .port(eventMeshTcpPort) - .userAgent(userAgent) - .build(); + .host(eventMeshIp) + .port(eventMeshTcpPort) + .userAgent(userAgent) + .build(); client = - EventMeshTCPClientFactory.createEventMeshTCPClient(eventMeshTcpClientConfig, EventMeshMessage.class); + EventMeshTCPClientFactory.createEventMeshTCPClient(eventMeshTcpClientConfig, EventMeshMessage.class); client.init(); for (int i = 0; i < 5; i++) { diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/AsyncPublishBroadcast.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/AsyncPublishBroadcast.java index e2d263417..bc94f31e9 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/AsyncPublishBroadcast.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/AsyncPublishBroadcast.java @@ -18,9 +18,9 @@ package org.apache.eventmesh.tcp.demo.pub.eventmeshmessage; import org.apache.eventmesh.client.tcp.EventMeshTCPClient; +import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.client.tcp.common.EventMeshCommon; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; -import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.tcp.common.EventMeshTestUtils; @@ -41,12 +41,12 @@ public class AsyncPublishBroadcast { final int eventMeshTcpPort = Integer.parseInt(properties.getProperty("eventmesh.tcp.port")); UserAgent userAgent = EventMeshTestUtils.generateClient1(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host(eventMeshIp) - .port(eventMeshTcpPort) - .userAgent(userAgent) - .build(); + .host(eventMeshIp) + .port(eventMeshTcpPort) + .userAgent(userAgent) + .build(); try (final EventMeshTCPClient client = - EventMeshTCPClientFactory.createEventMeshTCPClient(eventMeshTcpClientConfig, EventMeshMessage.class)) { + EventMeshTCPClientFactory.createEventMeshTCPClient(eventMeshTcpClientConfig, EventMeshMessage.class)) { client.init(); EventMeshMessage eventMeshMessage = EventMeshTestUtils.generateBroadcastMqMsg(); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/SyncRequest.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/SyncRequest.java index f0ded1fd9..0b4ade9a5 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/SyncRequest.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/pub/eventmeshmessage/SyncRequest.java @@ -18,9 +18,9 @@ package org.apache.eventmesh.tcp.demo.pub.eventmeshmessage; import org.apache.eventmesh.client.tcp.EventMeshTCPClient; +import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.client.tcp.common.EventMeshCommon; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; -import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.common.protocol.tcp.UserAgent; @@ -36,13 +36,13 @@ public class SyncRequest { public static void main(String[] agrs) throws Exception { UserAgent userAgent = EventMeshTestUtils.generateClient1(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host("127.0.0.1") - .port(10002) - .userAgent(userAgent) - .build(); + .host("127.0.0.1") + .port(10002) + .userAgent(userAgent) + .build(); try { client = EventMeshTCPClientFactory.createEventMeshTCPClient( - eventMeshTcpClientConfig, EventMeshMessage.class); + eventMeshTcpClientConfig, EventMeshMessage.class); client.init(); EventMeshMessage eventMeshMessage = EventMeshTestUtils.generateSyncRRMqMsg(); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/cloudevents/AsyncSubscribe.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/cloudevents/AsyncSubscribe.java index 91f4eda6c..91719d757 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/cloudevents/AsyncSubscribe.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/cloudevents/AsyncSubscribe.java @@ -18,9 +18,9 @@ package org.apache.eventmesh.tcp.demo.sub.cloudevents; import org.apache.eventmesh.client.tcp.EventMeshTCPClient; +import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.client.tcp.common.ReceiveMsgHook; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; -import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.UserAgent; @@ -33,7 +33,7 @@ import java.util.Optional; import java.util.Properties; import io.cloudevents.CloudEvent; -import io.netty.channel.ChannelHandlerContext; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -49,10 +49,10 @@ public class AsyncSubscribe implements ReceiveMsgHook { final int eventMeshTcpPort = Integer.parseInt(properties.getProperty("eventmesh.tcp.port")); UserAgent userAgent = EventMeshTestUtils.generateClient2(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host(eventMeshIp) - .port(eventMeshTcpPort) - .userAgent(userAgent) - .build(); + .host(eventMeshIp) + .port(eventMeshTcpPort) + .userAgent(userAgent) + .build(); try { client = EventMeshTCPClientFactory.createEventMeshTCPClient(eventMeshTcpClientConfig, CloudEvent.class); client.init(); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/cloudevents/SyncResponse.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/cloudevents/SyncResponse.java index d1753233f..76292e1b5 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/cloudevents/SyncResponse.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/cloudevents/SyncResponse.java @@ -19,26 +19,22 @@ package org.apache.eventmesh.tcp.demo.sub.cloudevents; import org.apache.eventmesh.client.tcp.EventMeshTCPClient; import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; -import org.apache.eventmesh.client.tcp.common.MessageUtils; import org.apache.eventmesh.client.tcp.common.ReceiveMsgHook; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; -import org.apache.eventmesh.common.protocol.tcp.Command; -import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; -import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.tcp.common.EventMeshTestUtils; import org.apache.eventmesh.util.Utils; -import io.cloudevents.CloudEvent; -import io.netty.channel.ChannelHandlerContext; -import lombok.extern.slf4j.Slf4j; - import java.nio.charset.StandardCharsets; import java.util.Optional; import java.util.Properties; +import io.cloudevents.CloudEvent; + +import lombok.extern.slf4j.Slf4j; + @Slf4j public class SyncResponse implements ReceiveMsgHook { @@ -52,13 +48,13 @@ public class SyncResponse implements ReceiveMsgHook { final int eventMeshTcpPort = Integer.parseInt(properties.getProperty("eventmesh.tcp.port")); UserAgent userAgent = EventMeshTestUtils.generateClient2(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host(eventMeshIp) - .port(eventMeshTcpPort) - .userAgent(userAgent) - .build(); + .host(eventMeshIp) + .port(eventMeshTcpPort) + .userAgent(userAgent) + .build(); try { client = EventMeshTCPClientFactory - .createEventMeshTCPClient(eventMeshTcpClientConfig, CloudEvent.class); + .createEventMeshTCPClient(eventMeshTcpClientConfig, CloudEvent.class); client.init(); client.subscribe("TEST-TOPIC-TCP-SYNC", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/AsyncSubscribe.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/AsyncSubscribe.java index bb99cfc7f..780316340 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/AsyncSubscribe.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/AsyncSubscribe.java @@ -18,9 +18,9 @@ package org.apache.eventmesh.tcp.demo.sub.eventmeshmessage; import org.apache.eventmesh.client.tcp.EventMeshTCPClient; +import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.client.tcp.common.ReceiveMsgHook; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; -import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; @@ -32,7 +32,6 @@ import org.apache.eventmesh.util.Utils; import java.util.Optional; import java.util.Properties; -import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -48,17 +47,17 @@ public class AsyncSubscribe implements ReceiveMsgHook { final int eventMeshTcpPort = Integer.parseInt(properties.getProperty("eventmesh.tcp.port")); UserAgent userAgent = EventMeshTestUtils.generateClient2(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host(eventMeshIp) - .port(eventMeshTcpPort) - .userAgent(userAgent) - .build(); + .host(eventMeshIp) + .port(eventMeshTcpPort) + .userAgent(userAgent) + .build(); try { client = - EventMeshTCPClientFactory.createEventMeshTCPClient(eventMeshTcpClientConfig, EventMeshMessage.class); + EventMeshTCPClientFactory.createEventMeshTCPClient(eventMeshTcpClientConfig, EventMeshMessage.class); client.init(); client.subscribe(EventMeshTestCaseTopicSet.TOPIC_PRX_WQ2ClientUniCast, SubscriptionMode.CLUSTERING, - SubscriptionType.ASYNC); + SubscriptionType.ASYNC); client.registerSubBusiHandler(handler); client.listen(); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/AsyncSubscribeBroadcast.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/AsyncSubscribeBroadcast.java index dfc58a5a6..93d09539f 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/AsyncSubscribeBroadcast.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/AsyncSubscribeBroadcast.java @@ -18,9 +18,9 @@ package org.apache.eventmesh.tcp.demo.sub.eventmeshmessage; import org.apache.eventmesh.client.tcp.EventMeshTCPClient; +import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.client.tcp.common.ReceiveMsgHook; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; -import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; @@ -31,7 +31,6 @@ import org.apache.eventmesh.util.Utils; import java.util.Optional; import java.util.Properties; -import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -45,12 +44,12 @@ public class AsyncSubscribeBroadcast implements ReceiveMsgHook final int eventMeshTcpPort = Integer.parseInt(properties.getProperty("eventmesh.tcp.port")); UserAgent userAgent = EventMeshTestUtils.generateClient2(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host(eventMeshIp) - .port(eventMeshTcpPort) - .userAgent(userAgent) - .build(); + .host(eventMeshIp) + .port(eventMeshTcpPort) + .userAgent(userAgent) + .build(); try (EventMeshTCPClient client = EventMeshTCPClientFactory.createEventMeshTCPClient( - eventMeshTcpClientConfig, EventMeshMessage.class)) { + eventMeshTcpClientConfig, EventMeshMessage.class)) { client.init(); client.subscribe("TEST-TOPIC-TCP-BROADCAST", SubscriptionMode.BROADCASTING, SubscriptionType.ASYNC); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/SyncResponse.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/SyncResponse.java index e9606fa6c..9c7d37dd3 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/SyncResponse.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/demo/sub/eventmeshmessage/SyncResponse.java @@ -18,24 +18,19 @@ package org.apache.eventmesh.tcp.demo.sub.eventmeshmessage; import org.apache.eventmesh.client.tcp.EventMeshTCPClient; -import org.apache.eventmesh.client.tcp.common.MessageUtils; +import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.client.tcp.common.ReceiveMsgHook; import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; -import org.apache.eventmesh.client.tcp.EventMeshTCPClientFactory; import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; -import org.apache.eventmesh.common.protocol.tcp.Command; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; -import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.tcp.common.EventMeshTestUtils; -import io.netty.channel.ChannelHandlerContext; -import lombok.extern.slf4j.Slf4j; -import static org.apache.eventmesh.common.protocol.tcp.Command.RESPONSE_TO_SERVER; - import java.util.Optional; +import lombok.extern.slf4j.Slf4j; + @Slf4j public class SyncResponse implements ReceiveMsgHook { @@ -46,13 +41,13 @@ public class SyncResponse implements ReceiveMsgHook { public static void main(String[] agrs) throws Exception { UserAgent userAgent = EventMeshTestUtils.generateClient2(); EventMeshTCPClientConfig eventMeshTcpClientConfig = EventMeshTCPClientConfig.builder() - .host("127.0.0.1") - .port(10002) - .userAgent(userAgent) - .build(); + .host("127.0.0.1") + .port(10002) + .userAgent(userAgent) + .build(); try { client = EventMeshTCPClientFactory - .createEventMeshTCPClient(eventMeshTcpClientConfig, EventMeshMessage.class); + .createEventMeshTCPClient(eventMeshTcpClientConfig, EventMeshMessage.class); client.init(); client.subscribe("TEST-TOPIC-TCP-SYNC", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC); diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/util/Utils.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/util/Utils.java index 63a93ba75..b872c3af8 100644 --- a/eventmesh-examples/src/main/java/org/apache/eventmesh/util/Utils.java +++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/util/Utils.java @@ -70,7 +70,7 @@ public class Utils { if (!inetAddress.isLoopbackAddress()) { String ipaddress = inetAddress.getHostAddress().toString(); if (!ipaddress.contains("::") && !ipaddress.contains("0:0:") - && !ipaddress.contains("fe80")) { + && !ipaddress.contains("fe80")) { ip = ipaddress; } } diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-api/src/main/java/org/apache/eventmesh/protocol/api/ProtocolAdaptor.java b/eventmesh-protocol-plugin/eventmesh-protocol-api/src/main/java/org/apache/eventmesh/protocol/api/ProtocolAdaptor.java index 43ba72401..b6d5c83a4 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-api/src/main/java/org/apache/eventmesh/protocol/api/ProtocolAdaptor.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-api/src/main/java/org/apache/eventmesh/protocol/api/ProtocolAdaptor.java @@ -22,10 +22,10 @@ import org.apache.eventmesh.protocol.api.exception.ProtocolHandleException; import org.apache.eventmesh.spi.EventMeshExtensionType; import org.apache.eventmesh.spi.EventMeshSPI; -import io.cloudevents.CloudEvent; - import java.util.List; +import io.cloudevents.CloudEvent; + /** * Protocol transformer SPI interface, all protocol plugin should implementation. * diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-api/src/main/java/org/apache/eventmesh/protocol/api/ProtocolPluginFactory.java b/eventmesh-protocol-plugin/eventmesh-protocol-api/src/main/java/org/apache/eventmesh/protocol/api/ProtocolPluginFactory.java index 2d6f7bd55..1d2cd4042 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-api/src/main/java/org/apache/eventmesh/protocol/api/ProtocolPluginFactory.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-api/src/main/java/org/apache/eventmesh/protocol/api/ProtocolPluginFactory.java @@ -34,7 +34,7 @@ import lombok.experimental.UtilityClass; public class ProtocolPluginFactory { private static final Map> PROTOCOL_ADAPTOR_MAP = - new ConcurrentHashMap<>(16); + new ConcurrentHashMap<>(16); /** * Get protocol adaptor by name. @@ -46,12 +46,12 @@ public class ProtocolPluginFactory { @SuppressWarnings("unchecked") public static ProtocolAdaptor getProtocolAdaptor(String protocolType) { ProtocolAdaptor protocolAdaptor = PROTOCOL_ADAPTOR_MAP.computeIfAbsent( - protocolType, - (type) -> EventMeshExtensionFactory.getExtension(ProtocolAdaptor.class, type) + protocolType, + (type) -> EventMeshExtensionFactory.getExtension(ProtocolAdaptor.class, type) ); if (protocolAdaptor == null) { throw new IllegalArgumentException( - String.format("Cannot find the Protocol adaptor: %s", protocolType) + String.format("Cannot find the Protocol adaptor: %s", protocolType) ); } return protocolAdaptor; diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/CloudEventsProtocolAdaptor.java b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/CloudEventsProtocolAdaptor.java index 10939ee67..c54a88e7f 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/CloudEventsProtocolAdaptor.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/CloudEventsProtocolAdaptor.java @@ -38,20 +38,20 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.google.common.base.Preconditions; - import io.cloudevents.CloudEvent; import io.cloudevents.core.format.EventFormat; import io.cloudevents.core.provider.EventFormatProvider; import io.cloudevents.jackson.JsonFormat; +import com.google.common.base.Preconditions; + /** * CloudEvents protocol adaptor, used to transform CloudEvents message to CloudEvents message. * * @since 1.3.0 */ public class CloudEventsProtocolAdaptor - implements ProtocolAdaptor { + implements ProtocolAdaptor { @Override public CloudEvent toCloudEvent(ProtocolTransportObject cloudEvent) throws ProtocolHandleException { @@ -98,7 +98,7 @@ public class CloudEventsProtocolAdaptor @Override public List toBatchCloudEvent(ProtocolTransportObject protocol) - throws ProtocolHandleException { + throws ProtocolHandleException { return null; } @@ -113,7 +113,7 @@ public class CloudEventsProtocolAdaptor @Override public Map toMap() { byte[] eventByte = - EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE).serialize(cloudEvent); + EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE).serialize(cloudEvent); map.put("content", new String(eventByte, StandardCharsets.UTF_8)); return map; } @@ -127,7 +127,7 @@ public class CloudEventsProtocolAdaptor Preconditions.checkNotNull(dataContentType, "DateContentType cannot be null"); EventFormat eventFormat = EventFormatProvider.getInstance().resolveFormat(dataContentType); Preconditions.checkNotNull(eventFormat, - String.format("DateContentType:%s is not supported", dataContentType)); + String.format("DateContentType:%s is not supported", dataContentType)); pkg.setBody(eventFormat.serialize(cloudEvent)); return pkg; } else { diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageBatchProtocolResolver.java b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageBatchProtocolResolver.java index 2b4f18003..d27fdcdb1 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageBatchProtocolResolver.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageBatchProtocolResolver.java @@ -17,10 +17,11 @@ package org.apache.eventmesh.protocol.cloudevents.resolver.http; -import io.cloudevents.CloudEvent; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.header.Header; +import io.cloudevents.CloudEvent; + public class SendMessageBatchProtocolResolver { public static CloudEvent buildEvent(Header header, Body body) { return null; diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageBatchV2ProtocolResolver.java b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageBatchV2ProtocolResolver.java index a90484b06..095095f3f 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageBatchV2ProtocolResolver.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageBatchV2ProtocolResolver.java @@ -17,28 +17,24 @@ package org.apache.eventmesh.protocol.cloudevents.resolver.http; -import io.cloudevents.CloudEvent; -import io.cloudevents.SpecVersion; -import io.cloudevents.core.builder.CloudEventBuilder; -import io.cloudevents.core.provider.EventFormatProvider; -import io.cloudevents.core.v03.CloudEventV03; -import io.cloudevents.core.v1.CloudEventV1; -import io.cloudevents.jackson.JsonFormat; - -import org.apache.commons.lang3.StringUtils; - import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchV2RequestBody; -import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatchV2RequestHeader; -import org.apache.eventmesh.common.utils.JsonUtils; import org.apache.eventmesh.protocol.api.exception.ProtocolHandleException; +import org.apache.commons.lang3.StringUtils; + import java.nio.charset.StandardCharsets; +import io.cloudevents.CloudEvent; +import io.cloudevents.SpecVersion; +import io.cloudevents.core.builder.CloudEventBuilder; +import io.cloudevents.core.provider.EventFormatProvider; +import io.cloudevents.jackson.JsonFormat; + public class SendMessageBatchV2ProtocolResolver { public static CloudEvent buildEvent(Header header, Body body) throws ProtocolHandleException { try { @@ -66,42 +62,42 @@ public class SendMessageBatchV2ProtocolResolver { CloudEvent event = null; if (StringUtils.equals(SpecVersion.V1.toString(), protocolVersion)) { event = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE) - .deserialize(content.getBytes(StandardCharsets.UTF_8)); + .deserialize(content.getBytes(StandardCharsets.UTF_8)); event = CloudEventBuilder.from(event) - .withExtension(ProtocolKey.REQUEST_CODE, code) - .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) - .withExtension(ProtocolKey.ClientInstanceKey.IDC, idc) - .withExtension(ProtocolKey.ClientInstanceKey.IP, ip) - .withExtension(ProtocolKey.ClientInstanceKey.PID, pid) - .withExtension(ProtocolKey.ClientInstanceKey.SYS, sys) - .withExtension(ProtocolKey.ClientInstanceKey.USERNAME, username) - .withExtension(ProtocolKey.ClientInstanceKey.PASSWD, passwd) - .withExtension(ProtocolKey.VERSION, version.getVersion()) - .withExtension(ProtocolKey.LANGUAGE, language) - .withExtension(ProtocolKey.PROTOCOL_TYPE, protocolType) - .withExtension(ProtocolKey.PROTOCOL_DESC, protocolDesc) - .withExtension(ProtocolKey.PROTOCOL_VERSION, protocolVersion) - .withExtension(SendMessageBatchV2RequestBody.PRODUCERGROUP, producerGroup) - .build(); + .withExtension(ProtocolKey.REQUEST_CODE, code) + .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) + .withExtension(ProtocolKey.ClientInstanceKey.IDC, idc) + .withExtension(ProtocolKey.ClientInstanceKey.IP, ip) + .withExtension(ProtocolKey.ClientInstanceKey.PID, pid) + .withExtension(ProtocolKey.ClientInstanceKey.SYS, sys) + .withExtension(ProtocolKey.ClientInstanceKey.USERNAME, username) + .withExtension(ProtocolKey.ClientInstanceKey.PASSWD, passwd) + .withExtension(ProtocolKey.VERSION, version.getVersion()) + .withExtension(ProtocolKey.LANGUAGE, language) + .withExtension(ProtocolKey.PROTOCOL_TYPE, protocolType) + .withExtension(ProtocolKey.PROTOCOL_DESC, protocolDesc) + .withExtension(ProtocolKey.PROTOCOL_VERSION, protocolVersion) + .withExtension(SendMessageBatchV2RequestBody.PRODUCERGROUP, producerGroup) + .build(); } else if (StringUtils.equals(SpecVersion.V03.toString(), protocolVersion)) { event = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE) - .deserialize(content.getBytes(StandardCharsets.UTF_8)); + .deserialize(content.getBytes(StandardCharsets.UTF_8)); event = CloudEventBuilder.from(event) - .withExtension(ProtocolKey.REQUEST_CODE, code) - .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) - .withExtension(ProtocolKey.ClientInstanceKey.IDC, idc) - .withExtension(ProtocolKey.ClientInstanceKey.IP, ip) - .withExtension(ProtocolKey.ClientInstanceKey.PID, pid) - .withExtension(ProtocolKey.ClientInstanceKey.SYS, sys) - .withExtension(ProtocolKey.ClientInstanceKey.USERNAME, username) - .withExtension(ProtocolKey.ClientInstanceKey.PASSWD, passwd) - .withExtension(ProtocolKey.VERSION, version.getVersion()) - .withExtension(ProtocolKey.LANGUAGE, language) - .withExtension(ProtocolKey.PROTOCOL_TYPE, protocolType) - .withExtension(ProtocolKey.PROTOCOL_DESC, protocolDesc) - .withExtension(ProtocolKey.PROTOCOL_VERSION, protocolVersion) - .withExtension(SendMessageBatchV2RequestBody.PRODUCERGROUP, producerGroup) - .build(); + .withExtension(ProtocolKey.REQUEST_CODE, code) + .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) + .withExtension(ProtocolKey.ClientInstanceKey.IDC, idc) + .withExtension(ProtocolKey.ClientInstanceKey.IP, ip) + .withExtension(ProtocolKey.ClientInstanceKey.PID, pid) + .withExtension(ProtocolKey.ClientInstanceKey.SYS, sys) + .withExtension(ProtocolKey.ClientInstanceKey.USERNAME, username) + .withExtension(ProtocolKey.ClientInstanceKey.PASSWD, passwd) + .withExtension(ProtocolKey.VERSION, version.getVersion()) + .withExtension(ProtocolKey.LANGUAGE, language) + .withExtension(ProtocolKey.PROTOCOL_TYPE, protocolType) + .withExtension(ProtocolKey.PROTOCOL_DESC, protocolDesc) + .withExtension(ProtocolKey.PROTOCOL_VERSION, protocolVersion) + .withExtension(SendMessageBatchV2RequestBody.PRODUCERGROUP, producerGroup) + .build(); } return event; } catch (Exception e) { diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageRequestProtocolResolver.java b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageRequestProtocolResolver.java index f8e0791e6..8bfde60d3 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageRequestProtocolResolver.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/http/SendMessageRequestProtocolResolver.java @@ -17,26 +17,24 @@ package org.apache.eventmesh.protocol.cloudevents.resolver.http; -import io.cloudevents.CloudEvent; -import io.cloudevents.SpecVersion; -import io.cloudevents.core.builder.CloudEventBuilder; -import io.cloudevents.core.provider.EventFormatProvider; -import io.cloudevents.core.v03.CloudEventV03; -import io.cloudevents.core.v1.CloudEventV1; -import io.cloudevents.jackson.JsonFormat; - -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.header.Header; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageRequestHeader; -import org.apache.eventmesh.common.utils.JsonUtils; import org.apache.eventmesh.protocol.api.exception.ProtocolHandleException; +import org.apache.commons.lang3.StringUtils; + import java.nio.charset.StandardCharsets; +import io.cloudevents.CloudEvent; +import io.cloudevents.SpecVersion; +import io.cloudevents.core.builder.CloudEventBuilder; +import io.cloudevents.core.provider.EventFormatProvider; +import io.cloudevents.jackson.JsonFormat; + public class SendMessageRequestProtocolResolver { public static CloudEvent buildEvent(Header header, Body body) throws ProtocolHandleException { @@ -65,7 +63,7 @@ public class SendMessageRequestProtocolResolver { CloudEvent event = null; if (StringUtils.equals(SpecVersion.V1.toString(), protocolVersion)) { event = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE) - .deserialize(content.getBytes(StandardCharsets.UTF_8)); + .deserialize(content.getBytes(StandardCharsets.UTF_8)); event = CloudEventBuilder.v1(event) .withExtension(ProtocolKey.REQUEST_CODE, code) .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) @@ -84,7 +82,7 @@ public class SendMessageRequestProtocolResolver { .build(); } else if (StringUtils.equals(SpecVersion.V03.toString(), protocolVersion)) { event = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE) - .deserialize(content.getBytes(StandardCharsets.UTF_8)); + .deserialize(content.getBytes(StandardCharsets.UTF_8)); event = CloudEventBuilder.v03(event) .withExtension(ProtocolKey.REQUEST_CODE, code) .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/tcp/TcpMessageProtocolResolver.java b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/tcp/TcpMessageProtocolResolver.java index 890378629..82b338882 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/tcp/TcpMessageProtocolResolver.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/main/java/org/apache/eventmesh/protocol/cloudevents/resolver/tcp/TcpMessageProtocolResolver.java @@ -26,8 +26,6 @@ import org.apache.commons.lang3.StringUtils; import java.nio.charset.StandardCharsets; -import com.google.common.base.Preconditions; - import io.cloudevents.CloudEvent; import io.cloudevents.SpecVersion; import io.cloudevents.core.builder.CloudEventBuilder; @@ -35,10 +33,12 @@ import io.cloudevents.core.format.EventFormat; import io.cloudevents.core.provider.EventFormatProvider; import io.cloudevents.jackson.JsonFormat; +import com.google.common.base.Preconditions; + public class TcpMessageProtocolResolver { public static CloudEvent buildEvent(Header header, String cloudEventJson) - throws ProtocolHandleException { + throws ProtocolHandleException { CloudEventBuilder cloudEventBuilder; String protocolType = header.getProperty(Constants.PROTOCOL_TYPE).toString(); @@ -46,11 +46,11 @@ public class TcpMessageProtocolResolver { String protocolDesc = header.getProperty(Constants.PROTOCOL_DESC).toString(); if (StringUtils.isBlank(protocolType) - || StringUtils.isBlank(protocolVersion) - || StringUtils.isBlank(protocolDesc)) { + || StringUtils.isBlank(protocolVersion) + || StringUtils.isBlank(protocolDesc)) { throw new ProtocolHandleException( - String.format("invalid protocol params protocolType %s|protocolVersion %s|protocolDesc %s", - protocolType, protocolVersion, protocolDesc)); + String.format("invalid protocol params protocolType %s|protocolVersion %s|protocolDesc %s", + protocolType, protocolVersion, protocolDesc)); } if (!StringUtils.equals(CloudEventsProtocolConstant.PROTOCOL_NAME, protocolType)) { @@ -61,7 +61,7 @@ public class TcpMessageProtocolResolver { // todo:resolve different format EventFormat eventFormat = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE); Preconditions - .checkNotNull(eventFormat, String.format("EventFormat: %s is not supported", JsonFormat.CONTENT_TYPE)); + .checkNotNull(eventFormat, String.format("EventFormat: %s is not supported", JsonFormat.CONTENT_TYPE)); CloudEvent event = eventFormat.deserialize(cloudEventJson.getBytes(StandardCharsets.UTF_8)); cloudEventBuilder = CloudEventBuilder.v1(event); for (String propKey : header.getProperties().keySet()) { @@ -73,7 +73,7 @@ public class TcpMessageProtocolResolver { } else if (StringUtils.equals(SpecVersion.V03.toString(), protocolVersion)) { // todo:resolve different format CloudEvent event = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE) - .deserialize(cloudEventJson.getBytes(StandardCharsets.UTF_8)); + .deserialize(cloudEventJson.getBytes(StandardCharsets.UTF_8)); cloudEventBuilder = CloudEventBuilder.v03(event); for (String propKey : header.getProperties().keySet()) { diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/test/java/org/apache/eventmesh/protocol/cloudevents/CloudEventsProtocolAdaptorTest.java b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/test/java/org/apache/eventmesh/protocol/cloudevents/CloudEventsProtocolAdaptorTest.java index 5155cf6e8..e4c684a20 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/test/java/org/apache/eventmesh/protocol/cloudevents/CloudEventsProtocolAdaptorTest.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-cloudevents/src/test/java/org/apache/eventmesh/protocol/cloudevents/CloudEventsProtocolAdaptorTest.java @@ -29,11 +29,11 @@ public class CloudEventsProtocolAdaptorTest { @Test public void loadPlugin() { ProtocolAdaptor protocolAdaptor = - ProtocolPluginFactory.getProtocolAdaptor(CloudEventsProtocolConstant.PROTOCOL_NAME); + ProtocolPluginFactory.getProtocolAdaptor(CloudEventsProtocolConstant.PROTOCOL_NAME); Assert.assertNotNull(protocolAdaptor); Assert.assertEquals( - CloudEventsProtocolConstant.PROTOCOL_NAME, protocolAdaptor.getProtocolType()); + CloudEventsProtocolConstant.PROTOCOL_NAME, protocolAdaptor.getProtocolType()); Assert.assertEquals(CloudEventsProtocolAdaptor.class, protocolAdaptor.getClass()); } } \ No newline at end of file diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptor.java b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptor.java index 75a99fd51..f1be1af82 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptor.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptor.java @@ -99,9 +99,10 @@ public class MeshMessageProtocolAdaptor implements ProtocolAdaptor map = new HashMap<>(); + @Override public Map toMap() { - map.put("content", new String(cloudEvent.getData().toBytes(), StandardCharsets.UTF_8)); + map.put("content", new String(cloudEvent.getData().toBytes(), StandardCharsets.UTF_8)); return map; } }; diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageBatchProtocolResolver.java b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageBatchProtocolResolver.java index cd8f8179e..e5762dc35 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageBatchProtocolResolver.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageBatchProtocolResolver.java @@ -17,10 +17,11 @@ package org.apache.eventmesh.protocol.meshmessage.resolver.http; -import io.cloudevents.CloudEvent; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.header.Header; +import io.cloudevents.CloudEvent; + public class SendMessageBatchProtocolResolver { public static CloudEvent buildEvent(Header header, Body body) { return null; diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageBatchV2ProtocolResolver.java b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageBatchV2ProtocolResolver.java index 0f3678fae..eefe660a3 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageBatchV2ProtocolResolver.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageBatchV2ProtocolResolver.java @@ -17,10 +17,6 @@ package org.apache.eventmesh.protocol.meshmessage.resolver.http; -import io.cloudevents.CloudEvent; -import io.cloudevents.SpecVersion; -import io.cloudevents.core.builder.CloudEventBuilder; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.protocol.http.body.Body; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchV2RequestBody; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody; @@ -30,9 +26,15 @@ import org.apache.eventmesh.common.protocol.http.header.Header; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatchV2RequestHeader; import org.apache.eventmesh.protocol.api.exception.ProtocolHandleException; +import org.apache.commons.lang3.StringUtils; + import java.net.URI; import java.nio.charset.StandardCharsets; +import io.cloudevents.CloudEvent; +import io.cloudevents.SpecVersion; +import io.cloudevents.core.builder.CloudEventBuilder; + public class SendMessageBatchV2ProtocolResolver { public static CloudEvent buildEvent(Header header, Body body) throws ProtocolHandleException { try { diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageRequestProtocolResolver.java b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageRequestProtocolResolver.java index ace5bfead..b53245ffa 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageRequestProtocolResolver.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/http/SendMessageRequestProtocolResolver.java @@ -18,7 +18,6 @@ package org.apache.eventmesh.protocol.meshmessage.resolver.http; import org.apache.eventmesh.common.protocol.http.body.Body; -import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchV2RequestBody; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; @@ -65,28 +64,28 @@ public class SendMessageRequestProtocolResolver { cloudEventBuilder = CloudEventBuilder.v1(); cloudEventBuilder = cloudEventBuilder.withId(sendMessageRequestBody.getBizSeqNo()) - .withSubject(sendMessageRequestBody.getTopic()) - .withType("eventmeshmessage") - .withSource(URI.create("/")) - .withData(content.getBytes(StandardCharsets.UTF_8)) - .withExtension(ProtocolKey.REQUEST_CODE, code) - .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) - .withExtension(ProtocolKey.ClientInstanceKey.IDC, idc) - .withExtension(ProtocolKey.ClientInstanceKey.IP, ip) - .withExtension(ProtocolKey.ClientInstanceKey.PID, pid) - .withExtension(ProtocolKey.ClientInstanceKey.SYS, sys) - .withExtension(ProtocolKey.ClientInstanceKey.USERNAME, username) - .withExtension(ProtocolKey.ClientInstanceKey.PASSWD, passwd) - .withExtension(ProtocolKey.VERSION, version.getVersion()) - .withExtension(ProtocolKey.LANGUAGE, language) - .withExtension(ProtocolKey.PROTOCOL_TYPE, protocolType) - .withExtension(ProtocolKey.PROTOCOL_DESC, protocolDesc) - .withExtension(ProtocolKey.PROTOCOL_VERSION, protocolVersion) - .withExtension(SendMessageRequestBody.BIZSEQNO, sendMessageRequestBody.getBizSeqNo()) - .withExtension(SendMessageRequestBody.UNIQUEID, sendMessageRequestBody.getUniqueId()) - .withExtension(SendMessageRequestBody.PRODUCERGROUP, - sendMessageRequestBody.getProducerGroup()) - .withExtension(SendMessageRequestBody.TTL, sendMessageRequestBody.getTtl()); + .withSubject(sendMessageRequestBody.getTopic()) + .withType("eventmeshmessage") + .withSource(URI.create("/")) + .withData(content.getBytes(StandardCharsets.UTF_8)) + .withExtension(ProtocolKey.REQUEST_CODE, code) + .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) + .withExtension(ProtocolKey.ClientInstanceKey.IDC, idc) + .withExtension(ProtocolKey.ClientInstanceKey.IP, ip) + .withExtension(ProtocolKey.ClientInstanceKey.PID, pid) + .withExtension(ProtocolKey.ClientInstanceKey.SYS, sys) + .withExtension(ProtocolKey.ClientInstanceKey.USERNAME, username) + .withExtension(ProtocolKey.ClientInstanceKey.PASSWD, passwd) + .withExtension(ProtocolKey.VERSION, version.getVersion()) + .withExtension(ProtocolKey.LANGUAGE, language) + .withExtension(ProtocolKey.PROTOCOL_TYPE, protocolType) + .withExtension(ProtocolKey.PROTOCOL_DESC, protocolDesc) + .withExtension(ProtocolKey.PROTOCOL_VERSION, protocolVersion) + .withExtension(SendMessageRequestBody.BIZSEQNO, sendMessageRequestBody.getBizSeqNo()) + .withExtension(SendMessageRequestBody.UNIQUEID, sendMessageRequestBody.getUniqueId()) + .withExtension(SendMessageRequestBody.PRODUCERGROUP, + sendMessageRequestBody.getProducerGroup()) + .withExtension(SendMessageRequestBody.TTL, sendMessageRequestBody.getTtl()); if (StringUtils.isNotEmpty(sendMessageRequestBody.getTag())) { cloudEventBuilder = cloudEventBuilder.withExtension(SendMessageRequestBody.TAG, sendMessageRequestBody.getTag()); } @@ -94,28 +93,28 @@ public class SendMessageRequestProtocolResolver { } else if (StringUtils.equals(SpecVersion.V03.toString(), protocolVersion)) { cloudEventBuilder = CloudEventBuilder.v03(); cloudEventBuilder = cloudEventBuilder.withId(sendMessageRequestBody.getBizSeqNo()) - .withSubject(sendMessageRequestBody.getTopic()) - .withType("eventmeshmessage") - .withSource(URI.create("/")) - .withData(content.getBytes(StandardCharsets.UTF_8)) - .withExtension(ProtocolKey.REQUEST_CODE, code) - .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) - .withExtension(ProtocolKey.ClientInstanceKey.IDC, idc) - .withExtension(ProtocolKey.ClientInstanceKey.IP, ip) - .withExtension(ProtocolKey.ClientInstanceKey.PID, pid) - .withExtension(ProtocolKey.ClientInstanceKey.SYS, sys) - .withExtension(ProtocolKey.ClientInstanceKey.USERNAME, username) - .withExtension(ProtocolKey.ClientInstanceKey.PASSWD, passwd) - .withExtension(ProtocolKey.VERSION, version.getVersion()) - .withExtension(ProtocolKey.LANGUAGE, language) - .withExtension(ProtocolKey.PROTOCOL_TYPE, protocolType) - .withExtension(ProtocolKey.PROTOCOL_DESC, protocolDesc) - .withExtension(ProtocolKey.PROTOCOL_VERSION, protocolVersion) - .withExtension(SendMessageRequestBody.BIZSEQNO, sendMessageRequestBody.getBizSeqNo()) - .withExtension(SendMessageRequestBody.UNIQUEID, sendMessageRequestBody.getUniqueId()) - .withExtension(SendMessageRequestBody.PRODUCERGROUP, - sendMessageRequestBody.getProducerGroup()) - .withExtension(SendMessageRequestBody.TTL, sendMessageRequestBody.getTtl()); + .withSubject(sendMessageRequestBody.getTopic()) + .withType("eventmeshmessage") + .withSource(URI.create("/")) + .withData(content.getBytes(StandardCharsets.UTF_8)) + .withExtension(ProtocolKey.REQUEST_CODE, code) + .withExtension(ProtocolKey.ClientInstanceKey.ENV, env) + .withExtension(ProtocolKey.ClientInstanceKey.IDC, idc) + .withExtension(ProtocolKey.ClientInstanceKey.IP, ip) + .withExtension(ProtocolKey.ClientInstanceKey.PID, pid) + .withExtension(ProtocolKey.ClientInstanceKey.SYS, sys) + .withExtension(ProtocolKey.ClientInstanceKey.USERNAME, username) + .withExtension(ProtocolKey.ClientInstanceKey.PASSWD, passwd) + .withExtension(ProtocolKey.VERSION, version.getVersion()) + .withExtension(ProtocolKey.LANGUAGE, language) + .withExtension(ProtocolKey.PROTOCOL_TYPE, protocolType) + .withExtension(ProtocolKey.PROTOCOL_DESC, protocolDesc) + .withExtension(ProtocolKey.PROTOCOL_VERSION, protocolVersion) + .withExtension(SendMessageRequestBody.BIZSEQNO, sendMessageRequestBody.getBizSeqNo()) + .withExtension(SendMessageRequestBody.UNIQUEID, sendMessageRequestBody.getUniqueId()) + .withExtension(SendMessageRequestBody.PRODUCERGROUP, + sendMessageRequestBody.getProducerGroup()) + .withExtension(SendMessageRequestBody.TTL, sendMessageRequestBody.getTtl()); if (StringUtils.isNotEmpty(sendMessageRequestBody.getTag())) { cloudEventBuilder = cloudEventBuilder.withExtension(SendMessageRequestBody.TAG, sendMessageRequestBody.getTag()); } diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/tcp/TcpMessageProtocolResolver.java b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/tcp/TcpMessageProtocolResolver.java index e0d2f4e78..1ee7051df 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/tcp/TcpMessageProtocolResolver.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/resolver/tcp/TcpMessageProtocolResolver.java @@ -17,10 +17,6 @@ package org.apache.eventmesh.protocol.meshmessage.resolver.tcp; -import io.cloudevents.CloudEvent; -import io.cloudevents.SpecVersion; -import io.cloudevents.core.builder.CloudEventBuilder; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; import org.apache.eventmesh.common.protocol.tcp.Header; @@ -28,11 +24,17 @@ import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.protocol.api.exception.ProtocolHandleException; import org.apache.eventmesh.protocol.meshmessage.MeshMessageProtocolConstant; +import org.apache.commons.lang3.StringUtils; + import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; +import io.cloudevents.CloudEvent; +import io.cloudevents.SpecVersion; +import io.cloudevents.core.builder.CloudEventBuilder; + public class TcpMessageProtocolResolver { diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/test/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptorTest.java b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/test/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptorTest.java index 54108bf79..d67c58071 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/test/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptorTest.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/test/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptorTest.java @@ -29,11 +29,11 @@ public class MeshMessageProtocolAdaptorTest { @Test public void loadPlugin() { ProtocolAdaptor protocolAdaptor = - ProtocolPluginFactory.getProtocolAdaptor(MeshMessageProtocolConstant.PROTOCOL_NAME); + ProtocolPluginFactory.getProtocolAdaptor(MeshMessageProtocolConstant.PROTOCOL_NAME); Assert.assertNotNull(protocolAdaptor); Assert.assertEquals( - MeshMessageProtocolConstant.PROTOCOL_NAME, protocolAdaptor.getProtocolType() + MeshMessageProtocolConstant.PROTOCOL_NAME, protocolAdaptor.getProtocolType() ); } diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-openmessage/src/main/java/org/apache/eventmesh/protocol/openmessage/OpenMessageProtocolAdaptor.java b/eventmesh-protocol-plugin/eventmesh-protocol-openmessage/src/main/java/org/apache/eventmesh/protocol/openmessage/OpenMessageProtocolAdaptor.java index 00a48b19a..0e2d52504 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-openmessage/src/main/java/org/apache/eventmesh/protocol/openmessage/OpenMessageProtocolAdaptor.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-openmessage/src/main/java/org/apache/eventmesh/protocol/openmessage/OpenMessageProtocolAdaptor.java @@ -19,13 +19,13 @@ package org.apache.eventmesh.protocol.openmessage; import org.apache.eventmesh.common.protocol.ProtocolTransportObject; import org.apache.eventmesh.protocol.api.ProtocolAdaptor; - -import io.cloudevents.CloudEvent; -import io.openmessaging.api.Message; import org.apache.eventmesh.protocol.api.exception.ProtocolHandleException; import java.util.List; +import io.cloudevents.CloudEvent; +import io.openmessaging.api.Message; + /** * OpenMessage protocol adaptor, used to transform protocol between * {@link CloudEvent} with {@link Message}. diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-openmessage/src/test/java/org/apache/eventmesh/protocol/openmessage/OpenMessageProtocolAdaptorTest.java b/eventmesh-protocol-plugin/eventmesh-protocol-openmessage/src/test/java/org/apache/eventmesh/protocol/openmessage/OpenMessageProtocolAdaptorTest.java index 5d833ec58..b0c49707f 100644 --- a/eventmesh-protocol-plugin/eventmesh-protocol-openmessage/src/test/java/org/apache/eventmesh/protocol/openmessage/OpenMessageProtocolAdaptorTest.java +++ b/eventmesh-protocol-plugin/eventmesh-protocol-openmessage/src/test/java/org/apache/eventmesh/protocol/openmessage/OpenMessageProtocolAdaptorTest.java @@ -29,11 +29,11 @@ public class OpenMessageProtocolAdaptorTest { @Test public void loadPlugin() { ProtocolAdaptor protocolAdaptor = - ProtocolPluginFactory.getProtocolAdaptor(OpenMessageProtocolConstant.PROTOCOL_NAME); + ProtocolPluginFactory.getProtocolAdaptor(OpenMessageProtocolConstant.PROTOCOL_NAME); Assert.assertNotNull(protocolAdaptor); Assert.assertEquals( - OpenMessageProtocolConstant.PROTOCOL_NAME, protocolAdaptor.getProtocolType() + OpenMessageProtocolConstant.PROTOCOL_NAME, protocolAdaptor.getProtocolType() ); Assert.assertEquals(OpenMessageProtocolAdaptor.class, protocolAdaptor.getClass()); } diff --git a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/exception/RegistryException.java b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/exception/RegistryException.java index 31453efb3..893f8ff25 100644 --- a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/exception/RegistryException.java +++ b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/exception/RegistryException.java @@ -14,8 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.api.exception; +/** + * RegistryException + */ public class RegistryException extends RuntimeException { public RegistryException(String message) { diff --git a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/RegistryService.java b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/RegistryService.java index 5363b2d8b..f9520176a 100644 --- a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/RegistryService.java +++ b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/RegistryService.java @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.api.registry; import org.apache.eventmesh.api.exception.RegistryException; @@ -26,6 +27,9 @@ import org.apache.eventmesh.spi.EventMeshSPI; import java.util.List; import java.util.Map; +/** + * RegistryService + */ @EventMeshSPI(isSingleton = true, eventMeshExtensionType = EventMeshExtensionType.REGISTRY) public interface RegistryService { void init() throws RegistryException; @@ -36,7 +40,8 @@ public interface RegistryService { List findEventMeshInfoByCluster(String clusterName) throws RegistryException; - Map> findEventMeshClientDistributionData(String clusterName, String group, String purpose) throws RegistryException; + Map> findEventMeshClientDistributionData( + String clusterName, String group, String purpose) throws RegistryException; boolean register(EventMeshRegisterInfo eventMeshRegisterInfo) throws RegistryException; diff --git a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshDataInfo.java b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshDataInfo.java index 389d1e494..228053a09 100644 --- a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshDataInfo.java +++ b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshDataInfo.java @@ -14,8 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.api.registry.dto; +/** + * EventMeshDataInfo + */ public class EventMeshDataInfo { private String eventMeshClusterName; private String eventMeshName; diff --git a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshRegisterInfo.java b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshRegisterInfo.java index 98eaf5d49..5560d1991 100644 --- a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshRegisterInfo.java +++ b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshRegisterInfo.java @@ -14,10 +14,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.api.registry.dto; import java.util.Map; +/** + * EventMeshRegisterInfo + */ public class EventMeshRegisterInfo { private String eventMeshClusterName; private String eventMeshName; diff --git a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshUnRegisterInfo.java b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshUnRegisterInfo.java index 06e54a01d..221645434 100644 --- a/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshUnRegisterInfo.java +++ b/eventmesh-registry-plugin/eventmesh-registry-api/src/main/java/org/apache/eventmesh/api/registry/dto/EventMeshUnRegisterInfo.java @@ -14,8 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.api.registry.dto; +/** + * EventMeshUnRegisterInfo + */ public class EventMeshUnRegisterInfo { private String eventMeshClusterName; private String eventMeshName; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/acl/Acl.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/acl/Acl.java index bf762ebd9..7d07aafb4 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/acl/Acl.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/acl/Acl.java @@ -14,27 +14,29 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.acl; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.api.acl.AclPropertyKeys; import org.apache.eventmesh.api.acl.AclService; import org.apache.eventmesh.api.exception.AclException; -//import org.apache.eventmesh.api.producer.MeshMQProducer; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.spi.EventMeshExtensionFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.util.Properties; import java.util.ServiceLoader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class Acl { private static final Logger logger = LoggerFactory.getLogger(Acl.class); private static AclService aclService; - public void init(String aclPluginType) throws AclException{ -// aclService = getSpiAclService(); + public void init(String aclPluginType) throws AclException { + //aclService = getSpiAclService(); aclService = EventMeshExtensionFactory.getExtension(AclService.class, aclPluginType); if (aclService == null) { logger.error("can't load the aclService plugin, please check."); @@ -43,63 +45,67 @@ public class Acl { aclService.init(); } - public void start() throws AclException{ + public void start() throws AclException { aclService.start(); } - public void shutdown() throws AclException{ + public void shutdown() throws AclException { aclService.shutdown(); } - public static void doAclCheckInTcpConnect(String remoteAddr, UserAgent userAgent, int requestCode) throws AclException{ + public static void doAclCheckInTcpConnect(String remoteAddr, UserAgent userAgent, int requestCode) throws AclException { aclService.doAclCheckInConnect(buildTcpAclProperties(remoteAddr, userAgent, null, requestCode)); } - public static void doAclCheckInTcpHeartbeat(String remoteAddr, UserAgent userAgent, int requestCode) throws AclException{ + public static void doAclCheckInTcpHeartbeat(String remoteAddr, UserAgent userAgent, int requestCode) throws AclException { aclService.doAclCheckInHeartbeat(buildTcpAclProperties(remoteAddr, userAgent, null, requestCode)); } - public static void doAclCheckInTcpSend(String remoteAddr, UserAgent userAgent, String topic, int requestCode) throws AclException{ + public static void doAclCheckInTcpSend(String remoteAddr, UserAgent userAgent, String topic, int requestCode) throws AclException { aclService.doAclCheckInSend(buildTcpAclProperties(remoteAddr, userAgent, topic, requestCode)); } - public static void doAclCheckInTcpReceive(String remoteAddr, UserAgent userAgent, String topic, int requestCode) throws AclException{ + public static void doAclCheckInTcpReceive(String remoteAddr, UserAgent userAgent, String topic, int requestCode) throws AclException { aclService.doAclCheckInReceive(buildTcpAclProperties(remoteAddr, userAgent, topic, requestCode)); } - private static Properties buildTcpAclProperties(String remoteAddr, UserAgent userAgent, String topic, int requestCode){ + private static Properties buildTcpAclProperties(String remoteAddr, UserAgent userAgent, String topic, int requestCode) { Properties aclProperties = new Properties(); aclProperties.put(AclPropertyKeys.CLIENT_IP, remoteAddr); aclProperties.put(AclPropertyKeys.USER, userAgent.getUsername()); aclProperties.put(AclPropertyKeys.PASSWORD, userAgent.getPassword()); aclProperties.put(AclPropertyKeys.SUBSYSTEM, userAgent.getSubsystem()); aclProperties.put(AclPropertyKeys.REQUEST_CODE, requestCode); - if(StringUtils.isNotBlank(topic)) { + if (StringUtils.isNotBlank(topic)) { aclProperties.put(AclPropertyKeys.TOPIC, topic); } return aclProperties; } - public static void doAclCheckInHttpSend(String remoteAddr, String user, String pass,String subsystem, String topic, int requestCode) throws AclException{ + public static void doAclCheckInHttpSend(String remoteAddr, String user, String pass, String subsystem, String topic, + int requestCode) throws AclException { aclService.doAclCheckInSend(buildHttpAclProperties(remoteAddr, user, pass, subsystem, topic, requestCode)); } - public static void doAclCheckInHttpReceive(String remoteAddr, String user, String pass,String subsystem, String topic, int requestCode) throws AclException{ + public static void doAclCheckInHttpReceive(String remoteAddr, String user, String pass, String subsystem, String topic, + int requestCode) throws AclException { aclService.doAclCheckInReceive(buildHttpAclProperties(remoteAddr, user, pass, subsystem, topic, requestCode)); } - public static void doAclCheckInHttpHeartbeat(String remoteAddr, String user, String pass,String subsystem, String topic, int requestCode) throws AclException{ + public static void doAclCheckInHttpHeartbeat(String remoteAddr, String user, String pass, String subsystem, String topic, + int requestCode) throws AclException { aclService.doAclCheckInHeartbeat(buildHttpAclProperties(remoteAddr, user, pass, subsystem, topic, requestCode)); } - private static Properties buildHttpAclProperties(String remoteAddr, String user, String pass,String subsystem, String topic, int requestCode){ + private static Properties buildHttpAclProperties(String remoteAddr, String user, String pass, String subsystem, + String topic, int requestCode) { Properties aclProperties = new Properties(); aclProperties.put(AclPropertyKeys.CLIENT_IP, remoteAddr); aclProperties.put(AclPropertyKeys.USER, user); aclProperties.put(AclPropertyKeys.PASSWORD, pass); aclProperties.put(AclPropertyKeys.SUBSYSTEM, subsystem); aclProperties.put(AclPropertyKeys.REQUEST_CODE, requestCode); - if(StringUtils.isNotBlank(topic)) { + if (StringUtils.isNotBlank(topic)) { aclProperties.put(AclPropertyKeys.TOPIC, topic); } return aclProperties; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/controller/ClientManageController.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/controller/ClientManageController.java index 3fc2e8e2b..1c9512761 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/controller/ClientManageController.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/controller/ClientManageController.java @@ -43,7 +43,7 @@ public class ClientManageController { private static final Logger logger = LoggerFactory.getLogger(ClientManageController.class); private EventMeshTCPServer eventMeshTCPServer; - + private AdminController adminController; public ClientManageController(EventMeshTCPServer eventMeshTCPServer) { @@ -63,10 +63,10 @@ public class ClientManageController { server.createContext("/clientManage/redirectClientByIpPort", new RedirectClientByIpPortHandler(eventMeshTCPServer)); server.createContext("/clientManage/showListenClientByTopic", new ShowListenClientByTopicHandler(eventMeshTCPServer)); server.createContext("/eventMesh/recommend", new QueryRecommendEventMeshHandler(eventMeshTCPServer)); - + adminController = new AdminController(); adminController.run(server); - + server.start(); logger.info("ClientManageController start success, port:{}", port); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java index 41af41ac0..51ebf9e68 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java @@ -17,26 +17,23 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import org.apache.commons.lang3.StringUtils; -import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; -import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientGroupWrapper; -import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendImpl; import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendStrategy; -import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.NetUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.io.OutputStream; import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; /** * query recommend eventmesh @@ -55,12 +52,12 @@ public class QueryRecommendEventMeshHandler implements HttpHandler { public void handle(HttpExchange httpExchange) throws IOException { String result = ""; OutputStream out = httpExchange.getResponseBody(); - try{ - if(!eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerRegistryEnable) { + try { + if (!eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerRegistryEnable) { throw new Exception("registry enable config is false, not support"); } - String queryString = httpExchange.getRequestURI().getQuery(); - Map queryStringInfo = NetUtils.formData2Dic(queryString); + String queryString = httpExchange.getRequestURI().getQuery(); + Map queryStringInfo = NetUtils.formData2Dic(queryString); String group = queryStringInfo.get(EventMeshConstants.MANAGE_GROUP); String purpose = queryStringInfo.get(EventMeshConstants.MANAGE_PURPOSE); if (StringUtils.isBlank(group) || StringUtils.isBlank(purpose)) { @@ -73,16 +70,16 @@ public class QueryRecommendEventMeshHandler implements HttpHandler { EventMeshRecommendStrategy eventMeshRecommendStrategy = new EventMeshRecommendImpl(eventMeshTCPServer); String recommendEventMeshResult = eventMeshRecommendStrategy.calculateRecommendEventMesh(group, purpose); result = (recommendEventMeshResult == null) ? "null" : recommendEventMeshResult; - logger.info("recommend eventmesh:{},group:{},purpose:{}",result, group, purpose); + logger.info("recommend eventmesh:{},group:{},purpose:{}", result, group, purpose); httpExchange.sendResponseHeaders(200, 0); out.write(result.getBytes()); - }catch (Exception e){ + } catch (Exception e) { logger.error("QueryRecommendEventMeshHandler fail...", e); - }finally { - if(out != null){ + } finally { + if (out != null) { try { out.close(); - }catch (IOException e){ + } catch (IOException e) { logger.warn("out close failed...", e); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java index 79ba4bd98..2039c227f 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java @@ -17,17 +17,14 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.NetUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.io.OutputStream; @@ -35,6 +32,12 @@ import java.net.InetSocketAddress; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + public class RedirectClientByIpPortHandler implements HttpHandler { private static final Logger logger = LoggerFactory.getLogger(RedirectClientByIpPortHandler.class); @@ -65,24 +68,29 @@ public class RedirectClientByIpPortHandler implements HttpHandler { out.write(result.getBytes()); return; } - logger.info("redirectClientByIpPort in admin,ip:{},port:{},destIp:{},destPort:{}====================", ip, port, destEventMeshIp, destEventMeshPort); + logger.info("redirectClientByIpPort in admin,ip:{},port:{},destIp:{},destPort:{}====================", ip, + port, destEventMeshIp, destEventMeshPort); ClientSessionGroupMapping clientSessionGroupMapping = eventMeshTCPServer.getClientSessionGroupMapping(); ConcurrentHashMap sessionMap = clientSessionGroupMapping.getSessionMap(); String redirectResult = ""; try { if (!sessionMap.isEmpty()) { for (Session session : sessionMap.values()) { - if (session.getClient().getHost().equals(ip) && String.valueOf(session.getClient().getPort()).equals(port)) { + if (session.getClient().getHost().equals(ip) && String.valueOf( + session.getClient().getPort()).equals(port)) { redirectResult += "|"; - redirectResult += EventMeshTcp2Client.redirectClient2NewEventMesh(eventMeshTCPServer, destEventMeshIp, Integer.parseInt(destEventMeshPort), + redirectResult += EventMeshTcp2Client.redirectClient2NewEventMesh(eventMeshTCPServer, + destEventMeshIp, Integer.parseInt(destEventMeshPort), session, clientSessionGroupMapping); } } } } catch (Exception e) { - logger.error("clientManage|redirectClientByIpPort|fail|ip={}|port={}|destEventMeshIp" + + logger.error("clientManage|redirectClientByIpPort|fail|ip={}|port={}|destEventMeshIp" + + "={}|destEventMeshPort={},errMsg={}", ip, port, destEventMeshIp, destEventMeshPort, e); - result = String.format("redirectClientByIpPort fail! sessionMap size {%d}, {clientIp=%s clientPort=%s " + + result = String.format("redirectClientByIpPort fail! sessionMap size {%d}, {clientIp=%s clientPort=%s " + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s", sessionMap.size(), ip, port, destEventMeshIp, destEventMeshPort, redirectResult, e .getMessage()); @@ -90,7 +98,8 @@ public class RedirectClientByIpPortHandler implements HttpHandler { out.write(result.getBytes()); return; } - result = String.format("redirectClientByIpPort success! sessionMap size {%d}, {ip=%s port=%s " + + result = String.format("redirectClientByIpPort success! sessionMap size {%d}, {ip=%s port=%s " + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ", sessionMap.size(), ip, port, destEventMeshIp, destEventMeshPort, redirectResult); httpExchange.sendResponseHeaders(200, 0); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java index b605a1cc6..b5f83ac89 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java @@ -17,17 +17,14 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.NetUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.io.OutputStream; @@ -35,6 +32,12 @@ import java.net.InetSocketAddress; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + /** * redirect subsystem for path */ @@ -59,14 +62,16 @@ public class RedirectClientByPathHandler implements HttpHandler { String destEventMeshIp = queryStringInfo.get(EventMeshConstants.MANAGE_DEST_IP); String destEventMeshPort = queryStringInfo.get(EventMeshConstants.MANAGE_DEST_PORT); - if (StringUtils.isBlank(path) || StringUtils.isBlank(destEventMeshIp) || StringUtils.isBlank(destEventMeshPort) || - !StringUtils.isNumeric(destEventMeshPort)) { + if (StringUtils.isBlank(path) || StringUtils.isBlank(destEventMeshIp) + || StringUtils.isBlank(destEventMeshPort) + || !StringUtils.isNumeric(destEventMeshPort)) { httpExchange.sendResponseHeaders(200, 0); result = "params illegal!"; out.write(result.getBytes()); return; } - logger.info("redirectClientByPath in admin,path:{},destIp:{},destPort:{}====================", path, destEventMeshIp, destEventMeshPort); + logger.info("redirectClientByPath in admin,path:{},destIp:{},destPort:{}====================", path, + destEventMeshIp, destEventMeshPort); ClientSessionGroupMapping clientSessionGroupMapping = eventMeshTCPServer.getClientSessionGroupMapping(); ConcurrentHashMap sessionMap = clientSessionGroupMapping.getSessionMap(); String redirectResult = ""; @@ -75,15 +80,18 @@ public class RedirectClientByPathHandler implements HttpHandler { for (Session session : sessionMap.values()) { if (session.getClient().getPath().contains(path)) { redirectResult += "|"; - redirectResult += EventMeshTcp2Client.redirectClient2NewEventMesh(eventMeshTCPServer, destEventMeshIp, Integer.parseInt(destEventMeshPort), + redirectResult += EventMeshTcp2Client.redirectClient2NewEventMesh(eventMeshTCPServer, + destEventMeshIp, Integer.parseInt(destEventMeshPort), session, clientSessionGroupMapping); } } } } catch (Exception e) { - logger.error("clientManage|redirectClientByPath|fail|path={}|destEventMeshIp" + + logger.error("clientManage|redirectClientByPath|fail|path={}|destEventMeshIp" + + "={}|destEventMeshPort={},errMsg={}", path, destEventMeshIp, destEventMeshPort, e); - result = String.format("redirectClientByPath fail! sessionMap size {%d}, {path=%s " + + result = String.format("redirectClientByPath fail! sessionMap size {%d}, {path=%s " + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s", sessionMap.size(), path, destEventMeshIp, destEventMeshPort, redirectResult, e .getMessage()); @@ -91,7 +99,8 @@ public class RedirectClientByPathHandler implements HttpHandler { out.write(result.getBytes()); return; } - result = String.format("redirectClientByPath success! sessionMap size {%d}, {path=%s " + + result = String.format("redirectClientByPath success! sessionMap size {%d}, {path=%s " + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ", sessionMap.size(), path, destEventMeshIp, destEventMeshPort, redirectResult); httpExchange.sendResponseHeaders(200, 0); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java index 400c8c0e8..6fae83c30 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java @@ -17,17 +17,14 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.NetUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.io.OutputStream; @@ -35,6 +32,12 @@ import java.net.InetSocketAddress; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + /** * redirect subsystem for subsys and dcn */ @@ -67,7 +70,8 @@ public class RedirectClientBySubSystemHandler implements HttpHandler { out.write(result.getBytes()); return; } - logger.info("redirectClientBySubSystem in admin,subsys:{},destIp:{},destPort:{}====================", subSystem, destEventMeshIp, destEventMeshPort); + logger.info("redirectClientBySubSystem in admin,subsys:{},destIp:{},destPort:{}====================", + subSystem, destEventMeshIp, destEventMeshPort); ClientSessionGroupMapping clientSessionGroupMapping = eventMeshTCPServer.getClientSessionGroupMapping(); ConcurrentHashMap sessionMap = clientSessionGroupMapping.getSessionMap(); String redirectResult = ""; @@ -76,15 +80,18 @@ public class RedirectClientBySubSystemHandler implements HttpHandler { for (Session session : sessionMap.values()) { if (session.getClient().getSubsystem().equals(subSystem)) { redirectResult += "|"; - redirectResult += EventMeshTcp2Client.redirectClient2NewEventMesh(eventMeshTCPServer, destEventMeshIp, Integer.parseInt(destEventMeshPort), + redirectResult += EventMeshTcp2Client.redirectClient2NewEventMesh(eventMeshTCPServer, + destEventMeshIp, Integer.parseInt(destEventMeshPort), session, clientSessionGroupMapping); } } } } catch (Exception e) { - logger.error("clientManage|redirectClientBySubSystem|fail|subSystem={}|destEventMeshIp" + + logger.error("clientManage|redirectClientBySubSystem|fail|subSystem={}|destEventMeshIp" + + "={}|destEventMeshPort={},errMsg={}", subSystem, destEventMeshIp, destEventMeshPort, e); - result = String.format("redirectClientBySubSystem fail! sessionMap size {%d}, {subSystem=%s " + + result = String.format("redirectClientBySubSystem fail! sessionMap size {%d}, {subSystem=%s " + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s", sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult, e .getMessage()); @@ -92,7 +99,8 @@ public class RedirectClientBySubSystemHandler implements HttpHandler { out.write(result.getBytes()); return; } - result = String.format("redirectClientBySubSystem success! sessionMap size {%d}, {subSystem=%s " + + result = String.format("redirectClientBySubSystem success! sessionMap size {%d}, {subSystem=%s " + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ", sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult); httpExchange.sendResponseHeaders(200, 0); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java index 7a6f59857..ca445a3b4 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java @@ -66,7 +66,7 @@ public class RejectAllClientHandler implements HttpHandler { if (!sessionMap.isEmpty()) { for (Map.Entry entry : sessionMap.entrySet()) { InetSocketAddress addr = EventMeshTcp2Client.serverGoodby2Client( - eventMeshTCPServer, entry.getValue(), clientSessionGroupMapping); + eventMeshTCPServer, entry.getValue(), clientSessionGroupMapping); if (addr != null) { successRemoteAddrs.add(addr); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java index 3ddd45e49..00533f59d 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java @@ -17,17 +17,14 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.NetUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.io.OutputStream; @@ -37,6 +34,12 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + public class RejectClientByIpPortHandler implements HttpHandler { private static final Logger logger = LoggerFactory.getLogger(RejectClientByIpPortHandler.class); @@ -71,7 +74,8 @@ public class RejectClientByIpPortHandler implements HttpHandler { if (!sessionMap.isEmpty()) { for (Map.Entry entry : sessionMap.entrySet()) { if (entry.getKey().getHostString().equals(ip) && String.valueOf(entry.getKey().getPort()).equals(port)) { - InetSocketAddress addr = EventMeshTcp2Client.serverGoodby2Client(eventMeshTCPServer, entry.getValue(), clientSessionGroupMapping); + InetSocketAddress addr = EventMeshTcp2Client.serverGoodby2Client(eventMeshTCPServer, + entry.getValue(), clientSessionGroupMapping); if (addr != null) { successRemoteAddrs.add(addr); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java index e5208c665..90cca1910 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java @@ -17,17 +17,14 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.NetUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.io.OutputStream; @@ -37,6 +34,12 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + public class RejectClientBySubSystemHandler implements HttpHandler { private static final Logger logger = LoggerFactory.getLogger(RejectClientBySubSystemHandler.class); @@ -60,6 +63,7 @@ public class RejectClientBySubSystemHandler implements HttpHandler { /** * remove c client by dcn and susysId + * * @param httpExchange * @throws IOException */ @@ -96,13 +100,15 @@ public class RejectClientBySubSystemHandler implements HttpHandler { } } catch (Exception e) { logger.error("clientManage|rejectClientBySubSystem|fail|subSystemId={},errMsg={}", subSystem, e); - result = String.format("rejectClientBySubSystem fail! sessionMap size {%d}, had reject {%d} , {" + + result = String.format("rejectClientBySubSystem fail! sessionMap size {%d}, had reject {%d} , {" + + "subSystemId=%s}, errorMsg : %s", sessionMap.size(), printClients(successRemoteAddrs), subSystem, e.getMessage()); httpExchange.sendResponseHeaders(200, 0); out.write(result.getBytes()); return; } - result = String.format("rejectClientBySubSystem success! sessionMap size {%d}, had reject {%s} , {" + + result = String.format("rejectClientBySubSystem success! sessionMap size {%d}, had reject {%s} , {" + + "subSystemId=%s}", sessionMap.size(), printClients(successRemoteAddrs), subSystem); httpExchange.sendResponseHeaders(200, 0); out.write(result.getBytes()); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java index 07cbbb20c..29d4cd58b 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java @@ -17,16 +17,12 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.NetUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.OutputStream; @@ -34,6 +30,12 @@ import java.net.InetSocketAddress; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + public class ShowClientBySystemHandler implements HttpHandler { private static final Logger logger = LoggerFactory.getLogger(ShowClientBySystemHandler.class); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java index 64d5c5df0..9c28f5316 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java @@ -17,22 +17,23 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; -import java.util.*; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + /** * This handler used to print the total client info */ @@ -69,7 +70,8 @@ public class ShowClientHandler implements HttpHandler { } for (Map.Entry entry : statMap.entrySet()) { - result += String.format("System=%s | ClientNum=%d", entry.getKey(), entry.getValue().intValue()) + + result += String.format("System=%s | ClientNum=%d", entry.getKey(), entry.getValue().intValue()) + + newLine; } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java index 6d8cbe4bc..95b3272ad 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java @@ -17,8 +17,6 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; @@ -26,8 +24,6 @@ import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientGroupWr import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.NetUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.OutputStream; @@ -35,6 +31,12 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + /** * query client subscription by topic */ diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java index 097ed1416..4a3f01f66 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java @@ -53,8 +53,6 @@ import javax.net.ssl.SSLEngine; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Preconditions; - import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelDuplexHandler; import io.netty.channel.ChannelFuture; @@ -97,6 +95,8 @@ import io.opentelemetry.context.propagation.TextMapGetter; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; +import com.google.common.base.Preconditions; + public abstract class AbstractHTTPServer extends AbstractRemotingServer { public Logger httpServerLogger = LoggerFactory.getLogger(this.getClass()); @@ -120,14 +120,14 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { public Tracer tracer; public ThreadPoolExecutor asyncContextCompleteHandler = - ThreadPoolFactory.createThreadPoolExecutor(10, 10, "EventMesh-http-asyncContext-"); + ThreadPoolFactory.createThreadPoolExecutor(10, 10, "EventMesh-http-asyncContext-"); static { DiskAttribute.deleteOnExitTemporaryFile = false; } protected final Map> - processorTable = new HashMap<>(64); + processorTable = new HashMap<>(64); public AbstractHTTPServer(int port, boolean useTLS) { this.port = port; @@ -138,7 +138,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status); HttpHeaders responseHeaders = response.headers(); responseHeaders.add( - HttpHeaderNames.CONTENT_TYPE, String.format("text/plain; charset=%s", EventMeshConstants.DEFAULT_CHARSET) + HttpHeaderNames.CONTENT_TYPE, String.format("text/plain; charset=%s", EventMeshConstants.DEFAULT_CHARSET) ); responseHeaders.add(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes()); responseHeaders.add(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE); @@ -167,7 +167,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { public void operationComplete(ChannelFuture f) { if (!f.isSuccess()) { httpLogger.warn("send response to [{}] fail, will close this channel", - RemotingHelper.parseChannelRemoteAddr(f.channel())); + RemotingHelper.parseChannelRemoteAddr(f.channel())); f.channel().close(); } } @@ -181,9 +181,9 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { ServerBootstrap b = new ServerBootstrap(); SSLContext sslContext = useTLS ? SSLContextFactory.getSslContext() : null; b.group(this.bossGroup, this.workerGroup) - .channel(NioServerSocketChannel.class) - .childHandler(new HttpsServerInitializer(sslContext)) - .childOption(ChannelOption.SO_KEEPALIVE, Boolean.TRUE); + .channel(NioServerSocketChannel.class) + .childHandler(new HttpsServerInitializer(sslContext)) + .childOption(ChannelOption.SO_KEEPALIVE, Boolean.TRUE); try { httpServerLogger.info("HTTPServer[port={}] started......", this.port); ChannelFuture future = b.bind(this.port).sync(); @@ -227,8 +227,8 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { Map headerParam = new HashMap<>(); for (String key : fullReq.headers().names()) { if (StringUtils.equalsIgnoreCase(HttpHeaderNames.CONTENT_TYPE.toString(), key) - || StringUtils.equalsIgnoreCase(HttpHeaderNames.ACCEPT_ENCODING.toString(), key) - || StringUtils.equalsIgnoreCase(HttpHeaderNames.CONTENT_LENGTH.toString(), key)) { + || StringUtils.equalsIgnoreCase(HttpHeaderNames.ACCEPT_ENCODING.toString(), key) + || StringUtils.equalsIgnoreCase(HttpHeaderNames.CONTENT_LENGTH.toString(), key)) { continue; } headerParam.put(key, fullReq.headers().get(key)); @@ -268,7 +268,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { private void preProcessHttpRequestHeader(ChannelHandlerContext ctx, HttpRequest httpRequest) { HttpHeaders requestHeaders = httpRequest.headers(); requestHeaders.set(ProtocolKey.ClientInstanceKey.IP, - RemotingHelper.parseChannelRemoteAddr(ctx.channel())); + RemotingHelper.parseChannelRemoteAddr(ctx.channel())); String protocolVersion = httpRequest.headers().get(ProtocolKey.VERSION); if (StringUtils.isBlank(protocolVersion)) { @@ -291,7 +291,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { getDecoder.parameters().forEach((key, value) -> httpRequestBody.put(key, value.get(0))); } else if (HttpMethod.POST.equals(httpRequest.method())) { HttpPostRequestDecoder decoder = - new HttpPostRequestDecoder(defaultHttpDataFactory, httpRequest); + new HttpPostRequestDecoder(defaultHttpDataFactory, httpRequest); for (InterfaceHttpData parm : decoder.getBodyHttpDatas()) { if (parm.getHttpDataType() == InterfaceHttpData.HttpDataType.Attribute) { Attribute data = (Attribute) parm; @@ -324,9 +324,9 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { } }); span = tracer.spanBuilder("HTTP " + httpRequest.method()) - .setParent(context) - .setSpanKind(SpanKind.SERVER) - .startSpan(); + .setParent(context) + .setSpanKind(SpanKind.SERVER) + .startSpan(); //attach the span to the server context context = context.with(SpanKey.SERVER_KEY, span); //put the context in channel @@ -347,9 +347,9 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { final Map bodyMap = parseHttpRequestBody(httpRequest); String requestCode = - (httpRequest.method() == HttpMethod.POST) - ? httpRequest.headers().get(ProtocolKey.REQUEST_CODE) - : MapUtils.getString(bodyMap, StringUtils.lowerCase(ProtocolKey.REQUEST_CODE), ""); + (httpRequest.method() == HttpMethod.POST) + ? httpRequest.headers().get(ProtocolKey.REQUEST_CODE) + : MapUtils.getString(bodyMap, StringUtils.lowerCase(ProtocolKey.REQUEST_CODE), ""); requestCommand.setHttpMethod(httpRequest.method().name()); requestCommand.setHttpVersion(httpRequest.protocolVersion().protocolName()); @@ -364,10 +364,10 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { HttpCommand responseCommand = null; if (StringUtils.isBlank(requestCode) - || !processorTable.containsKey(requestCode) - || !RequestCode.contains(Integer.valueOf(requestCode))) { + || !processorTable.containsKey(requestCode) + || !RequestCode.contains(Integer.valueOf(requestCode))) { responseCommand = - requestCommand.createHttpCommandResponse(EventMeshRetCode.EVENTMESH_REQUESTCODE_INVALID); + requestCommand.createHttpCommandResponse(EventMeshRetCode.EVENTMESH_REQUESTCODE_INVALID); sendResponse(ctx, responseCommand.httpResponse()); return; } @@ -386,7 +386,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { } AsyncContext asyncContext = - new AsyncContext<>(requestCommand, responseCommand, asyncContextCompleteHandler); + new AsyncContext<>(requestCommand, responseCommand, asyncContextCompleteHandler); processEventMeshRequest(ctx, asyncContext); } catch (Exception ex) { httpServerLogger.error("AbrstractHTTPServer.HTTPHandler.channelRead0 err", ex); @@ -410,7 +410,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { HttpRequestProcessor processor = choosed.getObject1(); if (processor.rejectRequest()) { HttpCommand responseCommand = - request.createHttpCommandResponse(EventMeshRetCode.EVENTMESH_REJECT_BY_PROCESSOR_ERROR); + request.createHttpCommandResponse(EventMeshRetCode.EVENTMESH_REJECT_BY_PROCESSOR_ERROR); asyncContext.onComplete(responseCommand); if (asyncContext.isComplete()) { if (httpLogger.isDebugEnabled()) { @@ -427,7 +427,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { } metrics.summaryMetrics - .recordHTTPReqResTimeCost(System.currentTimeMillis() - request.getReqTime()); + .recordHTTPReqResTimeCost(System.currentTimeMillis() - request.getReqTime()); if (httpLogger.isDebugEnabled()) { httpLogger.debug("{}", asyncContext.getResponse()); @@ -487,8 +487,8 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { int c = connections.incrementAndGet(); if (c > 20000) { httpServerLogger - .warn("client|http|channelActive|remoteAddress={}|msg={}", remoteAddress, - "too many client(20000) connect this eventMesh server"); + .warn("client|http|channelActive|remoteAddress={}|msg={}", remoteAddress, + "too many client(20000) connect this eventMesh server"); ctx.close(); return; } @@ -509,7 +509,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { if (event.state().equals(IdleState.ALL_IDLE)) { final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); httpServerLogger.info("client|http|userEventTriggered|remoteAddress={}|msg={}", - remoteAddress, evt.getClass().getName()); + remoteAddress, evt.getClass().getName()); ctx.close(); } } @@ -537,10 +537,10 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer { pipeline.addFirst("ssl", new SslHandler(sslEngine)); } pipeline.addLast(new HttpRequestDecoder(), - new HttpResponseEncoder(), - new HttpConnectionHandler(), - new HttpObjectAggregator(Integer.MAX_VALUE), - new HTTPHandler()); + new HttpResponseEncoder(), + new HttpConnectionHandler(), + new HttpObjectAggregator(Integer.MAX_VALUE), + new HTTPHandler()); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractRemotingServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractRemotingServer.java index bcf31bfd0..311ae2e08 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractRemotingServer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractRemotingServer.java @@ -17,16 +17,17 @@ package org.apache.eventmesh.runtime.boot; +import org.apache.eventmesh.common.utils.ThreadUtils; + import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.nio.NioEventLoopGroup; - -import org.apache.eventmesh.common.utils.ThreadUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.nio.NioEventLoopGroup; + public abstract class AbstractRemotingServer { public Logger logger = LoggerFactory.getLogger(this.getClass()); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHTTPServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHTTPServer.java index 8e223f0ee..06e6ab6be 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHTTPServer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshHTTPServer.java @@ -57,10 +57,10 @@ public class EventMeshHTTPServer extends AbstractHTTPServer { private EventMeshHTTPConfiguration eventMeshHttpConfiguration; public final ConcurrentHashMap localConsumerGroupMapping = - new ConcurrentHashMap<>(); + new ConcurrentHashMap<>(); public final ConcurrentHashMap> localClientInfoMapping = - new ConcurrentHashMap<>(); + new ConcurrentHashMap<>(); public EventMeshHTTPServer(EventMeshServer eventMeshServer, EventMeshHTTPConfiguration eventMeshHttpConfiguration) { @@ -109,44 +109,44 @@ public class EventMeshHTTPServer extends AbstractHTTPServer { public void initThreadPool() throws Exception { BlockingQueue batchMsgThreadPoolQueue = - new LinkedBlockingQueue(eventMeshHttpConfiguration.eventMeshServerBatchBlockQSize); + new LinkedBlockingQueue(eventMeshHttpConfiguration.eventMeshServerBatchBlockQSize); batchMsgExecutor = - ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerBatchMsgThreadNum, - eventMeshHttpConfiguration.eventMeshServerBatchMsgThreadNum, batchMsgThreadPoolQueue, - "eventMesh-batchMsg-", true); + ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerBatchMsgThreadNum, + eventMeshHttpConfiguration.eventMeshServerBatchMsgThreadNum, batchMsgThreadPoolQueue, + "eventMesh-batchMsg-", true); BlockingQueue sendMsgThreadPoolQueue = - new LinkedBlockingQueue(eventMeshHttpConfiguration.eventMeshServerSendMsgBlockQSize); + new LinkedBlockingQueue(eventMeshHttpConfiguration.eventMeshServerSendMsgBlockQSize); sendMsgExecutor = - ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerSendMsgThreadNum, - eventMeshHttpConfiguration.eventMeshServerSendMsgThreadNum, sendMsgThreadPoolQueue, - "eventMesh-sendMsg-", true); + ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerSendMsgThreadNum, + eventMeshHttpConfiguration.eventMeshServerSendMsgThreadNum, sendMsgThreadPoolQueue, + "eventMesh-sendMsg-", true); BlockingQueue pushMsgThreadPoolQueue = - new LinkedBlockingQueue(eventMeshHttpConfiguration.eventMeshServerPushMsgBlockQSize); + new LinkedBlockingQueue(eventMeshHttpConfiguration.eventMeshServerPushMsgBlockQSize); pushMsgExecutor = - ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerPushMsgThreadNum, - eventMeshHttpConfiguration.eventMeshServerPushMsgThreadNum, pushMsgThreadPoolQueue, - "eventMesh-pushMsg-", true); + ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerPushMsgThreadNum, + eventMeshHttpConfiguration.eventMeshServerPushMsgThreadNum, pushMsgThreadPoolQueue, + "eventMesh-pushMsg-", true); BlockingQueue clientManageThreadPoolQueue = - new LinkedBlockingQueue(eventMeshHttpConfiguration.eventMeshServerClientManageBlockQSize); + new LinkedBlockingQueue(eventMeshHttpConfiguration.eventMeshServerClientManageBlockQSize); clientManageExecutor = - ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerClientManageThreadNum, - eventMeshHttpConfiguration.eventMeshServerClientManageThreadNum, clientManageThreadPoolQueue, - "eventMesh-clientManage-", true); + ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerClientManageThreadNum, + eventMeshHttpConfiguration.eventMeshServerClientManageThreadNum, clientManageThreadPoolQueue, + "eventMesh-clientManage-", true); BlockingQueue adminThreadPoolQueue = new LinkedBlockingQueue(50); adminExecutor = - ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerAdminThreadNum, - eventMeshHttpConfiguration.eventMeshServerAdminThreadNum, adminThreadPoolQueue, "eventMesh-admin-", - true); + ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerAdminThreadNum, + eventMeshHttpConfiguration.eventMeshServerAdminThreadNum, adminThreadPoolQueue, "eventMesh-admin-", + true); BlockingQueue replyMessageThreadPoolQueue = new LinkedBlockingQueue(100); replyMsgExecutor = - ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerReplyMsgThreadNum, - eventMeshHttpConfiguration.eventMeshServerReplyMsgThreadNum, replyMessageThreadPoolQueue, - "eventMesh-replyMsg-", true); + ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpConfiguration.eventMeshServerReplyMsgThreadNum, + eventMeshHttpConfiguration.eventMeshServerReplyMsgThreadNum, replyMessageThreadPoolQueue, + "eventMesh-replyMsg-", true); } public ThreadPoolExecutor getBatchMsgExecutor() { @@ -246,7 +246,7 @@ public class EventMeshHTTPServer extends AbstractHTTPServer { BatchSendMessageV2Processor batchSendMessageV2Processor = new BatchSendMessageV2Processor(this); registerProcessor(RequestCode.MSG_BATCH_SEND_V2.getRequestCode(), batchSendMessageV2Processor, - batchMsgExecutor); + batchMsgExecutor); SendSyncMessageProcessor sendSyncMessageProcessor = new SendSyncMessageProcessor(this); registerProcessor(RequestCode.MSG_SEND_SYNC.getRequestCode(), sendSyncMessageProcessor, sendMsgExecutor); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java index b6c5459ff..8dde5d75f 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshServer.java @@ -62,7 +62,9 @@ public class EventMeshServer { acl.init(eventMeshHttpConfiguration.eventMeshSecurityPluginType); } - if (eventMeshTCPConfiguration != null && eventMeshTCPConfiguration.eventMeshTcpServerEnabled && eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { + if (eventMeshTCPConfiguration != null + && eventMeshTCPConfiguration.eventMeshTcpServerEnabled + && eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { registry.init(eventMeshTCPConfiguration.eventMeshRegistryPluginType); } @@ -76,7 +78,7 @@ public class EventMeshServer { } String eventStore = System - .getProperty(EventMeshConstants.EVENT_STORE_PROPERTIES, System.getenv(EventMeshConstants.EVENT_STORE_ENV)); + .getProperty(EventMeshConstants.EVENT_STORE_PROPERTIES, System.getenv(EventMeshConstants.EVENT_STORE_ENV)); logger.info("eventStore : {}", eventStore); serviceState = ServiceState.INITED; @@ -88,8 +90,9 @@ public class EventMeshServer { acl.start(); } - if (eventMeshTCPConfiguration != null && eventMeshTCPConfiguration.eventMeshTcpServerEnabled && - eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { + if (eventMeshTCPConfiguration != null + && eventMeshTCPConfiguration.eventMeshTcpServerEnabled + && eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { registry.start(); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshStartup.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshStartup.java index 5ad3ba908..ef6b129e2 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshStartup.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshStartup.java @@ -17,12 +17,13 @@ package org.apache.eventmesh.runtime.boot; -import java.io.File; - import org.apache.eventmesh.common.config.ConfigurationWrapper; import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration; import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration; import org.apache.eventmesh.runtime.constants.EventMeshConstants; + +import java.io.File; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshTCPServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshTCPServer.java index 9c624421f..87bf8d2dd 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshTCPServer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshTCPServer.java @@ -17,24 +17,12 @@ package org.apache.eventmesh.runtime.boot; -import java.util.concurrent.*; - -import com.google.common.util.concurrent.RateLimiter; - -import io.netty.bootstrap.ServerBootstrap; -import io.netty.buffer.PooledByteBufAllocator; -import io.netty.channel.*; -import io.netty.channel.socket.nio.NioServerSocketChannel; -import io.netty.handler.timeout.IdleStateHandler; -import io.netty.handler.traffic.ChannelTrafficShapingHandler; -import io.netty.handler.traffic.GlobalTrafficShapingHandler; - import org.apache.eventmesh.api.registry.dto.EventMeshRegisterInfo; import org.apache.eventmesh.api.registry.dto.EventMeshUnRegisterInfo; -import org.apache.eventmesh.common.exception.EventMeshException; -import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.ThreadPoolFactory; +import org.apache.eventmesh.common.exception.EventMeshException; import org.apache.eventmesh.common.protocol.tcp.codec.Codec; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.runtime.admin.controller.ClientManageController; import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration; import org.apache.eventmesh.runtime.constants.EventMeshConstants; @@ -49,6 +37,26 @@ import org.apache.eventmesh.runtime.metrics.tcp.EventMeshTcpMonitor; import org.apache.eventmesh.runtime.registry.Registry; import org.apache.eventmesh.runtime.util.EventMeshThreadFactoryImpl; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import io.netty.bootstrap.ServerBootstrap; +import io.netty.buffer.PooledByteBufAllocator; +import io.netty.channel.AdaptiveRecvByteBufAllocator; +import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.socket.nio.NioServerSocketChannel; +import io.netty.handler.timeout.IdleStateHandler; +import io.netty.handler.traffic.ChannelTrafficShapingHandler; +import io.netty.handler.traffic.GlobalTrafficShapingHandler; + +import com.google.common.util.concurrent.RateLimiter; + public class EventMeshTCPServer extends AbstractRemotingServer { private ClientSessionGroupMapping clientSessionGroupMapping; @@ -130,6 +138,27 @@ public class EventMeshTCPServer extends AbstractRemotingServer { private void startServer() throws Exception { Runnable r = () -> { ServerBootstrap bootstrap = new ServerBootstrap(); + ChannelInitializer channelInitializer = new ChannelInitializer() { + @Override + public void initChannel(Channel ch) throws Exception { + ch.pipeline() + .addLast(new Codec.Encoder()) + .addLast(new Codec.Decoder()) + .addLast("global-traffic-shaping", globalTrafficShapingHandler) + .addLast("channel-traffic-shaping", newCTSHandler()) + .addLast(new EventMeshTcpConnectionHandler(EventMeshTCPServer.this)) + .addLast( + workerGroup, + new IdleStateHandler( + eventMeshTCPConfiguration.eventMeshTcpIdleReadSeconds, + eventMeshTCPConfiguration.eventMeshTcpIdleWriteSeconds, + eventMeshTCPConfiguration.eventMeshTcpIdleAllSeconds), + new EventMeshTcpMessageDispatcher(EventMeshTCPServer.this), + new EventMeshTcpExceptionHandler(EventMeshTCPServer.this) + ); + } + }; + bootstrap.group(bossGroup, ioGroup) .channel(NioServerSocketChannel.class) .option(ChannelOption.SO_BACKLOG, 128) @@ -144,22 +173,7 @@ public class EventMeshTCPServer extends AbstractRemotingServer { .option(ChannelOption.RCVBUF_ALLOCATOR, new AdaptiveRecvByteBufAllocator(2048, 4096, 65536)) .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) - .childHandler(new ChannelInitializer() { - @Override - public void initChannel(Channel ch) throws Exception { - ch.pipeline().addLast(new Codec.Encoder()) - .addLast(new Codec.Decoder()) - .addLast("global-traffic-shaping", globalTrafficShapingHandler) - .addLast("channel-traffic-shaping", newCTSHandler()) - .addLast(new EventMeshTcpConnectionHandler(EventMeshTCPServer.this)) - .addLast(workerGroup, new IdleStateHandler(eventMeshTCPConfiguration.eventMeshTcpIdleReadSeconds, - eventMeshTCPConfiguration.eventMeshTcpIdleWriteSeconds, - eventMeshTCPConfiguration.eventMeshTcpIdleAllSeconds), - new EventMeshTcpMessageDispatcher(EventMeshTCPServer.this), - new EventMeshTcpExceptionHandler(EventMeshTCPServer.this) - ); - } - }); + .childHandler(channelInitializer); try { int port = eventMeshTCPConfiguration.eventMeshTcpServerPort; ChannelFuture f = bootstrap.bind(port).sync(); @@ -199,8 +213,9 @@ public class EventMeshTCPServer extends AbstractRemotingServer { eventMeshTcpMonitor = new EventMeshTcpMonitor(this); eventMeshTcpMonitor.init(); - if(eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { - eventMeshRebalanceService = new EventMeshRebalanceService(this, new EventmeshRebalanceImpl(this)); + if (eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { + eventMeshRebalanceService = new EventMeshRebalanceService(this, + new EventmeshRebalanceImpl(this)); eventMeshRebalanceService.init(); } logger.info("--------------------------EventMeshTCPServer Inited"); @@ -216,7 +231,7 @@ public class EventMeshTCPServer extends AbstractRemotingServer { eventMeshTcpMonitor.start(); - if(eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { + if (eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { eventMeshRebalanceService.start(); selfRegisterToRegistry(); } @@ -233,7 +248,7 @@ public class EventMeshTCPServer extends AbstractRemotingServer { logger.info("shutdown bossGroup, no client is allowed to connect access server"); } - if(eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { + if (eventMeshTCPConfiguration.eventMeshServerRegistryEnable) { eventMeshRebalanceService.shutdown(); selfUnRegisterToRegistry(); @@ -272,21 +287,25 @@ public class EventMeshTCPServer extends AbstractRemotingServer { throw new EventMeshException("eventMesh fail to register"); } - tcpRegisterTask = scheduler.scheduleAtFixedRate(() -> { - try { - boolean heartbeatResult = registerToRegistry(); - if (!heartbeatResult) { - logger.error("selfRegisterToRegistry fail"); - } - } catch (Exception ex) { - logger.error("selfRegisterToRegistry fail", ex); - } - }, eventMeshTCPConfiguration.eventMeshRegisterIntervalInMills, eventMeshTCPConfiguration.eventMeshRegisterIntervalInMills, TimeUnit.MILLISECONDS); + tcpRegisterTask = scheduler.scheduleAtFixedRate( + () -> { + try { + boolean heartbeatResult = registerToRegistry(); + if (!heartbeatResult) { + logger.error("selfRegisterToRegistry fail"); + } + } catch (Exception ex) { + logger.error("selfRegisterToRegistry fail", ex); + } + }, + eventMeshTCPConfiguration.eventMeshRegisterIntervalInMills, + eventMeshTCPConfiguration.eventMeshRegisterIntervalInMills, + TimeUnit.MILLISECONDS); } public boolean registerToRegistry() { boolean registerResult = false; - try{ + try { String endPoints = IPUtils.getLocalAddress() + EventMeshConstants.IP_PORT_SEPARATOR + eventMeshTCPConfiguration.eventMeshTcpServerPort; EventMeshRegisterInfo self = new EventMeshRegisterInfo(); @@ -295,7 +314,7 @@ public class EventMeshTCPServer extends AbstractRemotingServer { self.setEndPoint(endPoints); self.setEventMeshInstanceNumMap(clientSessionGroupMapping.prepareProxyClientDistributionData()); registerResult = registry.register(self); - }catch (Exception e){ + } catch (Exception e) { logger.warn("eventMesh register to registry failed", e); } @@ -318,11 +337,20 @@ public class EventMeshTCPServer extends AbstractRemotingServer { private void initThreadPool() throws Exception { super.init("eventMesh-tcp"); - scheduler = ThreadPoolFactory.createScheduledExecutor(eventMeshTCPConfiguration.eventMeshTcpGlobalScheduler, new EventMeshThreadFactoryImpl("eventMesh-tcp-scheduler", true)); + scheduler = ThreadPoolFactory.createScheduledExecutor(eventMeshTCPConfiguration.eventMeshTcpGlobalScheduler, + new EventMeshThreadFactoryImpl("eventMesh-tcp-scheduler", true)); - taskHandleExecutorService = ThreadPoolFactory.createThreadPoolExecutor(eventMeshTCPConfiguration.eventMeshTcpTaskHandleExecutorPoolSize, eventMeshTCPConfiguration.eventMeshTcpTaskHandleExecutorPoolSize, new LinkedBlockingQueue(10000), new EventMeshThreadFactoryImpl("eventMesh-tcp-task-handle", true)); + taskHandleExecutorService = ThreadPoolFactory.createThreadPoolExecutor( + eventMeshTCPConfiguration.eventMeshTcpTaskHandleExecutorPoolSize, + eventMeshTCPConfiguration.eventMeshTcpTaskHandleExecutorPoolSize, + new LinkedBlockingQueue(10000), + new EventMeshThreadFactoryImpl("eventMesh-tcp-task-handle", true)); - broadcastMsgDownstreamExecutorService = ThreadPoolFactory.createThreadPoolExecutor(eventMeshTCPConfiguration.eventMeshTcpMsgDownStreamExecutorPoolSize, eventMeshTCPConfiguration.eventMeshTcpMsgDownStreamExecutorPoolSize, new LinkedBlockingQueue(10000), new EventMeshThreadFactoryImpl("eventMesh-tcp-msg-downstream", true)); + broadcastMsgDownstreamExecutorService = ThreadPoolFactory.createThreadPoolExecutor( + eventMeshTCPConfiguration.eventMeshTcpMsgDownStreamExecutorPoolSize, + eventMeshTCPConfiguration.eventMeshTcpMsgDownStreamExecutorPoolSize, + new LinkedBlockingQueue(10000), + new EventMeshThreadFactoryImpl("eventMesh-tcp-msg-downstream", true)); } private void shutdownThreadPool() { @@ -331,7 +359,8 @@ public class EventMeshTCPServer extends AbstractRemotingServer { } private GlobalTrafficShapingHandler newGTSHandler() { - GlobalTrafficShapingHandler handler = new GlobalTrafficShapingHandler(scheduler, 0, eventMeshTCPConfiguration.getGtc().getReadLimit()) { + GlobalTrafficShapingHandler handler = new GlobalTrafficShapingHandler(scheduler, 0, + eventMeshTCPConfiguration.getGtc().getReadLimit()) { @Override protected long calculateSize(Object msg) { return 1; @@ -342,7 +371,8 @@ public class EventMeshTCPServer extends AbstractRemotingServer { } private ChannelTrafficShapingHandler newCTSHandler() { - ChannelTrafficShapingHandler handler = new ChannelTrafficShapingHandler(0, eventMeshTCPConfiguration.getCtc().getReadLimit()) { + ChannelTrafficShapingHandler handler = new ChannelTrafficShapingHandler(0, + eventMeshTCPConfiguration.getCtc().getReadLimit()) { @Override protected long calculateSize(Object msg) { return 1; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/SSLContextFactory.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/SSLContextFactory.java index 529ee37ec..bae2d55cb 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/SSLContextFactory.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/SSLContextFactory.java @@ -16,18 +16,22 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.eventmesh.runtime.boot; +import org.apache.eventmesh.runtime.constants.EventMeshConstants; + +import org.apache.commons.lang3.StringUtils; + import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.security.KeyStore; + import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; -import org.apache.commons.lang3.StringUtils; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java index 05511b036..8e37a4528 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java @@ -17,11 +17,13 @@ package org.apache.eventmesh.runtime.configuration; -import com.google.common.base.Preconditions; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.config.CommonConfiguration; import org.apache.eventmesh.common.config.ConfigurationWrapper; +import org.apache.commons.lang3.StringUtils; + +import com.google.common.base.Preconditions; + public class EventMeshHTTPConfiguration extends CommonConfiguration { public int httpServerPort = 10105; @@ -78,7 +80,8 @@ public class EventMeshHTTPConfiguration extends CommonConfiguration { if (configurationWrapper != null) { String httpServerPortStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_SERVER_HTTP_PORT); - Preconditions.checkState(StringUtils.isNotEmpty(httpServerPortStr) && StringUtils.isNumeric(httpServerPortStr), String.format("%s error", ConfKeys.KEYS_EVENTMESH_SERVER_HTTP_PORT)); + Preconditions.checkState(StringUtils.isNotEmpty(httpServerPortStr) + && StringUtils.isNumeric(httpServerPortStr), String.format("%s error", ConfKeys.KEYS_EVENTMESH_SERVER_HTTP_PORT)); httpServerPort = Integer.valueOf(StringUtils.deleteWhitespace(httpServerPortStr)); String eventMeshServerBatchMsgThreadNumStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_BATCHMSG_THREAD_NUM); @@ -87,7 +90,8 @@ public class EventMeshHTTPConfiguration extends CommonConfiguration { } String eventMeshServerBatchMsgReqNumPerSecondStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_BATCHMSG_REQ_NUM_PER_SECOND); - if (StringUtils.isNotEmpty(eventMeshServerBatchMsgReqNumPerSecondStr) && StringUtils.isNumeric(eventMeshServerBatchMsgReqNumPerSecondStr)) { + if (StringUtils.isNotEmpty(eventMeshServerBatchMsgReqNumPerSecondStr) + && StringUtils.isNumeric(eventMeshServerBatchMsgReqNumPerSecondStr)) { eventMeshBatchMsgRequestNumPerSecond = Integer.valueOf(eventMeshServerBatchMsgReqNumPerSecondStr); } @@ -96,83 +100,115 @@ public class EventMeshHTTPConfiguration extends CommonConfiguration { eventMeshServerBatchMsgBatchEnabled = Boolean.valueOf(eventMeshServerBatchMsgBatchEnableStr); } - String eventMeshServerAsyncAccumulationThresholdStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ASYNC_ACCUMULATION_THRESHOLD); - if (StringUtils.isNotEmpty(eventMeshServerAsyncAccumulationThresholdStr) && StringUtils.isNumeric(eventMeshServerAsyncAccumulationThresholdStr)) { - eventMeshServerAsyncAccumulationThreshold = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerAsyncAccumulationThresholdStr)); + String eventMeshServerAsyncAccumulationThresholdStr = + configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ASYNC_ACCUMULATION_THRESHOLD); + if (StringUtils.isNotEmpty(eventMeshServerAsyncAccumulationThresholdStr) + && StringUtils.isNumeric(eventMeshServerAsyncAccumulationThresholdStr)) { + eventMeshServerAsyncAccumulationThreshold = + Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerAsyncAccumulationThresholdStr)); } - String eventMeshServerSendMsgThreadNumStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_SENDMSG_THREAD_NUM); - if (StringUtils.isNotEmpty(eventMeshServerSendMsgThreadNumStr) && StringUtils.isNumeric(eventMeshServerSendMsgThreadNumStr)) { + String eventMeshServerSendMsgThreadNumStr = + configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_SENDMSG_THREAD_NUM); + if (StringUtils.isNotEmpty(eventMeshServerSendMsgThreadNumStr) + && StringUtils.isNumeric(eventMeshServerSendMsgThreadNumStr)) { eventMeshServerSendMsgThreadNum = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerSendMsgThreadNumStr)); } - String eventMeshServerReplyMsgThreadNumStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_REPLYMSG_THREAD_NUM); - if (StringUtils.isNotEmpty(eventMeshServerReplyMsgThreadNumStr) && StringUtils.isNumeric(eventMeshServerReplyMsgThreadNumStr)) { + String eventMeshServerReplyMsgThreadNumStr = + configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_REPLYMSG_THREAD_NUM); + if (StringUtils.isNotEmpty(eventMeshServerReplyMsgThreadNumStr) + && StringUtils.isNumeric(eventMeshServerReplyMsgThreadNumStr)) { eventMeshServerReplyMsgThreadNum = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerReplyMsgThreadNumStr)); } - String eventMeshServerPushMsgThreadNumStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_PUSHMSG_THREAD_NUM); - if (StringUtils.isNotEmpty(eventMeshServerPushMsgThreadNumStr) && StringUtils.isNumeric(eventMeshServerPushMsgThreadNumStr)) { + String eventMeshServerPushMsgThreadNumStr = + configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_PUSHMSG_THREAD_NUM); + if (StringUtils.isNotEmpty(eventMeshServerPushMsgThreadNumStr) + && StringUtils.isNumeric(eventMeshServerPushMsgThreadNumStr)) { eventMeshServerPushMsgThreadNum = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerPushMsgThreadNumStr)); } - String eventMeshServerRegistryThreadNumStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_REGISTRY_THREAD_NUM); - if (StringUtils.isNotEmpty(eventMeshServerRegistryThreadNumStr) && StringUtils.isNumeric(eventMeshServerRegistryThreadNumStr)) { + String eventMeshServerRegistryThreadNumStr = + configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_REGISTRY_THREAD_NUM); + if (StringUtils.isNotEmpty(eventMeshServerRegistryThreadNumStr) + && StringUtils.isNumeric(eventMeshServerRegistryThreadNumStr)) { eventMeshServerRegistryThreadNum = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerRegistryThreadNumStr)); } - String eventMeshServerClientManageThreadNumStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_CLIENTMANAGE_THREAD_NUM); - if (StringUtils.isNotEmpty(eventMeshServerClientManageThreadNumStr) && StringUtils.isNumeric(eventMeshServerClientManageThreadNumStr)) { + String eventMeshServerClientManageThreadNumStr = + configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_CLIENTMANAGE_THREAD_NUM); + if (StringUtils.isNotEmpty(eventMeshServerClientManageThreadNumStr) + && StringUtils.isNumeric(eventMeshServerClientManageThreadNumStr)) { eventMeshServerClientManageThreadNum = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerClientManageThreadNumStr)); } - String eventMeshServerPullRegistryIntervalStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_PULL_REGISTRY_INTERVAL); - if (StringUtils.isNotEmpty(eventMeshServerPullRegistryIntervalStr) && StringUtils.isNumeric(eventMeshServerPullRegistryIntervalStr)) { + String eventMeshServerPullRegistryIntervalStr = + configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_PULL_REGISTRY_INTERVAL); + if (StringUtils.isNotEmpty(eventMeshServerPullRegistryIntervalStr) + && StringUtils.isNumeric(eventMeshServerPullRegistryIntervalStr)) { eventMeshServerPullRegistryInterval = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerPullRegistryIntervalStr)); } - String eventMeshServerAdminThreadNumStr = configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ADMIN_THREAD_NUM); - if (StringUtils.isNotEmpty(eventMeshServerAdminThreadNumStr) && StringUtils.isNumeric(eventMeshServerAdminThreadNumStr)) { + String eventMeshServerAdminThreadNumStr = + configurationWrapper.getProp(ConfKeys.KEYS_EVENTMESH_ADMIN_THREAD_NUM); + if (StringUtils.isNotEmpty(eventMeshServerAdminThreadNumStr) + && StringUtils.isNumeric(eventMeshServerAdminThreadNumStr)) { eventMeshServerAdminThreadNum = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerAdminThreadNumStr)); } - String eventMeshServerRetryBlockQSizeStr = configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_RETRY_BLOCKQ_SIZE); - if (StringUtils.isNotEmpty(eventMeshServerRetryBlockQSizeStr) && StringUtils.isNumeric(eventMeshServerRetryBlockQSizeStr)) { + String eventMeshServerRetryBlockQSizeStr = + configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_RETRY_BLOCKQ_SIZE); + if (StringUtils.isNotEmpty(eventMeshServerRetryBlockQSizeStr) + && StringUtils.isNumeric(eventMeshServerRetryBlockQSizeStr)) { eventMeshServerRetryBlockQSize = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerRetryBlockQSizeStr)); } - String eventMeshServerBatchBlockQSizeStr = configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_BATCHMSG_BLOCKQ_SIZE); - if (StringUtils.isNotEmpty(eventMeshServerBatchBlockQSizeStr) && StringUtils.isNumeric(eventMeshServerBatchBlockQSizeStr)) { + String eventMeshServerBatchBlockQSizeStr = + configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_BATCHMSG_BLOCKQ_SIZE); + if (StringUtils.isNotEmpty(eventMeshServerBatchBlockQSizeStr) + && StringUtils.isNumeric(eventMeshServerBatchBlockQSizeStr)) { eventMeshServerBatchBlockQSize = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerBatchBlockQSizeStr)); } - String eventMeshServerSendMsgBlockQSizeStr = configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_SENDMSG_BLOCKQ_SIZE); - if (StringUtils.isNotEmpty(eventMeshServerSendMsgBlockQSizeStr) && StringUtils.isNumeric(eventMeshServerSendMsgBlockQSizeStr)) { + String eventMeshServerSendMsgBlockQSizeStr = + configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_SENDMSG_BLOCKQ_SIZE); + if (StringUtils.isNotEmpty(eventMeshServerSendMsgBlockQSizeStr) + && StringUtils.isNumeric(eventMeshServerSendMsgBlockQSizeStr)) { eventMeshServerSendMsgBlockQSize = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerSendMsgBlockQSizeStr)); } - String eventMeshServerPushMsgBlockQSizeStr = configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_PUSHMSG_BLOCKQ_SIZE); - if (StringUtils.isNotEmpty(eventMeshServerPushMsgBlockQSizeStr) && StringUtils.isNumeric(eventMeshServerPushMsgBlockQSizeStr)) { + String eventMeshServerPushMsgBlockQSizeStr = + configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_PUSHMSG_BLOCKQ_SIZE); + if (StringUtils.isNotEmpty(eventMeshServerPushMsgBlockQSizeStr) + && StringUtils.isNumeric(eventMeshServerPushMsgBlockQSizeStr)) { eventMeshServerPushMsgBlockQSize = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerPushMsgBlockQSizeStr)); } - String eventMeshServerClientManageBlockQSizeStr = configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_CLIENTM_BLOCKQ_SIZE); - if (StringUtils.isNotEmpty(eventMeshServerClientManageBlockQSizeStr) && StringUtils.isNumeric(eventMeshServerClientManageBlockQSizeStr)) { + String eventMeshServerClientManageBlockQSizeStr = + configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_CLIENTM_BLOCKQ_SIZE); + if (StringUtils.isNotEmpty(eventMeshServerClientManageBlockQSizeStr) + && StringUtils.isNumeric(eventMeshServerClientManageBlockQSizeStr)) { eventMeshServerClientManageBlockQSize = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerClientManageBlockQSizeStr)); } - String eventMeshServerBusyCheckIntervalStr = configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_BUSY_CHECK_INTERVAL); - if (StringUtils.isNotEmpty(eventMeshServerBusyCheckIntervalStr) && StringUtils.isNumeric(eventMeshServerBusyCheckIntervalStr)) { + String eventMeshServerBusyCheckIntervalStr = + configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_BUSY_CHECK_INTERVAL); + if (StringUtils.isNotEmpty(eventMeshServerBusyCheckIntervalStr) + && StringUtils.isNumeric(eventMeshServerBusyCheckIntervalStr)) { eventMeshServerBusyCheckInterval = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerBusyCheckIntervalStr)); } - String eventMeshServerConsumerEnabledStr = configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_CONSUMER_ENABLED); + String eventMeshServerConsumerEnabledStr = + configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_CONSUMER_ENABLED); if (StringUtils.isNotEmpty(eventMeshServerConsumerEnabledStr)) { eventMeshServerConsumerEnabled = Boolean.valueOf(StringUtils.deleteWhitespace(eventMeshServerConsumerEnabledStr)); } - String eventMeshServerRetryThreadNumStr = configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_RETRY_THREAD_NUM); - if (StringUtils.isNotEmpty(eventMeshServerRetryThreadNumStr) && StringUtils.isNumeric(eventMeshServerRetryThreadNumStr)) { + String eventMeshServerRetryThreadNumStr = + configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_RETRY_THREAD_NUM); + if (StringUtils.isNotEmpty(eventMeshServerRetryThreadNumStr) + && StringUtils.isNumeric(eventMeshServerRetryThreadNumStr)) { eventMeshServerRetryThreadNum = Integer.valueOf(StringUtils.deleteWhitespace(eventMeshServerRetryThreadNumStr)); } @@ -181,8 +217,10 @@ public class EventMeshHTTPConfiguration extends CommonConfiguration { eventMeshServerUseTls = Boolean.valueOf(StringUtils.deleteWhitespace(eventMeshServerUseTlsStr)); } - String eventMeshHttpMsgReqNumPerSecondStr = configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_SERVER_MSG_REQ_NUM_PER_SECOND); - if (StringUtils.isNotEmpty(eventMeshHttpMsgReqNumPerSecondStr) && StringUtils.isNumeric(eventMeshHttpMsgReqNumPerSecondStr)) { + String eventMeshHttpMsgReqNumPerSecondStr = + configurationWrapper.getProp(ConfKeys.KEY_EVENTMESH_SERVER_MSG_REQ_NUM_PER_SECOND); + if (StringUtils.isNotEmpty(eventMeshHttpMsgReqNumPerSecondStr) + && StringUtils.isNumeric(eventMeshHttpMsgReqNumPerSecondStr)) { eventMeshHttpMsgReqNumPerSecond = Integer.valueOf(eventMeshHttpMsgReqNumPerSecondStr); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java index fee44b465..0ab59cb91 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java @@ -88,48 +88,72 @@ public class EventMeshTCPConfiguration extends CommonConfiguration { super.init(); eventMeshTcpServerPort = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_TCP_PORT, eventMeshTcpServerPort); - eventMeshTcpIdleReadSeconds = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_READER_IDLE_SECONDS, eventMeshTcpIdleReadSeconds); + eventMeshTcpIdleReadSeconds = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_READER_IDLE_SECONDS, + eventMeshTcpIdleReadSeconds); - eventMeshTcpIdleWriteSeconds = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_WRITER_IDLE_SECONDS, eventMeshTcpIdleWriteSeconds); + eventMeshTcpIdleWriteSeconds = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_WRITER_IDLE_SECONDS, + eventMeshTcpIdleWriteSeconds); - eventMeshTcpIdleAllSeconds = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_ALL_IDLE_SECONDS, eventMeshTcpIdleAllSeconds); + eventMeshTcpIdleAllSeconds = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_ALL_IDLE_SECONDS, + eventMeshTcpIdleAllSeconds); - eventMeshTcpMsgReqnumPerSecond = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_MSG_REQ_NUM_PER_SECONDS, eventMeshTcpMsgReqnumPerSecond); + eventMeshTcpMsgReqnumPerSecond = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_MSG_REQ_NUM_PER_SECONDS, + eventMeshTcpMsgReqnumPerSecond); - eventMeshTcpClientMaxNum = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_CLIENT_MAX_NUM, eventMeshTcpClientMaxNum); + eventMeshTcpClientMaxNum = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_CLIENT_MAX_NUM, + eventMeshTcpClientMaxNum); - eventMeshTcpServerEnabled = configurationWrapper.getBoolProp(ConfKeys.KEYS_EVENTMESH_TCP_SERVER_ENABLED, eventMeshTcpServerEnabled); + eventMeshTcpServerEnabled = configurationWrapper.getBoolProp(ConfKeys.KEYS_EVENTMESH_TCP_SERVER_ENABLED, + eventMeshTcpServerEnabled); - eventMeshTcpGlobalScheduler = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_GLOBAL_SCHEDULER, eventMeshTcpGlobalScheduler); + eventMeshTcpGlobalScheduler = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_GLOBAL_SCHEDULER, + eventMeshTcpGlobalScheduler); - eventMeshTcpTaskHandleExecutorPoolSize = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_TCP_TASK_HANDLE_POOL_SIZE, eventMeshTcpTaskHandleExecutorPoolSize); + eventMeshTcpTaskHandleExecutorPoolSize = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_TCP_TASK_HANDLE_POOL_SIZE, eventMeshTcpTaskHandleExecutorPoolSize); - eventMeshTcpMsgDownStreamExecutorPoolSize = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_TCP_MSG_DOWNSTREAM_POOL_SIZE, eventMeshTcpMsgDownStreamExecutorPoolSize); + eventMeshTcpMsgDownStreamExecutorPoolSize = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_TCP_MSG_DOWNSTREAM_POOL_SIZE, eventMeshTcpMsgDownStreamExecutorPoolSize); - eventMeshTcpSessionExpiredInMills = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_SESSION_EXPIRED_TIME, eventMeshTcpSessionExpiredInMills); + eventMeshTcpSessionExpiredInMills = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_SESSION_EXPIRED_TIME, eventMeshTcpSessionExpiredInMills); - eventMeshTcpSessionUpstreamBufferSize = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_SESSION_UPSTREAM_BUFFER_SIZE, eventMeshTcpSessionUpstreamBufferSize); + eventMeshTcpSessionUpstreamBufferSize = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_SESSION_UPSTREAM_BUFFER_SIZE, eventMeshTcpSessionUpstreamBufferSize); //========================================eventMesh retry config=============================================// - eventMeshTcpMsgAsyncRetryTimes = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_ASYNC_PUSH_RETRY_TIMES, eventMeshTcpMsgAsyncRetryTimes); - eventMeshTcpMsgSyncRetryTimes = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_SYNC_PUSH_RETRY_TIMES, eventMeshTcpMsgSyncRetryTimes); + eventMeshTcpMsgAsyncRetryTimes = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_ASYNC_PUSH_RETRY_TIMES, eventMeshTcpMsgAsyncRetryTimes); - eventMeshTcpMsgRetryAsyncDelayInMills = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_ASYNC_PUSH_RETRY_DELAY, eventMeshTcpMsgRetryAsyncDelayInMills); - eventMeshTcpMsgRetrySyncDelayInMills = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_SYNC_PUSH_RETRY_DELAY, eventMeshTcpMsgRetrySyncDelayInMills); + eventMeshTcpMsgSyncRetryTimes = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_SYNC_PUSH_RETRY_TIMES, eventMeshTcpMsgSyncRetryTimes); - eventMeshTcpMsgRetryQueueSize = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_PUSH_RETRY_QUEUE_SIZE, eventMeshTcpMsgRetryQueueSize); + eventMeshTcpMsgRetryAsyncDelayInMills = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_ASYNC_PUSH_RETRY_DELAY, eventMeshTcpMsgRetryAsyncDelayInMills); - eventMeshTcpRebalanceIntervalInMills = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_TCP_REBALANCE_INTERVAL, eventMeshTcpRebalanceIntervalInMills); + eventMeshTcpMsgRetrySyncDelayInMills = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_SYNC_PUSH_RETRY_DELAY, eventMeshTcpMsgRetrySyncDelayInMills); - eventMeshServerAdminPort = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_ADMIN_HTTP_PORT, eventMeshServerAdminPort); + eventMeshTcpMsgRetryQueueSize = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_RETRY_PUSH_RETRY_QUEUE_SIZE, eventMeshTcpMsgRetryQueueSize); - eventMeshTcpSendBackEnabled = configurationWrapper.getBoolProp(ConfKeys.KEYS_EVENTMESH_TCP_SEND_BACK_ENABLED, eventMeshTcpSendBackEnabled); + eventMeshTcpRebalanceIntervalInMills = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_TCP_REBALANCE_INTERVAL, eventMeshTcpRebalanceIntervalInMills); - eventMeshTcpPushFailIsolateTimeInMills = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_PUSH_FAIL_ISOLATE_TIME, eventMeshTcpPushFailIsolateTimeInMills); + eventMeshServerAdminPort = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_ADMIN_HTTP_PORT, eventMeshServerAdminPort); - gracefulShutdownSleepIntervalInMills = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_GRACEFUL_SHUTDOWN_SLEEP_TIME, gracefulShutdownSleepIntervalInMills); + eventMeshTcpSendBackEnabled = configurationWrapper.getBoolProp( + ConfKeys.KEYS_EVENTMESH_TCP_SEND_BACK_ENABLED, eventMeshTcpSendBackEnabled); - sleepIntervalInRebalanceRedirectMills = configurationWrapper.getIntProp(ConfKeys.KEYS_EVENTMESH_SERVER_REBALANCE_REDIRECT_SLEEP_TIME, sleepIntervalInRebalanceRedirectMills); + eventMeshTcpPushFailIsolateTimeInMills = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_PUSH_FAIL_ISOLATE_TIME, eventMeshTcpPushFailIsolateTimeInMills); + + gracefulShutdownSleepIntervalInMills = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_GRACEFUL_SHUTDOWN_SLEEP_TIME, gracefulShutdownSleepIntervalInMills); + + sleepIntervalInRebalanceRedirectMills = configurationWrapper.getIntProp( + ConfKeys.KEYS_EVENTMESH_SERVER_REBALANCE_REDIRECT_SLEEP_TIME, sleepIntervalInRebalanceRedirectMills); } @@ -220,11 +244,16 @@ public class EventMeshTCPConfiguration extends CommonConfiguration { @Override public String toString() { - return "TrafficShapingConfig{" + - "writeLimit=" + writeLimit + - ", readLimit=" + readLimit + - ", checkInterval=" + checkInterval + - ", maxTime=" + maxTime + + return "TrafficShapingConfig{" + + + "writeLimit=" + writeLimit + + + ", readLimit=" + readLimit + + + ", checkInterval=" + checkInterval + + + ", maxTime=" + maxTime + + '}'; } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorResource.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorResource.java index 38cf8e99c..f47352eae 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorResource.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/connector/ConnectorResource.java @@ -14,10 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.connector; import org.apache.eventmesh.api.connector.ConnectorResourceService; import org.apache.eventmesh.spi.EventMeshExtensionFactory; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,7 +28,7 @@ public class ConnectorResource { private static final Logger logger = LoggerFactory.getLogger(ConnectorResource.class); private static ConnectorResourceService connectorResourceService; - public void init(String connectorResourcePluginType) throws Exception{ + public void init(String connectorResourcePluginType) throws Exception { connectorResourceService = EventMeshExtensionFactory.getExtension(ConnectorResourceService.class, connectorResourcePluginType); if (connectorResourceService == null) { logger.error("can't load the connectorResourceService plugin, please check."); @@ -35,7 +37,7 @@ public class ConnectorResource { connectorResourceService.init(); } - public void release()throws Exception{ + public void release() throws Exception { connectorResourceService.release(); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/constants/EventMeshConstants.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/constants/EventMeshConstants.java index bd702989f..3f8522593 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/constants/EventMeshConstants.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/constants/EventMeshConstants.java @@ -118,5 +118,4 @@ public class EventMeshConstants { public static final String STORE_TIME = "store" + Constants.MESSAGE_PROP_SEPARATOR + "time"; - } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ConsumerGroupConf.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ConsumerGroupConf.java index 9eda09656..436fadf77 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ConsumerGroupConf.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ConsumerGroupConf.java @@ -50,10 +50,16 @@ public class ConsumerGroupConf { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } ConsumerGroupConf that = (ConsumerGroupConf) o; - return consumerGroup.equals(that.consumerGroup) && + + return consumerGroup.equals(that.consumerGroup) + && Objects.equals(consumerGroupTopicConf, that.consumerGroupTopicConf); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ConsumerGroupTopicConf.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ConsumerGroupTopicConf.java index a894b2e85..670e9cac3 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ConsumerGroupTopicConf.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ConsumerGroupTopicConf.java @@ -17,18 +17,19 @@ package org.apache.eventmesh.runtime.core.consumergroup; +import org.apache.eventmesh.common.protocol.SubscriptionItem; + import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -import org.apache.eventmesh.common.protocol.SubscriptionItem; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; + public class ConsumerGroupTopicConf { public static Logger logger = LoggerFactory.getLogger(ConsumerGroupTopicConf.class); @@ -44,8 +45,9 @@ public class ConsumerGroupTopicConf { /** * PUSH URL + * Map key:IDC value:URL list in IDC */ - private Map /** URL list in IDC */> idcUrls = Maps.newConcurrentMap(); + private Map> idcUrls = Maps.newConcurrentMap(); /** * ALL IDC URLs @@ -54,12 +56,19 @@ public class ConsumerGroupTopicConf { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } ConsumerGroupTopicConf that = (ConsumerGroupTopicConf) o; - return consumerGroup.equals(that.consumerGroup) && - Objects.equals(topic, that.topic) && - Objects.equals(subscriptionItem, that.subscriptionItem) && + return consumerGroup.equals(that.consumerGroup) + && + Objects.equals(topic, that.topic) + && + Objects.equals(subscriptionItem, that.subscriptionItem) + && Objects.equals(idcUrls, that.idcUrls); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ProducerGroupConf.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ProducerGroupConf.java index 8518850ca..970de8c68 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ProducerGroupConf.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/consumergroup/ProducerGroupConf.java @@ -40,8 +40,12 @@ public class ProducerGroupConf { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } ProducerGroupConf that = (ProducerGroupConf) o; return groupName == that.groupName; } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQConsumerWrapper.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQConsumerWrapper.java index 5d03e81a4..edce54a88 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQConsumerWrapper.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQConsumerWrapper.java @@ -17,20 +17,22 @@ package org.apache.eventmesh.runtime.core.plugin; -import java.util.List; -import java.util.Properties; - -import io.cloudevents.CloudEvent; import org.apache.eventmesh.api.AbstractContext; import org.apache.eventmesh.api.EventListener; import org.apache.eventmesh.api.consumer.Consumer; import org.apache.eventmesh.api.factory.ConnectorPluginFactory; + +import java.util.List; +import java.util.Properties; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cloudevents.CloudEvent; + public class MQConsumerWrapper extends MQWrapper { - public Logger logger = LoggerFactory.getLogger(this.getClass()); + public final Logger logger = LoggerFactory.getLogger(this.getClass()); protected Consumer meshMQPushConsumer; @@ -67,9 +69,9 @@ public class MQConsumerWrapper extends MQWrapper { started.compareAndSet(false, true); } -// public void registerMessageListener(MessageListenerConcurrently messageListenerConcurrently) { -// meshMQPushConsumer.registerMessageListener(messageListenerConcurrently); -// } + //public void registerMessageListener(MessageListenerConcurrently messageListenerConcurrently) { + // meshMQPushConsumer.registerMessageListener(messageListenerConcurrently); + //} public void updateOffset(List events, AbstractContext eventMeshConsumeConcurrentlyContext) { meshMQPushConsumer.updateOffset(events, eventMeshConsumeConcurrentlyContext); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQProducerWrapper.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQProducerWrapper.java index f78107112..73411a6fc 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQProducerWrapper.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQProducerWrapper.java @@ -17,12 +17,13 @@ package org.apache.eventmesh.runtime.core.plugin; -import java.util.Properties; - import org.apache.eventmesh.api.RequestReplyCallback; import org.apache.eventmesh.api.SendCallback; import org.apache.eventmesh.api.factory.ConnectorPluginFactory; import org.apache.eventmesh.api.producer.Producer; + +import java.util.Properties; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQWrapper.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQWrapper.java index f8ae78c11..c77d18e78 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQWrapper.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/plugin/MQWrapper.java @@ -16,12 +16,14 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.eventmesh.runtime.core.plugin; -import java.util.concurrent.atomic.AtomicBoolean; +import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.commons.lang3.StringUtils; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; + +import java.util.concurrent.atomic.AtomicBoolean; public abstract class MQWrapper { @@ -31,7 +33,8 @@ public abstract class MQWrapper { public static String CURRENT_EVENT_STORE = EVENT_STORE_DEFIBUS; - public static final String EVENT_STORE_CONF = System.getProperty(EventMeshConstants.EVENT_STORE_PROPERTIES, System.getenv(EventMeshConstants.EVENT_STORE_ENV)); + public static final String EVENT_STORE_CONF = System.getProperty(EventMeshConstants.EVENT_STORE_PROPERTIES, + System.getenv(EventMeshConstants.EVENT_STORE_ENV)); static { if (StringUtils.isNotBlank(EVENT_STORE_CONF)) { diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/async/CompleteHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/async/CompleteHandler.java index 6faa01f98..49eeaaf58 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/async/CompleteHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/async/CompleteHandler.java @@ -17,6 +17,11 @@ package org.apache.eventmesh.runtime.core.protocol.http.async; +/** + * CompleteHandler + * + * @param + */ public interface CompleteHandler { void onResponse(T t); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerGroupManager.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerGroupManager.java index 93377ac2e..7d4ddab9b 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerGroupManager.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerGroupManager.java @@ -17,15 +17,16 @@ package org.apache.eventmesh.runtime.core.protocol.http.consumer; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.atomic.AtomicBoolean; - -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.core.consumergroup.ConsumerGroupConf; import org.apache.eventmesh.runtime.core.consumergroup.ConsumerGroupTopicConf; +import org.apache.commons.lang3.StringUtils; + +import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicBoolean; + public class ConsumerGroupManager { protected AtomicBoolean started = new AtomicBoolean(Boolean.FALSE); @@ -86,9 +87,9 @@ public class ConsumerGroupManager { } public void unsubscribe(String consumerGroup) throws Exception { - if(StringUtils.equals(consumerGroupConfig.getConsumerGroup(), consumerGroup)){ + if (StringUtils.equals(consumerGroupConfig.getConsumerGroup(), consumerGroup)) { Set topics = consumerGroupConfig.getConsumerGroupTopicConf().keySet(); - for (String topic : topics){ + for (String topic : topics) { ConsumerGroupTopicConf consumerGroupTopicConf = consumerGroupConfig.getConsumerGroupTopicConf().get(topic); eventMeshConsumer.unsubscribe(topic, consumerGroupTopicConf.getSubscriptionItem().getMode()); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerManager.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerManager.java index 4c2366383..fc89fad6c 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerManager.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerManager.java @@ -53,14 +53,14 @@ public class ConsumerManager { * consumerGroup to ConsumerGroupManager. */ private ConcurrentHashMap consumerTable = - new ConcurrentHashMap<>(); + new ConcurrentHashMap<>(); private static final int DEFAULT_UPDATE_TIME = 3 * 30 * 1000; public Logger logger = LoggerFactory.getLogger(this.getClass()); private ScheduledExecutorService scheduledExecutorService = - Executors.newSingleThreadScheduledExecutor(); + Executors.newSingleThreadScheduledExecutor(); public ConsumerManager(EventMeshHTTPServer eventMeshHTTPServer) { this.eventMeshHTTPServer = eventMeshHTTPServer; @@ -79,7 +79,7 @@ public class ConsumerManager { logger.info("clientInfo check start....."); synchronized (eventMeshHTTPServer.localClientInfoMapping) { Map> clientInfoMap = - eventMeshHTTPServer.localClientInfoMapping; + eventMeshHTTPServer.localClientInfoMapping; if (clientInfoMap.size() > 0) { for (String key : clientInfoMap.keySet()) { String consumerGroup = key.split("@")[0]; @@ -91,10 +91,10 @@ public class ConsumerManager { Client client = clientIterator.next(); //The time difference is greater than 3 heartbeat cycles if (System.currentTimeMillis() - client.lastUpTime.getTime() - > DEFAULT_UPDATE_TIME) { + > DEFAULT_UPDATE_TIME) { logger.warn( - "client {} lastUpdate time {} over three heartbeat cycles", - JsonUtils.serialize(client), client.lastUpTime); + "client {} lastUpdate time {} over three heartbeat cycles", + JsonUtils.serialize(client), client.lastUpTime); clientIterator.remove(); isChange = true; } @@ -103,14 +103,14 @@ public class ConsumerManager { if (clientList.size() > 0) { //change url logger.info("consumerGroup {} client info changing", - consumerGroup); + consumerGroup); Map> idcUrls = new HashMap<>(); Set clientUrls = new HashSet<>(); for (Client client : clientList) { clientUrls.add(client.url); if (idcUrls.containsKey(client.idc)) { idcUrls.get(client.idc) - .add(StringUtils.deleteWhitespace(client.url)); + .add(StringUtils.deleteWhitespace(client.url)); } else { List urls = new ArrayList<>(); urls.add(client.url); @@ -119,18 +119,18 @@ public class ConsumerManager { } synchronized (eventMeshHTTPServer.localConsumerGroupMapping) { ConsumerGroupConf consumerGroupConf = - eventMeshHTTPServer.localConsumerGroupMapping - .get(consumerGroup); + eventMeshHTTPServer.localConsumerGroupMapping + .get(consumerGroup); Map map = - consumerGroupConf.getConsumerGroupTopicConf(); + consumerGroupConf.getConsumerGroupTopicConf(); for (String topicKey : map.keySet()) { if (StringUtils.equals(topic, topicKey)) { ConsumerGroupTopicConf latestTopicConf = - new ConsumerGroupTopicConf(); + new ConsumerGroupTopicConf(); latestTopicConf.setConsumerGroup(consumerGroup); latestTopicConf.setTopic(topic); latestTopicConf.setSubscriptionItem( - map.get(topicKey).getSubscriptionItem()); + map.get(topicKey).getSubscriptionItem()); latestTopicConf.setUrls(clientUrls); latestTopicConf.setIdcUrls(idcUrls); @@ -139,11 +139,11 @@ public class ConsumerManager { } } eventMeshHTTPServer.localConsumerGroupMapping - .put(consumerGroup, consumerGroupConf); + .put(consumerGroup, consumerGroupConf); logger.info( - "consumerGroup {} client info changed, " - + "consumerGroupConf {}", consumerGroup, - JsonUtils.serialize(consumerGroupConf)); + "consumerGroup {} client info changed, " + + "consumerGroupConf {}", consumerGroup, + JsonUtils.serialize(consumerGroupConf)); try { notifyConsumerManager(consumerGroup, consumerGroupConf); } catch (Exception e) { @@ -153,7 +153,7 @@ public class ConsumerManager { } else { logger.info("consumerGroup {} client info removed", - consumerGroup); + consumerGroup); //remove try { notifyConsumerManager(consumerGroup, null); @@ -162,7 +162,7 @@ public class ConsumerManager { } eventMeshHTTPServer.localConsumerGroupMapping.keySet() - .removeIf(s -> StringUtils.equals(consumerGroup, s)); + .removeIf(s -> StringUtils.equals(consumerGroup, s)); } } @@ -178,9 +178,9 @@ public class ConsumerManager { */ public void notifyConsumerManager(String consumerGroup, ConsumerGroupConf latestConsumerGroupConfig) - throws Exception { + throws Exception { ConsumerGroupManager cgm = - eventMeshHTTPServer.getConsumerManager().getConsumer(consumerGroup); + eventMeshHTTPServer.getConsumerManager().getConsumer(consumerGroup); if (latestConsumerGroupConfig == null) { ConsumerGroupStateEvent notification = new ConsumerGroupStateEvent(); notification.action = ConsumerGroupStateEvent.ConsumerGroupStateAction.DELETE; @@ -234,7 +234,7 @@ public class ConsumerManager { public synchronized void addConsumer(String consumerGroup, ConsumerGroupConf consumerGroupConfig) throws Exception { ConsumerGroupManager cgm = - new ConsumerGroupManager(eventMeshHTTPServer, consumerGroupConfig); + new ConsumerGroupManager(eventMeshHTTPServer, consumerGroupConfig); cgm.init(); cgm.start(); consumerTable.put(consumerGroup, cgm); @@ -245,7 +245,7 @@ public class ConsumerManager { */ public synchronized void restartConsumer(String consumerGroup, ConsumerGroupConf consumerGroupConfig) - throws Exception { + throws Exception { if (consumerTable.containsKey(consumerGroup)) { ConsumerGroupManager cgm = consumerTable.get(consumerGroup); cgm.refresh(consumerGroupConfig); @@ -270,7 +270,7 @@ public class ConsumerManager { if (consumerTable.containsKey(consumerGroup)) { ConsumerGroupManager cgm = consumerTable.remove(consumerGroup); logger.info("start unsubscribe topic with consumer group manager {}", - JsonUtils.serialize(cgm)); + JsonUtils.serialize(cgm)); cgm.unsubscribe(consumerGroup); cgm.shutdown(); } @@ -282,29 +282,29 @@ public class ConsumerManager { try { logger.info("onChange event:{}", event); if (event.action - == ConsumerGroupTopicConfChangeEvent.ConsumerGroupTopicConfChangeAction.NEW) { + == ConsumerGroupTopicConfChangeEvent.ConsumerGroupTopicConfChangeAction.NEW) { ConsumerGroupManager manager = getConsumer(event.consumerGroup); if (Objects.isNull(manager)) { return; } manager.getConsumerGroupConfig().getConsumerGroupTopicConf() - .put(event.topic, event.newTopicConf); + .put(event.topic, event.newTopicConf); return; } if (event.action - == ConsumerGroupTopicConfChangeEvent.ConsumerGroupTopicConfChangeAction.CHANGE) { + == ConsumerGroupTopicConfChangeEvent.ConsumerGroupTopicConfChangeAction.CHANGE) { ConsumerGroupManager manager = getConsumer(event.consumerGroup); if (Objects.isNull(manager)) { return; } manager.getConsumerGroupConfig().getConsumerGroupTopicConf() - .replace(event.topic, event.newTopicConf); + .replace(event.topic, event.newTopicConf); return; } if (event.action - == ConsumerGroupTopicConfChangeEvent.ConsumerGroupTopicConfChangeAction.DELETE) { + == ConsumerGroupTopicConfChangeEvent.ConsumerGroupTopicConfChangeAction.DELETE) { ConsumerGroupManager manager = getConsumer(event.consumerGroup); if (Objects.isNull(manager)) { return; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/EventMeshConsumer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/EventMeshConsumer.java index fd4a704f1..96398d46f 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/EventMeshConsumer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/EventMeshConsumer.java @@ -17,15 +17,13 @@ package org.apache.eventmesh.runtime.core.protocol.http.consumer; -import java.util.List; -import java.util.Properties; -import java.util.concurrent.atomic.AtomicBoolean; - -import io.cloudevents.CloudEvent; - -import io.cloudevents.core.builder.CloudEventBuilder; -import org.apache.commons.collections4.MapUtils; -import org.apache.eventmesh.api.*; +import org.apache.eventmesh.api.AbstractContext; +import org.apache.eventmesh.api.AsyncConsumeContext; +import org.apache.eventmesh.api.EventListener; +import org.apache.eventmesh.api.EventMeshAction; +import org.apache.eventmesh.api.EventMeshAsyncConsumeContext; +import org.apache.eventmesh.api.SendCallback; +import org.apache.eventmesh.api.SendResult; import org.apache.eventmesh.api.exception.OnExceptionContext; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.SubscriptionItem; @@ -40,9 +38,19 @@ import org.apache.eventmesh.runtime.core.protocol.http.producer.SendMessageConte import org.apache.eventmesh.runtime.core.protocol.http.push.HTTPMessageHandler; import org.apache.eventmesh.runtime.core.protocol.http.push.MessageHandler; import org.apache.eventmesh.runtime.util.EventMeshUtil; + +import org.apache.commons.collections4.MapUtils; + +import java.util.List; +import java.util.Properties; +import java.util.concurrent.atomic.AtomicBoolean; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cloudevents.CloudEvent; +import io.cloudevents.core.builder.CloudEventBuilder; + public class EventMeshConsumer { private EventMeshHTTPServer eventMeshHTTPServer; @@ -111,49 +119,56 @@ public class EventMeshConsumer { @Override public void consume(CloudEvent event, AsyncConsumeContext context) { String topic = event.getSubject(); -// String topic = message.getSystemProperties(Constants.PROPERTY_MESSAGE_DESTINATION); + //String topic = message.getSystemProperties(Constants.PROPERTY_MESSAGE_DESTINATION); String bizSeqNo = (String) event.getExtension(Constants.PROPERTY_MESSAGE_SEARCH_KEYS); String uniqueId = (String) event.getExtension(Constants.RMB_UNIQ_ID); event = CloudEventBuilder.from(event) .withExtension(EventMeshConstants.REQ_MQ2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())) .build(); -// message.getUserProperties().put(EventMeshConstants.REQ_MQ2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())); + //message.getUserProperties().put(EventMeshConstants.REQ_MQ2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())); if (messageLogger.isDebugEnabled()) { messageLogger.debug("message|mq2eventMesh|topic={}|event={}", topic, event); } else { messageLogger.info("message|mq2eventMesh|topic={}|bizSeqNo={}|uniqueId={}", topic, bizSeqNo, uniqueId); } - ConsumerGroupTopicConf currentTopicConfig = MapUtils.getObject(consumerGroupConf.getConsumerGroupTopicConf(), topic, null); - EventMeshAsyncConsumeContext eventMeshAsyncConsumeContext = (EventMeshAsyncConsumeContext)context; + ConsumerGroupTopicConf currentTopicConfig = MapUtils.getObject(consumerGroupConf.getConsumerGroupTopicConf(), + topic, null); + EventMeshAsyncConsumeContext eventMeshAsyncConsumeContext = (EventMeshAsyncConsumeContext) context; if (currentTopicConfig == null) { logger.error("no topicConfig found, consumerGroup:{} topic:{}", consumerGroupConf.getConsumerGroup(), topic); try { sendMessageBack(event, uniqueId, bizSeqNo); -// context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); -// context.ack(); + //context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, + // EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); + //context.ack(); eventMeshAsyncConsumeContext.commit(EventMeshAction.CommitMessage); return; } catch (Exception ex) { + //ignore } } - HandleMsgContext handleMsgContext = new HandleMsgContext(EventMeshUtil.buildPushMsgSeqNo(), consumerGroupConf.getConsumerGroup(), EventMeshConsumer.this, - topic, event, subscriptionItem, eventMeshAsyncConsumeContext.getAbstractContext(), consumerGroupConf, eventMeshHTTPServer, bizSeqNo, uniqueId, currentTopicConfig); + HandleMsgContext handleMsgContext = new HandleMsgContext(EventMeshUtil.buildPushMsgSeqNo(), + consumerGroupConf.getConsumerGroup(), EventMeshConsumer.this, + topic, event, subscriptionItem, eventMeshAsyncConsumeContext.getAbstractContext(), + consumerGroupConf, eventMeshHTTPServer, bizSeqNo, uniqueId, currentTopicConfig); if (httpMessageHandler.handle(handleMsgContext)) { -// context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, EventMeshConsumeConcurrentlyStatus.CONSUME_FINISH.name()); -// context.ack(); + //context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, + // EventMeshConsumeConcurrentlyStatus.CONSUME_FINISH.name()); + //context.ack(); eventMeshAsyncConsumeContext.commit(EventMeshAction.ManualAck); } else { try { sendMessageBack(event, uniqueId, bizSeqNo); } catch (Exception e) { - + //ignore } -// context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); -// context.ack(); + //context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, + // EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); + //context.ack(); eventMeshAsyncConsumeContext.commit(EventMeshAction.CommitMessage); } } @@ -165,7 +180,8 @@ public class EventMeshConsumer { public void consume(CloudEvent event, AsyncConsumeContext context) { event = CloudEventBuilder.from(event) - .withExtension(EventMeshConstants.REQ_MQ2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())) + .withExtension(EventMeshConstants.REQ_MQ2EVENTMESH_TIMESTAMP, + String.valueOf(System.currentTimeMillis())) .build(); String topic = event.getSubject(); @@ -175,38 +191,47 @@ public class EventMeshConsumer { if (messageLogger.isDebugEnabled()) { messageLogger.debug("message|mq2eventMesh|topic={}|msg={}", topic, event); } else { - messageLogger.info("message|mq2eventMesh|topic={}|bizSeqNo={}|uniqueId={}", topic, bizSeqNo, uniqueId); + messageLogger.info("message|mq2eventMesh|topic={}|bizSeqNo={}|uniqueId={}", topic, bizSeqNo, + uniqueId); } - ConsumerGroupTopicConf currentTopicConfig = MapUtils.getObject(consumerGroupConf.getConsumerGroupTopicConf(), topic, null); - EventMeshAsyncConsumeContext eventMeshAsyncConsumeContext = (EventMeshAsyncConsumeContext)context; + ConsumerGroupTopicConf currentTopicConfig = MapUtils.getObject( + consumerGroupConf.getConsumerGroupTopicConf(), topic, null); + EventMeshAsyncConsumeContext eventMeshAsyncConsumeContext = (EventMeshAsyncConsumeContext) context; if (currentTopicConfig == null) { - logger.error("no topicConfig found, consumerGroup:{} topic:{}", consumerGroupConf.getConsumerGroup(), topic); + logger.error("no topicConfig found, consumerGroup:{} topic:{}", + consumerGroupConf.getConsumerGroup(), topic); try { sendMessageBack(event, uniqueId, bizSeqNo); -// context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); -// context.ack(); + //context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, + // EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); + //context.ack(); eventMeshAsyncConsumeContext.commit(EventMeshAction.CommitMessage); return; } catch (Exception ex) { + //ignore } } - HandleMsgContext handleMsgContext = new HandleMsgContext(EventMeshUtil.buildPushMsgSeqNo(), consumerGroupConf.getConsumerGroup(), EventMeshConsumer.this, - topic, event, subscriptionItem, eventMeshAsyncConsumeContext.getAbstractContext(), consumerGroupConf, eventMeshHTTPServer, bizSeqNo, uniqueId, currentTopicConfig); + HandleMsgContext handleMsgContext = new HandleMsgContext(EventMeshUtil.buildPushMsgSeqNo(), + consumerGroupConf.getConsumerGroup(), EventMeshConsumer.this, + topic, event, subscriptionItem, eventMeshAsyncConsumeContext.getAbstractContext(), + consumerGroupConf, eventMeshHTTPServer, bizSeqNo, uniqueId, currentTopicConfig); if (httpMessageHandler.handle(handleMsgContext)) { -// context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, EventMeshConsumeConcurrentlyStatus.CONSUME_FINISH.name()); -// context.ack(); + //context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, + // EventMeshConsumeConcurrentlyStatus.CONSUME_FINISH.name()); + //context.ack(); eventMeshAsyncConsumeContext.commit(EventMeshAction.ManualAck); } else { try { sendMessageBack(event, uniqueId, bizSeqNo); } catch (Exception e) { - + //ignore } -// context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); -// context.ack(); + //context.attributes().put(NonStandardKeys.MESSAGE_CONSUME_STATUS, + // EventMeshConsumeConcurrentlyStatus.CONSUME_SUCCESS.name()); + //context.ack(); eventMeshAsyncConsumeContext.commit(EventMeshAction.CommitMessage); } } @@ -223,14 +248,14 @@ public class EventMeshConsumer { } } -// public boolean isPause() { -// return persistentMqConsumer.isPause() && broadcastMqConsumer.isPause(); -// } -// -// public void pause() { -// persistentMqConsumer.pause(); -// broadcastMqConsumer.pause(); -// } + //public boolean isPause() { + // return persistentMqConsumer.isPause() && broadcastMqConsumer.isPause(); + //} + // + //public void pause() { + // persistentMqConsumer.pause(); + // broadcastMqConsumer.pause(); + //} public synchronized void shutdown() throws Exception { persistentMqConsumer.shutdown(); @@ -239,7 +264,8 @@ public class EventMeshConsumer { started4Broadcast.compareAndSet(true, false); } - public void updateOffset(String topic, SubscriptionMode subscriptionMode, List events, AbstractContext context) { + public void updateOffset(String topic, SubscriptionMode subscriptionMode, List events, + AbstractContext context) { if (SubscriptionMode.BROADCASTING.equals(subscriptionMode)) { broadcastMqConsumer.updateOffset(events, context); } else { @@ -261,11 +287,13 @@ public class EventMeshConsumer { = eventMeshHTTPServer.getProducerManager().getEventMeshProducer(consumerGroupConf.getConsumerGroup()); if (sendMessageBack == null) { - logger.warn("consumer:{} consume fail, sendMessageBack, bizSeqNo:{}, uniqueId:{}", consumerGroupConf.getConsumerGroup(), bizSeqNo, uniqueId); + logger.warn("consumer:{} consume fail, sendMessageBack, bizSeqNo:{}, uniqueId:{}", + consumerGroupConf.getConsumerGroup(), bizSeqNo, uniqueId); return; } - final SendMessageContext sendMessageBackContext = new SendMessageContext(bizSeqNo, event, sendMessageBack, eventMeshHTTPServer); + final SendMessageContext sendMessageBackContext = new SendMessageContext(bizSeqNo, event, sendMessageBack, + eventMeshHTTPServer); sendMessageBack.send(sendMessageBackContext, new SendCallback() { @Override @@ -274,13 +302,15 @@ public class EventMeshConsumer { @Override public void onException(OnExceptionContext context) { - logger.warn("consumer:{} consume fail, sendMessageBack, bizSeqno:{}, uniqueId:{}", consumerGroupConf.getConsumerGroup(), bizSeqNo, uniqueId); + logger.warn("consumer:{} consume fail, sendMessageBack, bizSeqno:{}, uniqueId:{}", + consumerGroupConf.getConsumerGroup(), bizSeqNo, uniqueId); } -// @Override -// public void onException(Throwable e) { -// logger.warn("consumer:{} consume fail, sendMessageBack, bizSeqno:{}, uniqueId:{}", consumerGroupConf.getConsumerGroup(), bizSeqNo, uniqueId); -// } + //@Override + //public void onException(Throwable e) { + // logger.warn("consumer:{} consume fail, sendMessageBack, bizSeqno:{}, uniqueId:{}", + // consumerGroupConf.getConsumerGroup(), bizSeqNo, uniqueId); + //} }); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HandleMsgContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HandleMsgContext.java index 711a6dd03..cf0ba7f64 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HandleMsgContext.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HandleMsgContext.java @@ -17,13 +17,6 @@ package org.apache.eventmesh.runtime.core.protocol.http.consumer; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -import io.cloudevents.CloudEvent; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.api.AbstractContext; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.SubscriptionItem; @@ -31,9 +24,19 @@ import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.consumergroup.ConsumerGroupConf; import org.apache.eventmesh.runtime.core.consumergroup.ConsumerGroupTopicConf; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cloudevents.CloudEvent; + public class HandleMsgContext { public Logger messageLogger = LoggerFactory.getLogger("message"); @@ -86,7 +89,7 @@ public class HandleMsgContext { this.consumeTopicConfig = consumeTopicConfig; String ttlStr = (String) event.getExtension(Constants.PROPERTY_MESSAGE_TIMEOUT); - this.ttl = StringUtils.isNumeric(ttlStr)? Integer.parseInt(ttlStr): EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; + this.ttl = StringUtils.isNumeric(ttlStr) ? Integer.parseInt(ttlStr) : EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; } public void addProp(String key, String val) { @@ -195,10 +198,10 @@ public class HandleMsgContext { public void finish() { if (eventMeshConsumer != null && context != null && event != null) { if (messageLogger.isDebugEnabled()) { -// messageLogger.debug("messageAcked|topic={}|msgId={}|cluster={}|broker={}|queueId={}|queueOffset={}", topic, -// msg.getMsgId(), msg.getProperty(DeFiBusConstant.PROPERTY_MESSAGE_CLUSTER), -// msg.getProperty(DeFiBusConstant.PROPERTY_MESSAGE_BROKER), -// msg.getQueueId(), msg.getQueueOffset()); + //messageLogger.debug("messageAcked|topic={}|msgId={}|cluster={}|broker={}|queueId={}|queueOffset={}", topic, + // msg.getMsgId(), msg.getProperty(DeFiBusConstant.PROPERTY_MESSAGE_CLUSTER), + // msg.getProperty(DeFiBusConstant.PROPERTY_MESSAGE_BROKER), + // msg.getQueueId(), msg.getQueueOffset()); } eventMeshConsumer.updateOffset(topic, subscriptionItem.getMode(), Arrays.asList(event), context); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminMetricsProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminMetricsProcessor.java index a8153c60a..b1e0688bd 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminMetricsProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminMetricsProcessor.java @@ -17,15 +17,16 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; -import io.netty.channel.ChannelHandlerContext; - import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.core.protocol.http.async.AsyncContext; import org.apache.eventmesh.runtime.core.protocol.http.processor.inf.HttpRequestProcessor; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public class AdminMetricsProcessor implements HttpRequestProcessor { private EventMeshHTTPServer eventMeshHTTPServer; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminShutdownProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminShutdownProcessor.java index 97db4bba4..d1881ad98 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminShutdownProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/AdminShutdownProcessor.java @@ -17,10 +17,10 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; -import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.common.EventMeshRetCode; import org.apache.eventmesh.common.protocol.http.common.RequestCode; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.runtime.boot.EventMeshServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.http.async.AsyncContext; @@ -47,9 +47,9 @@ public class AdminShutdownProcessor implements HttpRequestProcessor { HttpCommand responseEventMeshCommand; cmdLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", - RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), - EventMeshConstants.PROTOCOL_HTTP, - RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); + RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), + EventMeshConstants.PROTOCOL_HTTP, + RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); eventMeshServer.shutdown(); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/BatchSendMessageProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/BatchSendMessageProcessor.java index 24e6119f6..afdd365d8 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/BatchSendMessageProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/BatchSendMessageProcessor.java @@ -17,17 +17,10 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; -import io.cloudevents.CloudEvent; -import io.cloudevents.CloudEventData; -import io.cloudevents.core.builder.CloudEventBuilder; -import io.netty.channel.ChannelHandlerContext; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.api.SendCallback; import org.apache.eventmesh.api.SendResult; import org.apache.eventmesh.api.exception.OnExceptionContext; import org.apache.eventmesh.common.protocol.ProtocolTransportObject; -import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchRequestBody; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchResponseBody; @@ -38,6 +31,7 @@ import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatchRequestHeader; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatchResponseHeader; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.protocol.api.ProtocolAdaptor; import org.apache.eventmesh.protocol.api.ProtocolPluginFactory; import org.apache.eventmesh.runtime.acl.Acl; @@ -48,8 +42,9 @@ import org.apache.eventmesh.runtime.core.protocol.http.processor.inf.HttpRequest import org.apache.eventmesh.runtime.core.protocol.http.producer.EventMeshProducer; import org.apache.eventmesh.runtime.core.protocol.http.producer.SendMessageContext; import org.apache.eventmesh.runtime.util.RemotingHelper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; @@ -58,6 +53,14 @@ import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.cloudevents.CloudEvent; +import io.cloudevents.CloudEventData; +import io.cloudevents.core.builder.CloudEventBuilder; +import io.netty.channel.ChannelHandlerContext; + public class BatchSendMessageProcessor implements HttpRequestProcessor { public Logger cmdLogger = LoggerFactory.getLogger("cmd"); @@ -77,14 +80,17 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { HttpCommand responseEventMeshCommand; - cmdLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), + cmdLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", RequestCode.get( + Integer.valueOf(asyncContext.getRequest().getRequestCode())), EventMeshConstants.PROTOCOL_HTTP, RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); - SendMessageBatchRequestHeader sendMessageBatchRequestHeader = (SendMessageBatchRequestHeader) asyncContext.getRequest().getHeader(); + SendMessageBatchRequestHeader sendMessageBatchRequestHeader = + (SendMessageBatchRequestHeader) asyncContext.getRequest().getHeader(); SendMessageBatchResponseHeader sendMessageBatchResponseHeader = - SendMessageBatchResponseHeader.buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, + SendMessageBatchResponseHeader.buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, IPUtils.getLocalAddress(), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); @@ -95,7 +101,8 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { if (CollectionUtils.isEmpty(eventList)) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageBatchResponseHeader, - SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -113,7 +120,8 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { || StringUtils.isBlank(event.getSubject())) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageBatchResponseHeader, - SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -129,7 +137,8 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { || StringUtils.isBlank(sys)) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageBatchResponseHeader, - SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -146,7 +155,8 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { || eventSize != eventList.size()) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageBatchResponseHeader, - SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -157,7 +167,8 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { .tryAcquire(eventSize, EventMeshConstants.DEFAULT_FASTFAIL_TIMEOUT_IN_MILLISECONDS, TimeUnit.MILLISECONDS)) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageBatchResponseHeader, - SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_BATCH_SPEED_OVER_LIMIT_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_BATCH_SPEED_OVER_LIMIT_ERR.getErrMsg())); + SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_BATCH_SPEED_OVER_LIMIT_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_BATCH_SPEED_OVER_LIMIT_ERR.getErrMsg())); eventMeshHTTPServer.metrics.summaryMetrics .recordSendBatchMsgDiscard(eventSize); asyncContext.onComplete(responseEventMeshCommand); @@ -171,12 +182,13 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { if (!batchEventMeshProducer.getStarted().get()) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageBatchResponseHeader, - SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_BATCH_PRODUCER_STOPED_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_BATCH_PRODUCER_STOPED_ERR.getErrMsg())); + SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_BATCH_PRODUCER_STOPED_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_BATCH_PRODUCER_STOPED_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } - long batchStartTime = System.currentTimeMillis(); + final long batchStartTime = System.currentTimeMillis(); String remoteAddr = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); int requestCode = Integer.parseInt(asyncContext.getRequest().getRequestCode()); @@ -194,7 +206,7 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { String subsystem = Objects.requireNonNull(cloudEvent.getExtension(ProtocolKey.ClientInstanceKey.SYS)).toString(); //do acl check - if(eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshServerSecurityEnable) { + if (eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshServerSecurityEnable) { try { Acl.doAclCheckInHttpSend(remoteAddr, user, pass, subsystem, cloudEvent.getSubject(), requestCode); } catch (Exception e) { @@ -239,7 +251,8 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { if (CollectionUtils.isEmpty(eventList)) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageBatchResponseHeader, - SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + SendMessageBatchResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -251,20 +264,21 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { for (List eventlist : topicBatchMessageMappings.values()) { // TODO: Implementation in API. Consider whether to put it in the plug-in. CloudEvent event = null; -// Message omsMsg = new Message(); -// try { -// msgBatch = msgBatch.generateFromList(batchMsgs); -// for (Message message : msgBatch.getMessages()) { -// // TODO: Detect the maximum length of messages for different producers. -// Validators.checkMessage(message, batchEventMeshProducer.getMqProducerWrapper().getDefaultMQProducer()); -// MessageClientIDSetter.setUniqID(message); -// } -// msgBatch.setBody(msgBatch.encode()); -// } catch (Exception e) { -// continue; -// } + //Message omsMsg = new Message(); + //try { + // msgBatch = msgBatch.generateFromList(batchMsgs); + // for (Message message : msgBatch.getMessages()) { + // // TODO: Detect the maximum length of messages for different producers. + // Validators.checkMessage(message, batchEventMeshProducer.getMqProducerWrapper().getDefaultMQProducer()); + // MessageClientIDSetter.setUniqID(message); + // } + // msgBatch.setBody(msgBatch.encode()); + //} catch (Exception e) { + // continue; + //} - final SendMessageContext sendMessageContext = new SendMessageContext(batchId, event, batchEventMeshProducer, eventMeshHTTPServer); + final SendMessageContext sendMessageContext = new SendMessageContext(batchId, event, batchEventMeshProducer, + eventMeshHTTPServer); sendMessageContext.setEventList(eventlist); batchEventMeshProducer.send(sendMessageContext, new SendCallback() { @Override @@ -281,7 +295,8 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { } } else { for (CloudEvent event : eventList) { - final SendMessageContext sendMessageContext = new SendMessageContext(batchId, event, batchEventMeshProducer, eventMeshHTTPServer); + final SendMessageContext sendMessageContext = new SendMessageContext(batchId, event, batchEventMeshProducer, + eventMeshHTTPServer); batchEventMeshProducer.send(sendMessageContext, new SendCallback() { @Override public void onSuccess(SendResult sendResult) { @@ -305,7 +320,8 @@ public class BatchSendMessageProcessor implements HttpRequestProcessor { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageBatchResponseHeader, - SendMessageBatchResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(), EventMeshRetCode.SUCCESS.getErrMsg())); + SendMessageBatchResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(), + EventMeshRetCode.SUCCESS.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/BatchSendMessageV2Processor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/BatchSendMessageV2Processor.java index b15add641..a1485e6ee 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/BatchSendMessageV2Processor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/BatchSendMessageV2Processor.java @@ -20,7 +20,6 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; import org.apache.eventmesh.api.SendCallback; import org.apache.eventmesh.api.SendResult; import org.apache.eventmesh.api.exception.OnExceptionContext; -import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.protocol.ProtocolTransportObject; import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchV2RequestBody; @@ -32,6 +31,7 @@ import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatchV2RequestHeader; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatchV2ResponseHeader; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.protocol.api.ProtocolAdaptor; import org.apache.eventmesh.protocol.api.ProtocolPluginFactory; import org.apache.eventmesh.runtime.acl.Acl; @@ -72,88 +72,88 @@ public class BatchSendMessageV2Processor implements HttpRequestProcessor { @Override public void processRequest(ChannelHandlerContext ctx, AsyncContext asyncContext) - throws Exception { + throws Exception { HttpCommand responseEventMeshCommand; final HttpCommand request = asyncContext.getRequest(); final Integer requestCode = Integer.valueOf(request.getRequestCode()); cmdLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", - RequestCode.get(requestCode), - EventMeshConstants.PROTOCOL_HTTP, - RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); + RequestCode.get(requestCode), + EventMeshConstants.PROTOCOL_HTTP, + RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); SendMessageBatchV2RequestHeader sendMessageBatchV2RequestHeader = - (SendMessageBatchV2RequestHeader) asyncContext.getRequest().getHeader(); + (SendMessageBatchV2RequestHeader) asyncContext.getRequest().getHeader(); String protocolType = sendMessageBatchV2RequestHeader.getProtocolType(); ProtocolAdaptor httpCommandProtocolAdaptor = - ProtocolPluginFactory.getProtocolAdaptor(protocolType); + ProtocolPluginFactory.getProtocolAdaptor(protocolType); CloudEvent event = httpCommandProtocolAdaptor.toCloudEvent(asyncContext.getRequest()); SendMessageBatchV2ResponseHeader sendMessageBatchV2ResponseHeader = - SendMessageBatchV2ResponseHeader.buildHeader( - requestCode, - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, - IPUtils.getLocalAddress(), - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC - ); + SendMessageBatchV2ResponseHeader.buildHeader( + requestCode, + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, + IPUtils.getLocalAddress(), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC + ); // todo: use validate processor to check //validate event if (StringUtils.isBlank(event.getId()) - || event.getSource() == null - || event.getSpecVersion() == null - || StringUtils.isBlank(event.getType()) - || StringUtils.isBlank(event.getSubject())) { + || event.getSource() == null + || event.getSpecVersion() == null + || StringUtils.isBlank(event.getType()) + || StringUtils.isBlank(event.getSubject())) { responseEventMeshCommand = request.createHttpCommandResponse( - sendMessageBatchV2ResponseHeader, - SendMessageBatchV2ResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + sendMessageBatchV2ResponseHeader, + SendMessageBatchV2ResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } String idc = Objects.requireNonNull(event.getExtension(ProtocolKey.ClientInstanceKey.IDC)) - .toString(); + .toString(); String pid = Objects.requireNonNull(event.getExtension(ProtocolKey.ClientInstanceKey.PID)) - .toString(); + .toString(); String sys = Objects.requireNonNull(event.getExtension(ProtocolKey.ClientInstanceKey.SYS)) - .toString(); + .toString(); //validate event-extension if (StringUtils.isBlank(idc) - || StringUtils.isBlank(pid) - || !StringUtils.isNumeric(pid) - || StringUtils.isBlank(sys)) { + || StringUtils.isBlank(pid) + || !StringUtils.isNumeric(pid) + || StringUtils.isBlank(sys)) { responseEventMeshCommand = request.createHttpCommandResponse( - sendMessageBatchV2ResponseHeader, - SendMessageBatchV2ResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + sendMessageBatchV2ResponseHeader, + SendMessageBatchV2ResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } String bizNo = - Objects.requireNonNull(event.getExtension(SendMessageBatchV2RequestBody.BIZSEQNO)) - .toString(); + Objects.requireNonNull(event.getExtension(SendMessageBatchV2RequestBody.BIZSEQNO)) + .toString(); String producerGroup = - Objects.requireNonNull(event.getExtension(SendMessageBatchV2RequestBody.PRODUCERGROUP)) - .toString(); + Objects.requireNonNull(event.getExtension(SendMessageBatchV2RequestBody.PRODUCERGROUP)) + .toString(); String topic = event.getSubject(); if (StringUtils.isBlank(bizNo) - || StringUtils.isBlank(topic) - || StringUtils.isBlank(producerGroup) - || event.getData() == null) { + || StringUtils.isBlank(topic) + || StringUtils.isBlank(producerGroup) + || event.getData() == null) { responseEventMeshCommand = request.createHttpCommandResponse( - sendMessageBatchV2ResponseHeader, - SendMessageBatchV2ResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + sendMessageBatchV2ResponseHeader, + SendMessageBatchV2ResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -170,40 +170,40 @@ public class BatchSendMessageV2Processor implements HttpRequestProcessor { //String errorMsg = String.format("CLIENT HAS NO PERMISSION,send failed, topic:%s, subsys:%s, realIp:%s", topic, subsys, realIp); responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageBatchV2ResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_ACL_ERR.getRetCode(), - e.getMessage())); + sendMessageBatchV2ResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_ACL_ERR.getRetCode(), + e.getMessage())); asyncContext.onComplete(responseEventMeshCommand); aclLogger - .warn("CLIENT HAS NO PERMISSION,BatchSendMessageV2Processor send failed", e); + .warn("CLIENT HAS NO PERMISSION,BatchSendMessageV2Processor send failed", e); return; } } if (!eventMeshHTTPServer.getBatchRateLimiter() - .tryAcquire(EventMeshConstants.DEFAULT_FASTFAIL_TIMEOUT_IN_MILLISECONDS, - TimeUnit.MILLISECONDS)) { + .tryAcquire(EventMeshConstants.DEFAULT_FASTFAIL_TIMEOUT_IN_MILLISECONDS, + TimeUnit.MILLISECONDS)) { responseEventMeshCommand = request.createHttpCommandResponse( - sendMessageBatchV2ResponseHeader, - SendMessageBatchV2ResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_BATCH_SPEED_OVER_LIMIT_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_BATCH_SPEED_OVER_LIMIT_ERR.getErrMsg())); + sendMessageBatchV2ResponseHeader, + SendMessageBatchV2ResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_BATCH_SPEED_OVER_LIMIT_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_BATCH_SPEED_OVER_LIMIT_ERR.getErrMsg())); eventMeshHTTPServer.metrics.summaryMetrics - .recordSendBatchMsgDiscard(1); + .recordSendBatchMsgDiscard(1); asyncContext.onComplete(responseEventMeshCommand); return; } EventMeshProducer batchEventMeshProducer = - eventMeshHTTPServer.getProducerManager().getEventMeshProducer(producerGroup); + eventMeshHTTPServer.getProducerManager().getEventMeshProducer(producerGroup); batchEventMeshProducer.getMqProducerWrapper().getMeshMQProducer().setExtFields(); if (!batchEventMeshProducer.getStarted().get()) { responseEventMeshCommand = request.createHttpCommandResponse( - sendMessageBatchV2ResponseHeader, - SendMessageBatchV2ResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_BATCH_PRODUCER_STOPED_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_BATCH_PRODUCER_STOPED_ERR.getErrMsg())); + sendMessageBatchV2ResponseHeader, + SendMessageBatchV2ResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_BATCH_PRODUCER_STOPED_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_BATCH_PRODUCER_STOPED_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -213,20 +213,20 @@ public class BatchSendMessageV2Processor implements HttpRequestProcessor { String ttl = String.valueOf(EventMeshConstants.DEFAULT_MSG_TTL_MILLS); // todo: use hashmap to avoid copy if (StringUtils.isBlank(event.getExtension(SendMessageRequestBody.TTL).toString()) - && !StringUtils.isNumeric(event.getExtension(SendMessageRequestBody.TTL).toString())) { + && !StringUtils.isNumeric(event.getExtension(SendMessageRequestBody.TTL).toString())) { event = CloudEventBuilder.from(event).withExtension(SendMessageRequestBody.TTL, ttl) - .build(); + .build(); } try { event = CloudEventBuilder.from(event) - .withExtension("msgtype", "persistent") - .withExtension(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, - String.valueOf(System.currentTimeMillis())) - .withExtension(EventMeshConstants.REQ_EVENTMESH2MQ_TIMESTAMP, - String.valueOf(System.currentTimeMillis())) - .build(); + .withExtension("msgtype", "persistent") + .withExtension(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, + String.valueOf(System.currentTimeMillis())) + .withExtension(EventMeshConstants.REQ_EVENTMESH2MQ_TIMESTAMP, + String.valueOf(System.currentTimeMillis())) + .build(); if (batchMessageLogger.isDebugEnabled()) { batchMessageLogger.debug("msg2MQMsg suc, topic:{}, msg:{}", topic, event.getData()); } @@ -234,11 +234,12 @@ public class BatchSendMessageV2Processor implements HttpRequestProcessor { } catch (Exception e) { batchMessageLogger.error("msg2MQMsg err, topic:{}, msg:{}", topic, event.getData(), e); responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageBatchV2ResponseHeader, - SendMessageBatchV2ResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getErrMsg() + - EventMeshUtil.stackTrace(e, 2))); + sendMessageBatchV2ResponseHeader, + SendMessageBatchV2ResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getErrMsg() + + + EventMeshUtil.stackTrace(e, 2))); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -246,7 +247,7 @@ public class BatchSendMessageV2Processor implements HttpRequestProcessor { eventMeshHTTPServer.metrics.summaryMetrics.recordSendBatchMsg(1); final SendMessageContext sendMessageContext = - new SendMessageContext(bizNo, event, batchEventMeshProducer, eventMeshHTTPServer); + new SendMessageContext(bizNo, event, batchEventMeshProducer, eventMeshHTTPServer); try { batchEventMeshProducer.send(sendMessageContext, new SendCallback() { @@ -254,10 +255,10 @@ public class BatchSendMessageV2Processor implements HttpRequestProcessor { public void onSuccess(SendResult sendResult) { long batchEndTime = System.currentTimeMillis(); eventMeshHTTPServer.metrics.summaryMetrics - .recordBatchSendMsgCost(batchEndTime - batchStartTime); + .recordBatchSendMsgCost(batchEndTime - batchStartTime); batchMessageLogger.debug( - "batchMessageV2|eventMesh2mq|REQ|ASYNC|bizSeqNo={}|send2MQCost={}ms|topic={}", - bizNo, batchEndTime - batchStartTime, topic); + "batchMessageV2|eventMesh2mq|REQ|ASYNC|bizSeqNo={}|send2MQCost={}ms|topic={}", + bizNo, batchEndTime - batchStartTime, topic); } @Override @@ -265,34 +266,35 @@ public class BatchSendMessageV2Processor implements HttpRequestProcessor { long batchEndTime = System.currentTimeMillis(); eventMeshHTTPServer.getHttpRetryer().pushRetry(sendMessageContext.delay(10000)); eventMeshHTTPServer.metrics.summaryMetrics - .recordBatchSendMsgCost(batchEndTime - batchStartTime); + .recordBatchSendMsgCost(batchEndTime - batchStartTime); batchMessageLogger.error( - "batchMessageV2|eventMesh2mq|REQ|ASYNC|bizSeqNo={}|send2MQCost={}ms|topic={}", - bizNo, batchEndTime - batchStartTime, topic, context.getException()); + "batchMessageV2|eventMesh2mq|REQ|ASYNC|bizSeqNo={}|send2MQCost={}ms|topic={}", + bizNo, batchEndTime - batchStartTime, topic, context.getException()); } }); } catch (Exception e) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageBatchV2ResponseHeader, - SendMessageBatchV2ResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_SEND_BATCHLOG_MSG_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_SEND_BATCHLOG_MSG_ERR.getErrMsg() + - EventMeshUtil.stackTrace(e, 2))); + sendMessageBatchV2ResponseHeader, + SendMessageBatchV2ResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_SEND_BATCHLOG_MSG_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_SEND_BATCHLOG_MSG_ERR.getErrMsg() + + + EventMeshUtil.stackTrace(e, 2))); asyncContext.onComplete(responseEventMeshCommand); long batchEndTime = System.currentTimeMillis(); eventMeshHTTPServer.getHttpRetryer().pushRetry(sendMessageContext.delay(10000)); eventMeshHTTPServer.metrics.summaryMetrics - .recordBatchSendMsgCost(batchEndTime - batchStartTime); + .recordBatchSendMsgCost(batchEndTime - batchStartTime); batchMessageLogger.error( - "batchMessageV2|eventMesh2mq|REQ|ASYNC|bizSeqNo={}|send2MQCost={}ms|topic={}", - bizNo, batchEndTime - batchStartTime, topic, e); + "batchMessageV2|eventMesh2mq|REQ|ASYNC|bizSeqNo={}|send2MQCost={}ms|topic={}", + bizNo, batchEndTime - batchStartTime, topic, e); } responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageBatchV2ResponseHeader, - SendMessageBatchV2ResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(), - EventMeshRetCode.SUCCESS.getErrMsg())); + sendMessageBatchV2ResponseHeader, + SendMessageBatchV2ResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(), + EventMeshRetCode.SUCCESS.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HeartBeatProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HeartBeatProcessor.java index 45e21dae4..a2e4e709e 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HeartBeatProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HeartBeatProcessor.java @@ -17,7 +17,6 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; -import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.body.client.HeartbeatRequestBody; import org.apache.eventmesh.common.protocol.http.body.client.HeartbeatResponseBody; @@ -26,6 +25,7 @@ import org.apache.eventmesh.common.protocol.http.common.EventMeshRetCode; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.protocol.http.header.client.HeartbeatRequestHeader; import org.apache.eventmesh.common.protocol.http.header.client.HeartbeatResponseHeader; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.runtime.acl.Acl; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; @@ -66,41 +66,41 @@ public class HeartBeatProcessor implements HttpRequestProcessor { public void processRequest(ChannelHandlerContext ctx, AsyncContext asyncContext) throws Exception { HttpCommand responseEventMeshCommand; httpLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", - RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), - EventMeshConstants.PROTOCOL_HTTP, - RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); + RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), + EventMeshConstants.PROTOCOL_HTTP, + RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); HeartbeatRequestHeader heartbeatRequestHeader = (HeartbeatRequestHeader) asyncContext.getRequest().getHeader(); HeartbeatRequestBody heartbeatRequestBody = (HeartbeatRequestBody) asyncContext.getRequest().getBody(); HeartbeatResponseHeader heartbeatResponseHeader = - HeartbeatResponseHeader.buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, - IPUtils.getLocalAddress(), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); + HeartbeatResponseHeader.buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, + IPUtils.getLocalAddress(), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); //validate header if (StringUtils.isBlank(heartbeatRequestHeader.getIdc()) - || StringUtils.isBlank(heartbeatRequestHeader.getPid()) - || !StringUtils.isNumeric(heartbeatRequestHeader.getPid()) - || StringUtils.isBlank(heartbeatRequestHeader.getSys())) { + || StringUtils.isBlank(heartbeatRequestHeader.getPid()) + || !StringUtils.isNumeric(heartbeatRequestHeader.getPid()) + || StringUtils.isBlank(heartbeatRequestHeader.getSys())) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - heartbeatResponseHeader, - HeartbeatResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + heartbeatResponseHeader, + HeartbeatResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } //validate body if (StringUtils.isBlank(heartbeatRequestBody.getClientType()) - || StringUtils.isBlank(heartbeatRequestBody.getConsumerGroup()) - || CollectionUtils.isEmpty(heartbeatRequestBody.getHeartbeatEntities())) { + || StringUtils.isBlank(heartbeatRequestBody.getConsumerGroup()) + || CollectionUtils.isEmpty(heartbeatRequestBody.getHeartbeatEntities())) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - heartbeatResponseHeader, - HeartbeatResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + heartbeatResponseHeader, + HeartbeatResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -113,8 +113,7 @@ public class HeartBeatProcessor implements HttpRequestProcessor { String consumerGroup = heartbeatRequestBody.getConsumerGroup(); List heartbeatEntities = heartbeatRequestBody.getHeartbeatEntities(); for (HeartbeatRequestBody.HeartbeatEntity heartbeatEntity : heartbeatEntities) { - String topic = heartbeatEntity.topic; - String url = heartbeatEntity.url; + Client client = new Client(); client.env = env; client.idc = idc; @@ -122,8 +121,8 @@ public class HeartBeatProcessor implements HttpRequestProcessor { client.ip = ip; client.pid = pid; client.consumerGroup = consumerGroup; - client.topic = topic; - client.url = url; + client.topic = heartbeatEntity.topic; + client.url = heartbeatEntity.url; client.lastUpTime = new Date(); @@ -138,14 +137,14 @@ public class HeartBeatProcessor implements HttpRequestProcessor { String pass = heartbeatRequestHeader.getPasswd(); int requestCode = Integer.valueOf(heartbeatRequestHeader.getCode()); try { - Acl.doAclCheckInHttpHeartbeat(remoteAddr, user, pass, sys, topic, requestCode); + Acl.doAclCheckInHttpHeartbeat(remoteAddr, user, pass, sys, client.topic, requestCode); } catch (Exception e) { //String errorMsg = String.format("CLIENT HAS NO PERMISSION,send failed, topic:%s, subsys:%s, realIp:%s", topic, subsys, realIp); responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - heartbeatResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_ACL_ERR.getRetCode(), e.getMessage())); + heartbeatResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_ACL_ERR.getRetCode(), e.getMessage())); asyncContext.onComplete(responseEventMeshCommand); aclLogger.warn("CLIENT HAS NO PERMISSION,HeartBeatProcessor subscribe failed", e); return; @@ -169,10 +168,10 @@ public class HeartBeatProcessor implements HttpRequestProcessor { synchronized (eventMeshHTTPServer.localClientInfoMapping) { for (Map.Entry> groupTopicClientMapping : tmp.entrySet()) { List localClientList = - eventMeshHTTPServer.localClientInfoMapping.get(groupTopicClientMapping.getKey()); + eventMeshHTTPServer.localClientInfoMapping.get(groupTopicClientMapping.getKey()); if (CollectionUtils.isEmpty(localClientList)) { eventMeshHTTPServer.localClientInfoMapping - .put(groupTopicClientMapping.getKey(), groupTopicClientMapping.getValue()); + .put(groupTopicClientMapping.getKey(), groupTopicClientMapping.getValue()); } else { List tmpClientList = groupTopicClientMapping.getValue(); supplyClientInfoList(tmpClientList, localClientList); @@ -194,8 +193,9 @@ public class HeartBeatProcessor implements HttpRequestProcessor { } eventMeshHTTPServer.sendResponse(ctx, httpCommand.httpResponse()); eventMeshHTTPServer.metrics.summaryMetrics.recordHTTPReqResTimeCost( - System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); + System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); } catch (Exception ex) { + //ignore } } }; @@ -204,13 +204,13 @@ public class HeartBeatProcessor implements HttpRequestProcessor { asyncContext.onComplete(responseEventMeshCommand, handler); } catch (Exception e) { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( - heartbeatResponseHeader, - HeartbeatResponseBody.buildBody(EventMeshRetCode.EVENTMESH_HEARTBEAT_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_HEARTBEAT_ERR.getErrMsg() + EventMeshUtil.stackTrace(e, 2))); + heartbeatResponseHeader, + HeartbeatResponseBody.buildBody(EventMeshRetCode.EVENTMESH_HEARTBEAT_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_HEARTBEAT_ERR.getErrMsg() + EventMeshUtil.stackTrace(e, 2))); asyncContext.onComplete(err); long endTime = System.currentTimeMillis(); httpLogger.error("message|eventMesh2mq|REQ|ASYNC|heartBeatMessageCost={}ms", - endTime - startTime, e); + endTime - startTime, e); eventMeshHTTPServer.metrics.summaryMetrics.recordSendMsgFailed(); eventMeshHTTPServer.metrics.summaryMetrics.recordSendMsgCost(endTime - startTime); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/ReplyMessageProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/ReplyMessageProcessor.java index 8114f4cc9..cb5e1d487 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/ReplyMessageProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/ReplyMessageProcessor.java @@ -17,16 +17,10 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; -import io.cloudevents.CloudEvent; -import io.cloudevents.core.builder.CloudEventBuilder; -import io.netty.channel.ChannelHandlerContext; - -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.api.SendCallback; import org.apache.eventmesh.api.SendResult; import org.apache.eventmesh.api.exception.OnExceptionContext; import org.apache.eventmesh.common.Constants; -import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.protocol.ProtocolTransportObject; import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.body.message.ReplyMessageResponseBody; @@ -37,6 +31,7 @@ import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.protocol.http.header.message.ReplyMessageRequestHeader; import org.apache.eventmesh.common.protocol.http.header.message.ReplyMessageResponseHeader; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.protocol.api.ProtocolAdaptor; import org.apache.eventmesh.protocol.api.ProtocolPluginFactory; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; @@ -48,12 +43,19 @@ import org.apache.eventmesh.runtime.core.protocol.http.producer.EventMeshProduce import org.apache.eventmesh.runtime.core.protocol.http.producer.SendMessageContext; import org.apache.eventmesh.runtime.util.EventMeshUtil; import org.apache.eventmesh.runtime.util.RemotingHelper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.util.Objects; import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.cloudevents.CloudEvent; +import io.cloudevents.core.builder.CloudEventBuilder; +import io.netty.channel.ChannelHandlerContext; + public class ReplyMessageProcessor implements HttpRequestProcessor { public Logger messageLogger = LoggerFactory.getLogger("message"); @@ -77,14 +79,15 @@ public class ReplyMessageProcessor implements HttpRequestProcessor { RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); ReplyMessageRequestHeader replyMessageRequestHeader = (ReplyMessageRequestHeader) asyncContext.getRequest().getHeader(); -// ReplyMessageRequestBody replyMessageRequestBody = (ReplyMessageRequestBody) asyncContext.getRequest().getBody(); + //ReplyMessageRequestBody replyMessageRequestBody = (ReplyMessageRequestBody) asyncContext.getRequest().getBody(); String protocolType = replyMessageRequestHeader.getProtocolType(); ProtocolAdaptor httpCommandProtocolAdaptor = ProtocolPluginFactory.getProtocolAdaptor(protocolType); CloudEvent event = httpCommandProtocolAdaptor.toCloudEvent(asyncContext.getRequest()); ReplyMessageResponseHeader replyMessageResponseHeader = - ReplyMessageResponseHeader.buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, + ReplyMessageResponseHeader.buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, IPUtils.getLocalAddress(), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); @@ -97,7 +100,8 @@ public class ReplyMessageProcessor implements HttpRequestProcessor { || StringUtils.isBlank(event.getSubject())) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( replyMessageResponseHeader, - ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -113,7 +117,8 @@ public class ReplyMessageProcessor implements HttpRequestProcessor { || StringUtils.isBlank(sys)) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( replyMessageResponseHeader, - ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -129,7 +134,8 @@ public class ReplyMessageProcessor implements HttpRequestProcessor { || event.getData() == null) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( replyMessageResponseHeader, - ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -151,63 +157,71 @@ public class ReplyMessageProcessor implements HttpRequestProcessor { if (!eventMeshProducer.getStarted().get()) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( replyMessageResponseHeader, - ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getErrMsg())); + ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } long startTime = System.currentTimeMillis(); -// Message rocketMQMsg; -// Message omsMsg = new Message(); + //Message rocketMQMsg; + //Message omsMsg = new Message(); String replyTopic = EventMeshConstants.RR_REPLY_TOPIC; String origTopic = event.getSubject(); -// Map extFields = replyMessageRequestBody.getExtFields(); + //Map extFields = replyMessageRequestBody.getExtFields(); final String replyMQCluster = event.getExtension(EventMeshConstants.PROPERTY_MESSAGE_CLUSTER).toString(); -// final String replyMQCluster = MapUtils.getString(extFields, EventMeshConstants.PROPERTY_MESSAGE_CLUSTER, null); + //final String replyMQCluster = MapUtils.getString(extFields, EventMeshConstants.PROPERTY_MESSAGE_CLUSTER, null); if (!org.apache.commons.lang3.StringUtils.isEmpty(replyMQCluster)) { replyTopic = replyMQCluster + "-" + replyTopic; } else { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( replyMessageResponseHeader, - ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getErrMsg())); + ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } try { // body -// omsMsg.setBody(replyMessageRequestBody.getContent().getBytes(EventMeshConstants.DEFAULT_CHARSET)); + //omsMsg.setBody(replyMessageRequestBody.getContent().getBytes(EventMeshConstants.DEFAULT_CHARSET)); event = CloudEventBuilder.from(event) .withSubject(replyTopic) .withExtension("msgtype", "persistent") .withExtension(Constants.PROPERTY_MESSAGE_TIMEOUT, String.valueOf(EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS)) .withExtension(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())) .build(); -// omsMsg.setTopic(replyTopic); - // topic -// omsMsg.putSystemProperties(Constants.PROPERTY_MESSAGE_DESTINATION, replyTopic); -// if (!StringUtils.isBlank(sendMessageRequestBody.getTag())) { -// omsMsg.putUserHeaders("Tag", sendMessageRequestBody.getTag()); -// } -// rocketMQMsg = new Message(replyTopic, -// replyMessageRequestBody.getContent().getBytes(EventMeshConstants.DEFAULT_CHARSET)); -// omsMsg.putUserProperties("msgType", "persistent"); -// rocketMQMsg.putUserProperty(DeFiBusConstant.KEY, DeFiBusConstant.PERSISTENT); -// for (Map.Entry entry : extFields.entrySet()) { -// omsMsg.putUserProperties(entry.getKey(), entry.getValue()); -// } -// //for rocketmq support -// MessageAccessor.putProperty(rocketMQMsg, MessageConst.PROPERTY_MESSAGE_TYPE, MixAll.REPLY_MESSAGE_FLAG); -// MessageAccessor.putProperty(rocketMQMsg, MessageConst.PROPERTY_CORRELATION_ID, rocketMQMsg.getProperty(DeFiBusConstant.PROPERTY_RR_REQUEST_ID)); -// MessageAccessor.putProperty(rocketMQMsg, MessageConst.PROPERTY_MESSAGE_REPLY_TO_CLIENT, rocketMQMsg.getProperty(DeFiBusConstant.PROPERTY_MESSAGE_REPLY_TO)); + //omsMsg.setTopic(replyTopic); + // topic + //omsMsg.putSystemProperties(Constants.PROPERTY_MESSAGE_DESTINATION, replyTopic); + //if (!StringUtils.isBlank(sendMessageRequestBody.getTag())) { + // omsMsg.putUserHeaders("Tag", sendMessageRequestBody.getTag()); + //} + //rocketMQMsg = new Message(replyTopic, + // replyMessageRequestBody.getContent().getBytes(EventMeshConstants.DEFAULT_CHARSET)); + //omsMsg.putUserProperties("msgType", "persistent"); + //rocketMQMsg.putUserProperty(DeFiBusConstant.KEY, DeFiBusConstant.PERSISTENT); + //for (Map.Entry entry : extFields.entrySet()) { + // omsMsg.putUserProperties(entry.getKey(), entry.getValue()); + //} + // + ////for rocketmq support + //MessageAccessor.putProperty(rocketMQMsg, MessageConst.PROPERTY_MESSAGE_TYPE, MixAll.REPLY_MESSAGE_FLAG); + //MessageAccessor.putProperty(rocketMQMsg, MessageConst.PROPERTY_CORRELATION_ID, + // rocketMQMsg.getProperty(DeFiBusConstant.PROPERTY_RR_REQUEST_ID)); + //MessageAccessor.putProperty(rocketMQMsg, MessageConst.PROPERTY_MESSAGE_REPLY_TO_CLIENT, + // rocketMQMsg.getProperty(DeFiBusConstant.PROPERTY_MESSAGE_REPLY_TO)); // ttl -// omsMsg.putSystemProperties(Constants.PROPERTY_MESSAGE_TIMEOUT, String.valueOf(EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS)); -//// MessageAccessor.putProperty(rocketMQMsg, DeFiBusConstant.PROPERTY_MESSAGE_TTL, String.valueOf(EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS)); -// omsMsg.putUserProperties(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())); + //omsMsg.putSystemProperties(Constants.PROPERTY_MESSAGE_TIMEOUT, + // String.valueOf(EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS)); + ////MessageAccessor.putProperty(rocketMQMsg, DeFiBusConstant.PROPERTY_MESSAGE_TTL, + // String.valueOf(EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS)); + //omsMsg.putUserProperties(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, + // String.valueOf(System.currentTimeMillis())); if (messageLogger.isDebugEnabled()) { messageLogger.debug("msg2MQMsg suc, bizSeqNo={}, topic={}", bizNo, replyTopic); } @@ -216,7 +230,8 @@ public class ReplyMessageProcessor implements HttpRequestProcessor { messageLogger.error("msg2MQMsg err, bizSeqNo={}, topic={}", bizNo, replyTopic, e); responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( replyMessageResponseHeader, - ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(e, 2))); + ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(e, 2))); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -232,8 +247,10 @@ public class ReplyMessageProcessor implements HttpRequestProcessor { httpLogger.debug("{}", httpCommand); } eventMeshHTTPServer.sendResponse(ctx, httpCommand.httpResponse()); - eventMeshHTTPServer.metrics.summaryMetrics.recordHTTPReqResTimeCost(System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); + eventMeshHTTPServer.metrics.summaryMetrics.recordHTTPReqResTimeCost( + System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); } catch (Exception ex) { + //ignore } } }; @@ -263,7 +280,8 @@ public class ReplyMessageProcessor implements HttpRequestProcessor { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( replyMessageResponseHeader, SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(context.getException(), 2))); + EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getErrMsg() + + EventMeshUtil.stackTrace(context.getException(), 2))); asyncContext.onComplete(err, handler); long endTime = System.currentTimeMillis(); eventMeshHTTPServer.metrics.summaryMetrics.recordReplyMsgFailed(); @@ -273,23 +291,23 @@ public class ReplyMessageProcessor implements HttpRequestProcessor { origTopic, bizNo, uniqueId, context.getException()); } -// @Override -// public void onException(Throwable e) { -// HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( -// replyMessageResponseHeader, -// SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getRetCode(), -// EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(e, 2))); -// asyncContext.onComplete(err, handler); -// long endTime = System.currentTimeMillis(); -// eventMeshHTTPServer.metrics.summaryMetrics.recordReplyMsgFailed(); -// eventMeshHTTPServer.metrics.summaryMetrics.recordReplyMsgCost(endTime - startTime); -// messageLogger.error("message|eventMesh2mq|RSP|SYNC|reply2MQCost={}|topic={}|origTopic={}|bizSeqNo={}|uniqueId={}", -// endTime - startTime, -// replyMQCluster + "-" + EventMeshConstants.RR_REPLY_TOPIC, -// replyMessageRequestBody.getOrigTopic(), -// replyMessageRequestBody.getBizSeqNo(), -// replyMessageRequestBody.getUniqueId(), e); -// } + //@Override + //public void onException(Throwable e) { + // HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( + // replyMessageResponseHeader, + // SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getRetCode(), + // EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(e, 2))); + // asyncContext.onComplete(err, handler); + // long endTime = System.currentTimeMillis(); + // eventMeshHTTPServer.metrics.summaryMetrics.recordReplyMsgFailed(); + // eventMeshHTTPServer.metrics.summaryMetrics.recordReplyMsgCost(endTime - startTime); + // messageLogger.error("message|eventMesh2mq|RSP|SYNC|reply2MQCost={}|topic={}|origTopic={}|bizSeqNo={}|uniqueId={}", + // endTime - startTime, + // replyMQCluster + "-" + EventMeshConstants.RR_REPLY_TOPIC, + // replyMessageRequestBody.getOrigTopic(), + // replyMessageRequestBody.getBizSeqNo(), + // replyMessageRequestBody.getUniqueId(), e); + //} }); } catch (Exception ex) { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendAsyncMessageProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendAsyncMessageProcessor.java index 5cbbd302d..fbb8082a5 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendAsyncMessageProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendAsyncMessageProcessor.java @@ -17,13 +17,9 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; -import io.cloudevents.core.builder.CloudEventBuilder; - -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.api.SendCallback; import org.apache.eventmesh.api.SendResult; import org.apache.eventmesh.api.exception.OnExceptionContext; -import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.protocol.ProtocolTransportObject; import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody; @@ -33,6 +29,7 @@ import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageRequestHeader; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageResponseHeader; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.protocol.api.ProtocolAdaptor; import org.apache.eventmesh.protocol.api.ProtocolPluginFactory; import org.apache.eventmesh.runtime.acl.Acl; @@ -45,13 +42,17 @@ import org.apache.eventmesh.runtime.core.protocol.http.producer.EventMeshProduce import org.apache.eventmesh.runtime.core.protocol.http.producer.SendMessageContext; import org.apache.eventmesh.runtime.util.EventMeshUtil; import org.apache.eventmesh.runtime.util.RemotingHelper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.util.Objects; import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import io.cloudevents.CloudEvent; +import io.cloudevents.core.builder.CloudEventBuilder; import io.netty.channel.ChannelHandlerContext; public class SendAsyncMessageProcessor implements HttpRequestProcessor { @@ -75,15 +76,17 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { HttpCommand responseEventMeshCommand; - cmdLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), + cmdLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", RequestCode.get( + Integer.valueOf(asyncContext.getRequest().getRequestCode())), EventMeshConstants.PROTOCOL_HTTP, RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); SendMessageRequestHeader sendMessageRequestHeader = (SendMessageRequestHeader) asyncContext.getRequest().getHeader(); -// SendMessageRequestBody sendMessageRequestBody = (SendMessageRequestBody) asyncContext.getRequest().getBody(); + //SendMessageRequestBody sendMessageRequestBody = (SendMessageRequestBody) asyncContext.getRequest().getBody(); SendMessageResponseHeader sendMessageResponseHeader = - SendMessageResponseHeader.buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, + SendMessageResponseHeader.buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, IPUtils.getLocalAddress(), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); @@ -100,7 +103,8 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { || StringUtils.isBlank(event.getSubject())) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageResponseHeader, - SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -116,7 +120,8 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { || StringUtils.isBlank(sys)) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageResponseHeader, - SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -134,13 +139,14 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { || event.getData() == null) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageResponseHeader, - SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } //do acl check - if(eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshServerSecurityEnable) { + if (eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshServerSecurityEnable) { String remoteAddr = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); String user = event.getExtension(ProtocolKey.ClientInstanceKey.USERNAME).toString(); String pass = event.getExtension(ProtocolKey.ClientInstanceKey.PASSWD).toString(); @@ -148,7 +154,7 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { int requestCode = Integer.parseInt(asyncContext.getRequest().getRequestCode()); try { Acl.doAclCheckInHttpSend(remoteAddr, user, pass, subsystem, topic, requestCode); - }catch (Exception e){ + } catch (Exception e) { //String errorMsg = String.format("CLIENT HAS NO PERMISSION,send failed, topic:%s, subsys:%s, realIp:%s", topic, subsys, realIp); responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( @@ -177,7 +183,8 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { if (!eventMeshProducer.getStarted().get()) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageResponseHeader, - SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getErrMsg())); + SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -190,30 +197,30 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { try { // body -// omsMsg.setBody(sendMessageRequestBody.getContent().getBytes(EventMeshConstants.DEFAULT_CHARSET)); -// // topic -// omsMsg.setTopic(sendMessageRequestBody.getTopic()); -// omsMsg.putSystemProperties(Constants.PROPERTY_MESSAGE_DESTINATION, sendMessageRequestBody.getTopic()); -// -// if (!StringUtils.isBlank(sendMessageRequestBody.getTag())) { -// omsMsg.putUserProperties(EventMeshConstants.TAG, sendMessageRequestBody.getTag()); -// } + //omsMsg.setBody(sendMessageRequestBody.getContent().getBytes(EventMeshConstants.DEFAULT_CHARSET)); + //// topic + //omsMsg.setTopic(sendMessageRequestBody.getTopic()); + //omsMsg.putSystemProperties(Constants.PROPERTY_MESSAGE_DESTINATION, sendMessageRequestBody.getTopic()); + // + //if (!StringUtils.isBlank(sendMessageRequestBody.getTag())) { + // omsMsg.putUserProperties(EventMeshConstants.TAG, sendMessageRequestBody.getTag()); + //} // ttl -// omsMsg.putUserProperties(Constants.PROPERTY_MESSAGE_TIMEOUT, ttl); -// // bizNo -// omsMsg.putSystemProperties(Constants.PROPERTY_MESSAGE_SEARCH_KEYS, sendMessageRequestBody.getBizSeqNo()); + //omsMsg.putUserProperties(Constants.PROPERTY_MESSAGE_TIMEOUT, ttl); + //// bizNo + //omsMsg.putSystemProperties(Constants.PROPERTY_MESSAGE_SEARCH_KEYS, sendMessageRequestBody.getBizSeqNo()); event = CloudEventBuilder.from(event) .withExtension("msgtype", "persistent") .withExtension(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())) .withExtension(EventMeshConstants.REQ_EVENTMESH2MQ_TIMESTAMP, String.valueOf(System.currentTimeMillis())) .build(); -// omsMsg.putUserProperties("msgType", "persistent"); -// omsMsg.putUserProperties(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())); -// omsMsg.putUserProperties(Constants.RMB_UNIQ_ID, sendMessageRequestBody.getUniqueId()); -// omsMsg.putUserProperties(EventMeshConstants.REQ_EVENTMESH2MQ_TIMESTAMP, String.valueOf(System.currentTimeMillis())); + //omsMsg.putUserProperties("msgType", "persistent"); + //omsMsg.putUserProperties(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())); + //omsMsg.putUserProperties(Constants.RMB_UNIQ_ID, sendMessageRequestBody.getUniqueId()); + //omsMsg.putUserProperties(EventMeshConstants.REQ_EVENTMESH2MQ_TIMESTAMP, String.valueOf(System.currentTimeMillis())); // new rocketmq client can't support put DeFiBusConstant.PROPERTY_MESSAGE_TTL -// rocketMQMsg.putUserProperty(DeFiBusConstant.PROPERTY_MESSAGE_TTL, ttl); + //rocketMQMsg.putUserProperty(DeFiBusConstant.PROPERTY_MESSAGE_TTL, ttl); if (messageLogger.isDebugEnabled()) { messageLogger.debug("msg2MQMsg suc, bizSeqNo={}, topic={}", bizNo, topic); @@ -222,12 +229,14 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { messageLogger.error("msg2MQMsg err, bizSeqNo={}, topic={}", bizNo, topic, e); responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( sendMessageResponseHeader, - SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(e, 2))); + SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(e, 2))); asyncContext.onComplete(responseEventMeshCommand); return; } - final SendMessageContext sendMessageContext = new SendMessageContext(bizNo, event, eventMeshProducer, eventMeshHTTPServer); + final SendMessageContext sendMessageContext = new SendMessageContext(bizNo, event, eventMeshProducer, + eventMeshHTTPServer); eventMeshHTTPServer.metrics.summaryMetrics.recordSendMsg(); long startTime = System.currentTimeMillis(); @@ -240,8 +249,10 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { httpLogger.debug("{}", httpCommand); } eventMeshHTTPServer.sendResponse(ctx, httpCommand.httpResponse()); - eventMeshHTTPServer.metrics.summaryMetrics.recordHTTPReqResTimeCost(System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); + eventMeshHTTPServer.metrics.summaryMetrics.recordHTTPReqResTimeCost( + System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); } catch (Exception ex) { + //ignore } } }; @@ -258,7 +269,8 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { public void onSuccess(SendResult sendResult) { HttpCommand succ = asyncContext.getRequest().createHttpCommandResponse( sendMessageResponseHeader, - SendMessageResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(), EventMeshRetCode.SUCCESS.getErrMsg() + sendResult.toString())); + SendMessageResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(), + EventMeshRetCode.SUCCESS.getErrMsg() + sendResult.toString())); asyncContext.onComplete(succ, handler); long endTime = System.currentTimeMillis(); eventMeshHTTPServer.metrics.summaryMetrics.recordSendMsgCost(endTime - startTime); @@ -271,7 +283,8 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( sendMessageResponseHeader, SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_SEND_ASYNC_MSG_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_SEND_ASYNC_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(context.getException(), 2))); + EventMeshRetCode.EVENTMESH_SEND_ASYNC_MSG_ERR.getErrMsg() + + EventMeshUtil.stackTrace(context.getException(), 2))); asyncContext.onComplete(err, handler); eventMeshHTTPServer.getHttpRetryer().pushRetry(sendMessageContext.delay(10000)); @@ -286,7 +299,8 @@ public class SendAsyncMessageProcessor implements HttpRequestProcessor { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( sendMessageResponseHeader, SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_SEND_ASYNC_MSG_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_SEND_ASYNC_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(ex, 2))); + EventMeshRetCode.EVENTMESH_SEND_ASYNC_MSG_ERR.getErrMsg() + + EventMeshUtil.stackTrace(ex, 2))); asyncContext.onComplete(err); eventMeshHTTPServer.getHttpRetryer().pushRetry(sendMessageContext.delay(10000)); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendSyncMessageProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendSyncMessageProcessor.java index dff902ab5..dc43e53b0 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendSyncMessageProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendSyncMessageProcessor.java @@ -17,11 +17,7 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; -import io.cloudevents.CloudEvent; -import io.cloudevents.core.builder.CloudEventBuilder; - import org.apache.eventmesh.api.RequestReplyCallback; -import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.protocol.ProtocolTransportObject; import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody; @@ -30,6 +26,7 @@ import org.apache.eventmesh.common.protocol.http.common.EventMeshRetCode; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.protocol.http.header.message.SendMessageResponseHeader; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.utils.JsonUtils; import org.apache.eventmesh.protocol.api.ProtocolAdaptor; import org.apache.eventmesh.protocol.api.ProtocolPluginFactory; @@ -52,6 +49,8 @@ import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cloudevents.CloudEvent; +import io.cloudevents.core.builder.CloudEventBuilder; import io.netty.channel.ChannelHandlerContext; public class SendSyncMessageProcessor implements HttpRequestProcessor { @@ -72,25 +71,25 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor { @Override public void processRequest(ChannelHandlerContext ctx, AsyncContext asyncContext) - throws Exception { + throws Exception { HttpCommand responseEventMeshCommand; cmdLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", - RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), - EventMeshConstants.PROTOCOL_HTTP, - RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); + RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), + EventMeshConstants.PROTOCOL_HTTP, + RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); ProtocolAdaptor httpCommandProtocolAdaptor = ProtocolPluginFactory.getProtocolAdaptor("cloudevents"); CloudEvent event = httpCommandProtocolAdaptor.toCloudEvent(asyncContext.getRequest()); SendMessageResponseHeader sendMessageResponseHeader = - SendMessageResponseHeader - .buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, - IPUtils.getLocalAddress(), - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); + SendMessageResponseHeader + .buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, + IPUtils.getLocalAddress(), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); //validate event if (event == null @@ -100,58 +99,58 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor { || StringUtils.isBlank(event.getType()) || StringUtils.isBlank(event.getSubject())) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + sendMessageResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } String idc = Objects.requireNonNull(event.getExtension(ProtocolKey.ClientInstanceKey.IDC)) - .toString(); + .toString(); String pid = Objects.requireNonNull(event.getExtension(ProtocolKey.ClientInstanceKey.PID)) - .toString(); + .toString(); String sys = Objects.requireNonNull(event.getExtension(ProtocolKey.ClientInstanceKey.SYS)) - .toString(); + .toString(); //validate event-extension if (StringUtils.isBlank(idc) - || StringUtils.isBlank(pid) - || !StringUtils.isNumeric(pid) - || StringUtils.isBlank(sys)) { + || StringUtils.isBlank(pid) + || !StringUtils.isNumeric(pid) + || StringUtils.isBlank(sys)) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + sendMessageResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } String bizNo = - Objects.requireNonNull(event.getExtension(SendMessageRequestBody.BIZSEQNO)).toString(); + Objects.requireNonNull(event.getExtension(SendMessageRequestBody.BIZSEQNO)).toString(); String uniqueId = - Objects.requireNonNull(event.getExtension(SendMessageRequestBody.UNIQUEID)).toString(); + Objects.requireNonNull(event.getExtension(SendMessageRequestBody.UNIQUEID)).toString(); String producerGroup = - Objects.requireNonNull(event.getExtension(SendMessageRequestBody.PRODUCERGROUP)) - .toString(); + Objects.requireNonNull(event.getExtension(SendMessageRequestBody.PRODUCERGROUP)) + .toString(); String topic = event.getSubject(); String ttl = - Objects.requireNonNull(event.getExtension(SendMessageRequestBody.TTL)).toString(); + Objects.requireNonNull(event.getExtension(SendMessageRequestBody.TTL)).toString(); //validate body if (StringUtils.isBlank(bizNo) - || StringUtils.isBlank(uniqueId) - || StringUtils.isBlank(producerGroup) - || StringUtils.isBlank(topic) - || event.getData() == null - || StringUtils.isBlank(ttl)) { + || StringUtils.isBlank(uniqueId) + || StringUtils.isBlank(producerGroup) + || StringUtils.isBlank(topic) + || event.getData() == null + || StringUtils.isBlank(ttl)) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + sendMessageResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -168,10 +167,10 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor { } catch (Exception e) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_ACL_ERR.getRetCode(), - e.getMessage())); + sendMessageResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_ACL_ERR.getRetCode(), + e.getMessage())); asyncContext.onComplete(responseEventMeshCommand); aclLogger.warn("CLIENT HAS NO PERMISSION,SendSyncMessageProcessor send failed", e); return; @@ -180,27 +179,27 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor { // control flow rate limit if (!eventMeshHTTPServer.getMsgRateLimiter() - .tryAcquire(EventMeshConstants.DEFAULT_FASTFAIL_TIMEOUT_IN_MILLISECONDS, - TimeUnit.MILLISECONDS)) { + .tryAcquire(EventMeshConstants.DEFAULT_FASTFAIL_TIMEOUT_IN_MILLISECONDS, + TimeUnit.MILLISECONDS)) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_HTTP_MES_SEND_OVER_LIMIT_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_HTTP_MES_SEND_OVER_LIMIT_ERR.getErrMsg())); + sendMessageResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_HTTP_MES_SEND_OVER_LIMIT_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_HTTP_MES_SEND_OVER_LIMIT_ERR.getErrMsg())); eventMeshHTTPServer.metrics.summaryMetrics.recordHTTPDiscard(); asyncContext.onComplete(responseEventMeshCommand); return; } EventMeshProducer eventMeshProducer = - eventMeshHTTPServer.getProducerManager().getEventMeshProducer(producerGroup); + eventMeshHTTPServer.getProducerManager().getEventMeshProducer(producerGroup); if (!eventMeshProducer.getStarted().get()) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getErrMsg())); + sendMessageResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -219,18 +218,18 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor { } catch (Exception e) { messageLogger.error("msg2MQMsg err, bizSeqNo={}, topic={}", bizNo, topic, e); responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getErrMsg() - + EventMeshUtil.stackTrace(e, 2))); + sendMessageResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getErrMsg() + + EventMeshUtil.stackTrace(e, 2))); asyncContext.onComplete(responseEventMeshCommand); return; } final SendMessageContext sendMessageContext = - new SendMessageContext(bizNo, event, eventMeshProducer, - eventMeshHTTPServer); + new SendMessageContext(bizNo, event, eventMeshProducer, + eventMeshHTTPServer); eventMeshHTTPServer.metrics.summaryMetrics.recordSendMsg(); long startTime = System.currentTimeMillis(); @@ -244,7 +243,7 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor { } eventMeshHTTPServer.sendResponse(ctx, httpCommand.httpResponse()); eventMeshHTTPServer.metrics.summaryMetrics.recordHTTPReqResTimeCost( - System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); + System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); } catch (Exception ex) { // ignore } @@ -257,35 +256,35 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor { @Override public void onSuccess(CloudEvent event) { messageLogger.info("message|mq2eventMesh|RSP|SYNC|rrCost={}ms|topic={}" - + "|bizSeqNo={}|uniqueId={}", System.currentTimeMillis() - startTime, - topic, bizNo, uniqueId); + + "|bizSeqNo={}|uniqueId={}", System.currentTimeMillis() - startTime, + topic, bizNo, uniqueId); try { event = CloudEventBuilder.from(event) .withExtension(EventMeshConstants.RSP_EVENTMESH2C_TIMESTAMP, - String.valueOf(System.currentTimeMillis())) - .withExtension(EventMeshConstants.RSP_MQ2EVENTMESH_TIMESTAMP, - String.valueOf(System.currentTimeMillis())) - .build(); + String.valueOf(System.currentTimeMillis())) + .withExtension(EventMeshConstants.RSP_MQ2EVENTMESH_TIMESTAMP, + String.valueOf(System.currentTimeMillis())) + .build(); final String rtnMsg = new String(event.getData().toBytes(), - EventMeshConstants.DEFAULT_CHARSET); + EventMeshConstants.DEFAULT_CHARSET); HttpCommand succ = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(), - JsonUtils.serialize(SendMessageResponseBody.ReplyMessage.builder() - .topic(topic) - .body(rtnMsg) - .properties(EventMeshUtil.getEventProp(event)) - .build()))); + sendMessageResponseHeader, + SendMessageResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(), + JsonUtils.serialize(SendMessageResponseBody.ReplyMessage.builder() + .topic(topic) + .body(rtnMsg) + .properties(EventMeshUtil.getEventProp(event)) + .build()))); asyncContext.onComplete(succ, handler); } catch (Exception ex) { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody.buildBody( - EventMeshRetCode.EVENTMESH_WAITING_RR_MSG_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_WAITING_RR_MSG_ERR.getErrMsg() - + EventMeshUtil.stackTrace(ex, 2))); + sendMessageResponseHeader, + SendMessageResponseBody.buildBody( + EventMeshRetCode.EVENTMESH_WAITING_RR_MSG_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_WAITING_RR_MSG_ERR.getErrMsg() + + EventMeshUtil.stackTrace(ex, 2))); asyncContext.onComplete(err, handler); messageLogger.warn("message|mq2eventMesh|RSP", ex); } @@ -294,27 +293,27 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor { @Override public void onException(Throwable e) { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_WAITING_RR_MSG_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_WAITING_RR_MSG_ERR.getErrMsg() - + EventMeshUtil.stackTrace(e, 2))); + sendMessageResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_WAITING_RR_MSG_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_WAITING_RR_MSG_ERR.getErrMsg() + + EventMeshUtil.stackTrace(e, 2))); asyncContext.onComplete(err, handler); eventMeshHTTPServer.getHttpRetryer().pushRetry(sendMessageContext.delay(10000)); messageLogger.error( - "message|mq2eventMesh|RSP|SYNC|rrCost={}ms|topic={}" - + "|bizSeqNo={}|uniqueId={}", System.currentTimeMillis() - startTime, - topic, bizNo, uniqueId, e); + "message|mq2eventMesh|RSP|SYNC|rrCost={}ms|topic={}" + + "|bizSeqNo={}|uniqueId={}", System.currentTimeMillis() - startTime, + topic, bizNo, uniqueId, e); } }, Integer.parseInt(ttl)); } catch (Exception ex) { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( - sendMessageResponseHeader, - SendMessageResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_SEND_SYNC_MSG_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_SEND_SYNC_MSG_ERR.getErrMsg() - + EventMeshUtil.stackTrace(ex, 2))); + sendMessageResponseHeader, + SendMessageResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_SEND_SYNC_MSG_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_SEND_SYNC_MSG_ERR.getErrMsg() + + EventMeshUtil.stackTrace(ex, 2))); asyncContext.onComplete(err); eventMeshHTTPServer.getHttpRetryer().pushRetry(sendMessageContext.delay(10000)); @@ -322,8 +321,8 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor { eventMeshHTTPServer.metrics.summaryMetrics.recordSendMsgFailed(); eventMeshHTTPServer.metrics.summaryMetrics.recordSendMsgCost(endTime - startTime); messageLogger.error( - "message|eventMesh2mq|REQ|SYNC|send2MQCost={}ms|topic={}|bizSeqNo={}|uniqueId={}", - endTime - startTime, topic, bizNo, uniqueId, ex); + "message|eventMesh2mq|REQ|SYNC|send2MQCost={}ms|topic={}|bizSeqNo={}|uniqueId={}", + endTime - startTime, topic, bizNo, uniqueId, ex); } return; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SubscribeProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SubscribeProcessor.java index 0c75e7ab0..98aed2c50 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SubscribeProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SubscribeProcessor.java @@ -17,9 +17,8 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; -import org.apache.eventmesh.common.utils.IPUtils; -import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.SubscriptionItem; +import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.body.client.SubscribeRequestBody; import org.apache.eventmesh.common.protocol.http.body.client.SubscribeResponseBody; import org.apache.eventmesh.common.protocol.http.body.message.SendMessageResponseBody; @@ -27,6 +26,7 @@ import org.apache.eventmesh.common.protocol.http.common.EventMeshRetCode; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.protocol.http.header.client.SubscribeRequestHeader; import org.apache.eventmesh.common.protocol.http.header.client.SubscribeResponseHeader; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.utils.JsonUtils; import org.apache.eventmesh.runtime.acl.Acl; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; @@ -76,31 +76,31 @@ public class SubscribeProcessor implements HttpRequestProcessor { final Integer requestCode = Integer.valueOf(asyncContext.getRequest().getRequestCode()); httpLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", - RequestCode.get(requestCode), - EventMeshConstants.PROTOCOL_HTTP, - RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress() + RequestCode.get(requestCode), + EventMeshConstants.PROTOCOL_HTTP, + RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress() ); SubscribeRequestHeader subscribeRequestHeader = (SubscribeRequestHeader) request.getHeader(); SubscribeRequestBody subscribeRequestBody = (SubscribeRequestBody) request.getBody(); SubscribeResponseHeader subscribeResponseHeader = - SubscribeResponseHeader - .buildHeader(requestCode, - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, - IPUtils.getLocalAddress(), - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); + SubscribeResponseHeader + .buildHeader(requestCode, + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, + IPUtils.getLocalAddress(), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); //validate header if (StringUtils.isBlank(subscribeRequestHeader.getIdc()) - || StringUtils.isBlank(subscribeRequestHeader.getPid()) - || !StringUtils.isNumeric(subscribeRequestHeader.getPid()) - || StringUtils.isBlank(subscribeRequestHeader.getSys())) { + || StringUtils.isBlank(subscribeRequestHeader.getPid()) + || !StringUtils.isNumeric(subscribeRequestHeader.getPid()) + || StringUtils.isBlank(subscribeRequestHeader.getSys())) { responseEventMeshCommand = request.createHttpCommandResponse( - subscribeResponseHeader, - SubscribeResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + subscribeResponseHeader, + SubscribeResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -111,10 +111,10 @@ public class SubscribeProcessor implements HttpRequestProcessor { || StringUtils.isBlank(subscribeRequestBody.getConsumerGroup())) { responseEventMeshCommand = request.createHttpCommandResponse( - subscribeResponseHeader, - SubscribeResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + subscribeResponseHeader, + SubscribeResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -234,7 +234,7 @@ public class SubscribeProcessor implements HttpRequestProcessor { } eventMeshHTTPServer.sendResponse(ctx, httpCommand.httpResponse()); eventMeshHTTPServer.metrics.summaryMetrics.recordHTTPReqResTimeCost( - System.currentTimeMillis() - request.getReqTime()); + System.currentTimeMillis() - request.getReqTime()); } catch (Exception ex) { // ignore } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/UnSubscribeProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/UnSubscribeProcessor.java index 7d9eb87e1..3e1c2a1c5 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/UnSubscribeProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/UnSubscribeProcessor.java @@ -17,7 +17,6 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor; -import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.body.client.UnSubscribeRequestBody; import org.apache.eventmesh.common.protocol.http.body.client.UnSubscribeResponseBody; @@ -25,6 +24,7 @@ import org.apache.eventmesh.common.protocol.http.common.EventMeshRetCode; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.protocol.http.header.client.UnSubscribeRequestHeader; import org.apache.eventmesh.common.protocol.http.header.client.UnSubscribeResponseHeader; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.utils.JsonUtils; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; @@ -66,49 +66,49 @@ public class UnSubscribeProcessor implements HttpRequestProcessor { @Override public void processRequest(ChannelHandlerContext ctx, AsyncContext asyncContext) - throws Exception { + throws Exception { HttpCommand responseEventMeshCommand; httpLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", - RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), - EventMeshConstants.PROTOCOL_HTTP, - RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); + RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), + EventMeshConstants.PROTOCOL_HTTP, + RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); UnSubscribeRequestHeader unSubscribeRequestHeader = - (UnSubscribeRequestHeader) asyncContext.getRequest().getHeader(); + (UnSubscribeRequestHeader) asyncContext.getRequest().getHeader(); UnSubscribeRequestBody unSubscribeRequestBody = - (UnSubscribeRequestBody) asyncContext.getRequest().getBody(); + (UnSubscribeRequestBody) asyncContext.getRequest().getBody(); UnSubscribeResponseHeader unSubscribeResponseHeader = - UnSubscribeResponseHeader - .buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, - IPUtils.getLocalAddress(), - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, - eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); + UnSubscribeResponseHeader + .buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, + IPUtils.getLocalAddress(), + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC); //validate header if (StringUtils.isBlank(unSubscribeRequestHeader.getIdc()) - || StringUtils.isBlank(unSubscribeRequestHeader.getPid()) - || !StringUtils.isNumeric(unSubscribeRequestHeader.getPid()) - || StringUtils.isBlank(unSubscribeRequestHeader.getSys())) { + || StringUtils.isBlank(unSubscribeRequestHeader.getPid()) + || !StringUtils.isNumeric(unSubscribeRequestHeader.getPid()) + || StringUtils.isBlank(unSubscribeRequestHeader.getSys())) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - unSubscribeResponseHeader, - UnSubscribeResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); + unSubscribeResponseHeader, + UnSubscribeResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } //validate body if (StringUtils.isBlank(unSubscribeRequestBody.getUrl()) - || CollectionUtils.isEmpty(unSubscribeRequestBody.getTopics()) - || StringUtils.isBlank(unSubscribeRequestBody.getConsumerGroup())) { + || CollectionUtils.isEmpty(unSubscribeRequestBody.getTopics()) + || StringUtils.isBlank(unSubscribeRequestBody.getConsumerGroup())) { responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse( - unSubscribeResponseHeader, - UnSubscribeResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); + unSubscribeResponseHeader, + UnSubscribeResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg())); asyncContext.onComplete(responseEventMeshCommand); return; } @@ -130,7 +130,7 @@ public class UnSubscribeProcessor implements HttpRequestProcessor { } eventMeshHTTPServer.sendResponse(ctx, httpCommand.httpResponse()); eventMeshHTTPServer.metrics.summaryMetrics.recordHTTPReqResTimeCost( - System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); + System.currentTimeMillis() - asyncContext.getRequest().getReqTime()); } catch (Exception ex) { // ignore } @@ -144,12 +144,12 @@ public class UnSubscribeProcessor implements HttpRequestProcessor { for (String unSubTopic : unSubTopicList) { List groupTopicClients = eventMeshHTTPServer.localClientInfoMapping - .get(consumerGroup + "@" + unSubTopic); + .get(consumerGroup + "@" + unSubTopic); Iterator clientIterator = groupTopicClients.iterator(); while (clientIterator.hasNext()) { Client client = clientIterator.next(); if (StringUtils.equals(client.pid, pid) - && StringUtils.equals(client.url, unSubscribeUrl)) { + && StringUtils.equals(client.url, unSubscribeUrl)) { httpLogger.warn("client {} start unsubscribe", JsonUtils.serialize(client)); clientIterator.remove(); } @@ -164,7 +164,7 @@ public class UnSubscribeProcessor implements HttpRequestProcessor { clientUrls.add(client.url); if (idcUrls.containsKey(client.idc)) { idcUrls.get(client.idc) - .add(StringUtils.deleteWhitespace(client.url)); + .add(StringUtils.deleteWhitespace(client.url)); } else { List urls = new ArrayList<>(); urls.add(client.url); @@ -175,18 +175,18 @@ public class UnSubscribeProcessor implements HttpRequestProcessor { } synchronized (eventMeshHTTPServer.localConsumerGroupMapping) { ConsumerGroupConf consumerGroupConf = - eventMeshHTTPServer.localConsumerGroupMapping.get(consumerGroup); + eventMeshHTTPServer.localConsumerGroupMapping.get(consumerGroup); Map map = - consumerGroupConf.getConsumerGroupTopicConf(); + consumerGroupConf.getConsumerGroupTopicConf(); for (String topicKey : map.keySet()) { // only modify the topic to subscribe if (StringUtils.equals(unSubTopic, topicKey)) { ConsumerGroupTopicConf latestTopicConf = - new ConsumerGroupTopicConf(); + new ConsumerGroupTopicConf(); latestTopicConf.setConsumerGroup(consumerGroup); latestTopicConf.setTopic(unSubTopic); latestTopicConf - .setSubscriptionItem(map.get(topicKey).getSubscriptionItem()); + .setSubscriptionItem(map.get(topicKey).getSubscriptionItem()); latestTopicConf.setUrls(clientUrls); latestTopicConf.setIdcUrls(idcUrls); @@ -195,7 +195,7 @@ public class UnSubscribeProcessor implements HttpRequestProcessor { } } eventMeshHTTPServer.localConsumerGroupMapping - .put(consumerGroup, consumerGroupConf); + .put(consumerGroup, consumerGroupConf); } } else { isChange = false; @@ -206,61 +206,61 @@ public class UnSubscribeProcessor implements HttpRequestProcessor { if (isChange) { try { eventMeshHTTPServer.getConsumerManager().notifyConsumerManager(consumerGroup, - eventMeshHTTPServer.localConsumerGroupMapping.get(consumerGroup)); + eventMeshHTTPServer.localConsumerGroupMapping.get(consumerGroup)); responseEventMeshCommand = - asyncContext.getRequest().createHttpCommandResponse(EventMeshRetCode.SUCCESS); + asyncContext.getRequest().createHttpCommandResponse(EventMeshRetCode.SUCCESS); asyncContext.onComplete(responseEventMeshCommand, handler); } catch (Exception e) { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( - unSubscribeResponseHeader, - UnSubscribeResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR.getErrMsg() - + EventMeshUtil.stackTrace(e, 2))); + unSubscribeResponseHeader, + UnSubscribeResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR.getErrMsg() + + EventMeshUtil.stackTrace(e, 2))); asyncContext.onComplete(err); long endTime = System.currentTimeMillis(); httpLogger.error( - "message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms" - + "|topic={}|bizSeqNo={}|uniqueId={}", endTime - startTime, - JsonUtils.serialize(unSubscribeRequestBody.getTopics()), - unSubscribeRequestBody.getUrl(), e); + "message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms" + + "|topic={}|bizSeqNo={}|uniqueId={}", endTime - startTime, + JsonUtils.serialize(unSubscribeRequestBody.getTopics()), + unSubscribeRequestBody.getUrl(), e); eventMeshHTTPServer.metrics.summaryMetrics.recordSendMsgFailed(); eventMeshHTTPServer.metrics.summaryMetrics - .recordSendMsgCost(endTime - startTime); + .recordSendMsgCost(endTime - startTime); } } else { //remove try { eventMeshHTTPServer.getConsumerManager() - .notifyConsumerManager(consumerGroup, null); + .notifyConsumerManager(consumerGroup, null); responseEventMeshCommand = - asyncContext.getRequest().createHttpCommandResponse(EventMeshRetCode.SUCCESS); + asyncContext.getRequest().createHttpCommandResponse(EventMeshRetCode.SUCCESS); asyncContext.onComplete(responseEventMeshCommand, handler); // clean ClientInfo eventMeshHTTPServer.localClientInfoMapping.keySet() - .removeIf(s -> StringUtils.contains(s, consumerGroup)); + .removeIf(s -> StringUtils.contains(s, consumerGroup)); // clean ConsumerGroupInfo eventMeshHTTPServer.localConsumerGroupMapping.keySet() - .removeIf(s -> StringUtils.equals(consumerGroup, s)); + .removeIf(s -> StringUtils.equals(consumerGroup, s)); } catch (Exception e) { HttpCommand err = asyncContext.getRequest().createHttpCommandResponse( - unSubscribeResponseHeader, - UnSubscribeResponseBody - .buildBody(EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR.getRetCode(), - EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR.getErrMsg() - + EventMeshUtil.stackTrace(e, 2))); + unSubscribeResponseHeader, + UnSubscribeResponseBody + .buildBody(EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR.getRetCode(), + EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR.getErrMsg() + + EventMeshUtil.stackTrace(e, 2))); asyncContext.onComplete(err); long endTime = System.currentTimeMillis(); httpLogger.error( - "message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms" - + "|topic={}|bizSeqNo={}|uniqueId={}", endTime - startTime, - JsonUtils.serialize(unSubscribeRequestBody.getTopics()), - unSubscribeRequestBody.getUrl(), e); + "message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms" + + "|topic={}|bizSeqNo={}|uniqueId={}", endTime - startTime, + JsonUtils.serialize(unSubscribeRequestBody.getTopics()), + unSubscribeRequestBody.getUrl(), e); eventMeshHTTPServer.metrics.summaryMetrics.recordSendMsgFailed(); eventMeshHTTPServer.metrics.summaryMetrics - .recordSendMsgCost(endTime - startTime); + .recordSendMsgCost(endTime - startTime); } } } @@ -289,7 +289,7 @@ public class UnSubscribeProcessor implements HttpRequestProcessor { String groupTopicKey = client.consumerGroup + "@" + client.topic; if (eventMeshHTTPServer.localClientInfoMapping.containsKey(groupTopicKey)) { List localClients = - eventMeshHTTPServer.localClientInfoMapping.get(groupTopicKey); + eventMeshHTTPServer.localClientInfoMapping.get(groupTopicKey); boolean isContains = false; for (Client localClient : localClients) { if (StringUtils.equals(localClient.url, client.url)) { diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/Client.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/Client.java index 58711b16d..119c1dea2 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/Client.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/Client.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.eventmesh.runtime.core.protocol.http.processor.inf; import java.util.Date; @@ -48,16 +49,16 @@ public class Client { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("endPoint={env=").append(env) - .append(",idc=").append(idc) - .append(",consumerGroup=").append(consumerGroup) - .append(",topic=").append(topic) - .append(",url=").append(url) - .append(",sys=").append(sys) - .append(",ip=").append(ip) - .append(",pid=").append(pid) - .append(",hostname=").append(hostname) - .append(",apiVersion=").append(apiVersion) - .append(",registerTime=").append("}"); + .append(",idc=").append(idc) + .append(",consumerGroup=").append(consumerGroup) + .append(",topic=").append(topic) + .append(",url=").append(url) + .append(",sys=").append(sys) + .append(",ip=").append(ip) + .append(",pid=").append(pid) + .append(",hostname=").append(hostname) + .append(",apiVersion=").append(apiVersion) + .append(",registerTime=").append("}"); return sb.toString(); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/HttpRequestProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/HttpRequestProcessor.java index 4f256d66e..41354f44c 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/HttpRequestProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/HttpRequestProcessor.java @@ -17,11 +17,14 @@ package org.apache.eventmesh.runtime.core.protocol.http.processor.inf; -import io.netty.channel.ChannelHandlerContext; - import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.runtime.core.protocol.http.async.AsyncContext; +import io.netty.channel.ChannelHandlerContext; + +/** + * HttpRequestProcessor + */ public interface HttpRequestProcessor { void processRequest(final ChannelHandlerContext ctx, final AsyncContext asyncContext) diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/EventMeshProducer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/EventMeshProducer.java index 34c8d7d5d..ff488d3fb 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/EventMeshProducer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/EventMeshProducer.java @@ -17,15 +17,16 @@ package org.apache.eventmesh.runtime.core.protocol.http.producer; -import java.util.Properties; -import java.util.concurrent.atomic.AtomicBoolean; - import org.apache.eventmesh.api.RequestReplyCallback; import org.apache.eventmesh.api.SendCallback; import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration; import org.apache.eventmesh.runtime.core.consumergroup.ProducerGroupConf; import org.apache.eventmesh.runtime.core.plugin.MQProducerWrapper; import org.apache.eventmesh.runtime.util.EventMeshUtil; + +import java.util.Properties; +import java.util.concurrent.atomic.AtomicBoolean; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -69,13 +70,15 @@ public class EventMeshProducer { return mqProducerWrapper; } - public synchronized void init(EventMeshHTTPConfiguration eventMeshHttpConfiguration, ProducerGroupConf producerGroupConfig) throws Exception { + public synchronized void init(EventMeshHTTPConfiguration eventMeshHttpConfiguration, + ProducerGroupConf producerGroupConfig) throws Exception { this.producerGroupConfig = producerGroupConfig; this.eventMeshHttpConfiguration = eventMeshHttpConfiguration; Properties keyValue = new Properties(); keyValue.put("producerGroup", producerGroupConfig.getGroupName()); - keyValue.put("instanceName", EventMeshUtil.buildMeshClientID(producerGroupConfig.getGroupName(), eventMeshHttpConfiguration.eventMeshCluster)); + keyValue.put("instanceName", EventMeshUtil.buildMeshClientID(producerGroupConfig.getGroupName(), + eventMeshHttpConfiguration.eventMeshCluster)); //TODO for defibus keyValue.put("eventMeshIDC", eventMeshHttpConfiguration.eventMeshIDC); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/ProducerManager.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/ProducerManager.java index 7e66dab93..ebf65b4e5 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/ProducerManager.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/ProducerManager.java @@ -17,10 +17,11 @@ package org.apache.eventmesh.runtime.core.protocol.http.producer; -import java.util.concurrent.ConcurrentHashMap; - import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.core.consumergroup.ProducerGroupConf; + +import java.util.concurrent.ConcurrentHashMap; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/SendMessageContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/SendMessageContext.java index 856995101..3153b5517 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/SendMessageContext.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/SendMessageContext.java @@ -17,22 +17,24 @@ package org.apache.eventmesh.runtime.core.protocol.http.producer; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import io.cloudevents.CloudEvent; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.api.SendCallback; import org.apache.eventmesh.api.SendResult; import org.apache.eventmesh.api.exception.OnExceptionContext; import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.core.protocol.http.retry.RetryContext; + +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cloudevents.CloudEvent; + public class SendMessageContext extends RetryContext { public static Logger logger = LoggerFactory.getLogger("retry"); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AbstractHTTPPushRequest.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AbstractHTTPPushRequest.java index e7294b837..dd60a622c 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AbstractHTTPPushRequest.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AbstractHTTPPushRequest.java @@ -17,16 +17,6 @@ package org.apache.eventmesh.runtime.core.protocol.http.push; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.atomic.AtomicBoolean; - -import com.google.common.collect.Lists; - -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.RandomUtils; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration; import org.apache.eventmesh.runtime.constants.EventMeshConstants; @@ -34,6 +24,17 @@ import org.apache.eventmesh.runtime.core.protocol.http.consumer.HandleMsgContext import org.apache.eventmesh.runtime.core.protocol.http.retry.HttpRetryer; import org.apache.eventmesh.runtime.core.protocol.http.retry.RetryContext; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.RandomUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; + +import com.google.common.collect.Lists; + public abstract class AbstractHTTPPushRequest extends RetryContext { public EventMeshHTTPServer eventMeshHTTPServer; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AsyncHTTPPushRequest.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AsyncHTTPPushRequest.java index 43750ad44..8d687a2c6 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AsyncHTTPPushRequest.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AsyncHTTPPushRequest.java @@ -17,21 +17,19 @@ package org.apache.eventmesh.runtime.core.protocol.http.push; -import io.cloudevents.CloudEvent; -import io.cloudevents.core.builder.CloudEventBuilder; import org.apache.eventmesh.common.Constants; -import org.apache.eventmesh.common.protocol.http.HttpCommand; -import org.apache.eventmesh.common.utils.IPUtils; -import org.apache.eventmesh.common.protocol.ProtocolTransportObject; -import org.apache.eventmesh.common.utils.RandomStringUtils; import org.apache.eventmesh.common.exception.JsonException; +import org.apache.eventmesh.common.protocol.ProtocolTransportObject; import org.apache.eventmesh.common.protocol.SubscriptionType; +import org.apache.eventmesh.common.protocol.http.HttpCommand; import org.apache.eventmesh.common.protocol.http.body.message.PushMessageRequestBody; import org.apache.eventmesh.common.protocol.http.common.ClientRetCode; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.common.RequestCode; +import org.apache.eventmesh.common.utils.IPUtils; import org.apache.eventmesh.common.utils.JsonUtils; +import org.apache.eventmesh.common.utils.RandomStringUtils; import org.apache.eventmesh.protocol.api.ProtocolAdaptor; import org.apache.eventmesh.protocol.api.ProtocolPluginFactory; import org.apache.eventmesh.runtime.constants.EventMeshConstants; @@ -52,11 +50,18 @@ import org.apache.http.util.EntityUtils; import java.io.IOException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cloudevents.CloudEvent; +import io.cloudevents.core.builder.CloudEventBuilder; + import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.collect.Sets; @@ -101,13 +106,13 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { builder.addHeader(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA); builder.addHeader(ProtocolKey.VERSION, ProtocolVersion.V1.getVersion()); builder.addHeader(ProtocolKey.EventMeshInstanceKey.EVENTMESHCLUSTER, - handleMsgContext.getEventMeshHTTPServer() - .getEventMeshHttpConfiguration().eventMeshCluster); + handleMsgContext.getEventMeshHTTPServer() + .getEventMeshHttpConfiguration().eventMeshCluster); builder.addHeader(ProtocolKey.EventMeshInstanceKey.EVENTMESHIP, IPUtils.getLocalAddress()); builder.addHeader(ProtocolKey.EventMeshInstanceKey.EVENTMESHENV, - handleMsgContext.getEventMeshHTTPServer().getEventMeshHttpConfiguration().eventMeshEnv); + handleMsgContext.getEventMeshHTTPServer().getEventMeshHttpConfiguration().eventMeshEnv); builder.addHeader(ProtocolKey.EventMeshInstanceKey.EVENTMESHIDC, - handleMsgContext.getEventMeshHTTPServer().getEventMeshHttpConfiguration().eventMeshIDC); + handleMsgContext.getEventMeshHTTPServer().getEventMeshHttpConfiguration().eventMeshIDC); CloudEvent event = CloudEventBuilder.from(handleMsgContext.getEvent()) .withExtension(EventMeshConstants.REQ_EVENTMESH2C_TIMESTAMP, @@ -122,7 +127,7 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { ProtocolAdaptor protocolAdaptor = ProtocolPluginFactory.getProtocolAdaptor(protocolType); ProtocolTransportObject protocolTransportObject = - protocolAdaptor.fromCloudEvent(handleMsgContext.getEvent()); + protocolAdaptor.fromCloudEvent(handleMsgContext.getEvent()); content = ((HttpCommand) protocolTransportObject).getBody().toMap().get("content").toString(); } catch (Exception ex) { return; @@ -132,25 +137,25 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { body.add(new BasicNameValuePair(PushMessageRequestBody.CONTENT, content)); if (StringUtils.isBlank(handleMsgContext.getBizSeqNo())) { body.add(new BasicNameValuePair(PushMessageRequestBody.BIZSEQNO, - RandomStringUtils.generateNum(20))); + RandomStringUtils.generateNum(20))); } else { body.add(new BasicNameValuePair(PushMessageRequestBody.BIZSEQNO, - handleMsgContext.getBizSeqNo())); + handleMsgContext.getBizSeqNo())); } if (StringUtils.isBlank(handleMsgContext.getUniqueId())) { body.add(new BasicNameValuePair(PushMessageRequestBody.UNIQUEID, - RandomStringUtils.generateNum(20))); + RandomStringUtils.generateNum(20))); } else { body.add(new BasicNameValuePair(PushMessageRequestBody.UNIQUEID, - handleMsgContext.getUniqueId())); + handleMsgContext.getUniqueId())); } body.add(new BasicNameValuePair(PushMessageRequestBody.RANDOMNO, - handleMsgContext.getMsgRandomNo())); + handleMsgContext.getMsgRandomNo())); body.add(new BasicNameValuePair(PushMessageRequestBody.TOPIC, handleMsgContext.getTopic())); body.add(new BasicNameValuePair(PushMessageRequestBody.EXTFIELDS, - JsonUtils.serialize(EventMeshUtil.getEventProp(handleMsgContext.getEvent())))); + JsonUtils.serialize(EventMeshUtil.getEventProp(handleMsgContext.getEvent())))); builder.setEntity(new UrlEncodedFormEntity(body, StandardCharsets.UTF_8)); @@ -161,7 +166,7 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { addToWaitingMap(this); cmdLogger.info("cmd={}|eventMesh2client|from={}|to={}", requestCode, - IPUtils.getLocalAddress(), currPushUrl); + IPUtils.getLocalAddress(), currPushUrl); try { httpClientPool.getClient().execute(builder, new ResponseHandler() { @@ -173,9 +178,9 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { eventMeshHTTPServer.metrics.summaryMetrics.recordHttpPushMsgFailed(); messageLogger.info( - "message|eventMesh2client|exception|url={}|topic={}|bizSeqNo={}" - + "|uniqueId={}|cost={}", currPushUrl, handleMsgContext.getTopic(), - handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), cost); + "message|eventMesh2client|exception|url={}|topic={}|bizSeqNo={}" + + "|uniqueId={}|cost={}", currPushUrl, handleMsgContext.getTopic(), + handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), cost); delayRetry(); if (isComplete()) { @@ -185,17 +190,17 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { String res = ""; try { res = EntityUtils.toString(response.getEntity(), - Charset.forName(EventMeshConstants.DEFAULT_CHARSET)); + Charset.forName(EventMeshConstants.DEFAULT_CHARSET)); } catch (IOException e) { handleMsgContext.finish(); return new Object(); } ClientRetCode result = processResponseContent(res); messageLogger.info( - "message|eventMesh2client|{}|url={}|topic={}|bizSeqNo={}" - + "|uniqueId={}|cost={}", - result, currPushUrl, handleMsgContext.getTopic(), - handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), cost); + "message|eventMesh2client|{}|url={}|topic={}|bizSeqNo={}" + + "|uniqueId={}|cost={}", + result, currPushUrl, handleMsgContext.getTopic(), + handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), cost); if (result == ClientRetCode.OK) { complete(); if (isComplete()) { @@ -224,13 +229,13 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { if (messageLogger.isDebugEnabled()) { messageLogger.debug("message|eventMesh2client|url={}|topic={}|event={}", currPushUrl, - handleMsgContext.getTopic(), - handleMsgContext.getEvent()); + handleMsgContext.getTopic(), + handleMsgContext.getEvent()); } else { messageLogger - .info("message|eventMesh2client|url={}|topic={}|bizSeqNo={}|uniqueId={}", - currPushUrl, handleMsgContext.getTopic(), - handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId()); + .info("message|eventMesh2client|url={}|topic={}|bizSeqNo={}|uniqueId={}", + currPushUrl, handleMsgContext.getTopic(), + handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId()); } } catch (IOException e) { messageLogger.error("push2client err", e); @@ -246,16 +251,16 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { public String toString() { StringBuilder sb = new StringBuilder(); sb.append("asyncPushRequest={") - .append("bizSeqNo=").append(handleMsgContext.getBizSeqNo()) - .append(",startIdx=").append(startIdx) - .append(",retryTimes=").append(retryTimes) - .append(",uniqueId=").append(handleMsgContext.getUniqueId()) - .append(",executeTime=") - .append(DateFormatUtils.format(executeTime, Constants.DATE_FORMAT)) - .append(",lastPushTime=") - .append(DateFormatUtils.format(lastPushTime, Constants.DATE_FORMAT)) - .append(",createTime=") - .append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT)).append("}"); + .append("bizSeqNo=").append(handleMsgContext.getBizSeqNo()) + .append(",startIdx=").append(startIdx) + .append(",retryTimes=").append(retryTimes) + .append(",uniqueId=").append(handleMsgContext.getUniqueId()) + .append(",executeTime=") + .append(DateFormatUtils.format(executeTime, Constants.DATE_FORMAT)) + .append(",lastPushTime=") + .append(DateFormatUtils.format(lastPushTime, Constants.DATE_FORMAT)) + .append(",createTime=") + .append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT)).append("}"); return sb.toString(); } @@ -266,8 +271,8 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { try { Map ret = - JsonUtils.deserialize(content, new TypeReference>() { - }); + JsonUtils.deserialize(content, new TypeReference>() { + }); Integer retCode = (Integer) ret.get("retCode"); if (retCode != null && ClientRetCode.contains(retCode)) { return ClientRetCode.get(retCode); @@ -276,15 +281,15 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { return ClientRetCode.FAIL; } catch (NumberFormatException e) { messageLogger.warn("url:{}, bizSeqno:{}, uniqueId:{}, httpResponse:{}", currPushUrl, - handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), content); + handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), content); return ClientRetCode.FAIL; } catch (JsonException e) { messageLogger.warn("url:{}, bizSeqno:{}, uniqueId:{}, httpResponse:{}", currPushUrl, - handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), content); + handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), content); return ClientRetCode.FAIL; } catch (Throwable t) { messageLogger.warn("url:{}, bizSeqno:{}, uniqueId:{}, httpResponse:{}", currPushUrl, - handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), content); + handleMsgContext.getBizSeqNo(), handleMsgContext.getUniqueId(), content); return ClientRetCode.FAIL; } } @@ -295,7 +300,7 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest { return; } waitingRequests - .put(request.handleMsgContext.getConsumerGroup(), Sets.newConcurrentHashSet()); + .put(request.handleMsgContext.getConsumerGroup(), Sets.newConcurrentHashSet()); waitingRequests.get(request.handleMsgContext.getConsumerGroup()).add(request); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/HTTPClientPool.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/HTTPClientPool.java index c2480f92d..28eec0ab0 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/HTTPClientPool.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/HTTPClientPool.java @@ -17,16 +17,16 @@ package org.apache.eventmesh.runtime.core.protocol.http.push; -import java.util.Iterator; -import java.util.List; - -import com.google.common.collect.Lists; - import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.RandomUtils; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; +import java.util.Iterator; +import java.util.List; + +import com.google.common.collect.Lists; + public class HTTPClientPool { private List clients = Lists.newArrayList(); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/HTTPMessageHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/HTTPMessageHandler.java index f0e0ee87f..1bdfd7f62 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/HTTPMessageHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/HTTPMessageHandler.java @@ -17,6 +17,12 @@ package org.apache.eventmesh.runtime.core.protocol.http.push; +import org.apache.eventmesh.common.ThreadPoolFactory; +import org.apache.eventmesh.runtime.core.protocol.http.consumer.EventMeshConsumer; +import org.apache.eventmesh.runtime.core.protocol.http.consumer.HandleMsgContext; + +import org.apache.commons.collections4.MapUtils; + import java.util.Map; import java.util.Set; import java.util.concurrent.RejectedExecutionException; @@ -24,16 +30,12 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -import org.apache.commons.collections4.MapUtils; -import org.apache.eventmesh.common.ThreadPoolFactory; -import org.apache.eventmesh.runtime.core.protocol.http.consumer.EventMeshConsumer; -import org.apache.eventmesh.runtime.core.protocol.http.consumer.HandleMsgContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; + public class HTTPMessageHandler implements MessageHandler { public Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -44,7 +46,7 @@ public class HTTPMessageHandler implements MessageHandler { private ThreadPoolExecutor pushExecutor; - private final Integer CONSUMER_GROUP_WAITING_REQUEST_THRESHOLD = 10000; + private static final Integer CONSUMER_GROUP_WAITING_REQUEST_THRESHOLD = 10000; private void checkTimeout() { waitingRequests.entrySet().stream().forEach(entry -> { @@ -81,7 +83,8 @@ public class HTTPMessageHandler implements MessageHandler { }); return true; } catch (RejectedExecutionException e) { - logger.warn("pushMsgThreadPoolQueue is full, so reject, current task size {}", handleMsgContext.getEventMeshHTTPServer().getPushMsgExecutor().getQueue().size(), e); + logger.warn("pushMsgThreadPoolQueue is full, so reject, current task size {}", + handleMsgContext.getEventMeshHTTPServer().getPushMsgExecutor().getQueue().size(), e); return false; } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/MessageHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/MessageHandler.java index 403ed8e3f..bf29c0e5e 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/MessageHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/MessageHandler.java @@ -19,6 +19,9 @@ package org.apache.eventmesh.runtime.core.protocol.http.push; import org.apache.eventmesh.runtime.core.protocol.http.consumer.HandleMsgContext; +/** + * MessageHandler + */ public interface MessageHandler { boolean handle(HandleMsgContext handleMsgContext); } \ No newline at end of file diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/retry/DelayRetryable.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/retry/DelayRetryable.java index 194322576..f79a6c200 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/retry/DelayRetryable.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/retry/DelayRetryable.java @@ -19,6 +19,9 @@ package org.apache.eventmesh.runtime.core.protocol.http.retry; import java.util.concurrent.Delayed; +/** + * DelayRetryable + */ public interface DelayRetryable extends Delayed { boolean retry() throws Exception; } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/retry/HttpRetryer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/retry/HttpRetryer.java index 9faaece99..e4d09d2cb 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/retry/HttpRetryer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/retry/HttpRetryer.java @@ -17,6 +17,8 @@ package org.apache.eventmesh.runtime.core.protocol.http.retry; +import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; + import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.DelayQueue; import java.util.concurrent.ThreadFactory; @@ -24,7 +26,6 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -58,7 +59,8 @@ public class HttpRetryer { pool = new ThreadPoolExecutor(eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshServerRetryThreadNum, eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshServerRetryThreadNum, 60000, - TimeUnit.MILLISECONDS, new ArrayBlockingQueue(eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshServerRetryBlockQSize), + TimeUnit.MILLISECONDS, new ArrayBlockingQueue( + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshServerRetryBlockQSize), new ThreadFactory() { private AtomicInteger count = new AtomicInteger(); @@ -69,7 +71,8 @@ public class HttpRetryer { thread.setDaemon(true); return thread; } - }, new ThreadPoolExecutor.AbortPolicy()); + }, + new ThreadPoolExecutor.AbortPolicy()); dispatcher = new Thread(new Runnable() { @Override diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcp2Client.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcp2Client.java index 8c71b587d..0d300f7c8 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcp2Client.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcp2Client.java @@ -53,8 +53,8 @@ public class EventMeshTcp2Client { long startTime = System.currentTimeMillis(); Package msg = new Package(); msg.setHeader( - new Header(SERVER_GOODBYE_REQUEST, OPStatus.SUCCESS.getCode(), "graceful normal quit from eventmesh", - null)); + new Header(SERVER_GOODBYE_REQUEST, OPStatus.SUCCESS.getCode(), "graceful normal quit from eventmesh", + null)); eventMeshTCPServer.getScheduler().submit(new Runnable() { @Override @@ -108,24 +108,24 @@ public class EventMeshTcp2Client { eventMeshTcpMonitor.getEventMesh2clientMsgNum().incrementAndGet(); logger.info("goodBye2Client client[{}]", RemotingHelper.parseChannelRemoteAddr(ctx.channel())); ctx.writeAndFlush(pkg).addListener( - new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) throws Exception { - Utils.logSucceedMessageFlow(pkg, null, startTime, startTime); - try { - mapping.closeSession(ctx); - } catch (Exception e) { - logger.warn("close session failed!", e); + new ChannelFutureListener() { + @Override + public void operationComplete(ChannelFuture future) throws Exception { + Utils.logSucceedMessageFlow(pkg, null, startTime, startTime); + try { + mapping.closeSession(ctx); + } catch (Exception e) { + logger.warn("close session failed!", e); + } } } - } ); } public static String redirectClient2NewEventMesh(EventMeshTCPServer eventMeshTCPServer, String newEventMeshIp, int port, Session session, ClientSessionGroupMapping mapping) { logger.info("begin to gracefully redirect Client {}, newIPPort[{}]", session.getClient(), - newEventMeshIp + ":" + port); + newEventMeshIp + ":" + port); try { long startTime = System.currentTimeMillis(); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpConnectionHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpConnectionHandler.java index f091ac41a..685abc6a6 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpConnectionHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpConnectionHandler.java @@ -17,18 +17,19 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client; +import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; +import org.apache.eventmesh.runtime.util.RemotingHelper; + import java.util.concurrent.atomic.AtomicInteger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import io.netty.channel.ChannelDuplexHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.timeout.IdleState; import io.netty.handler.timeout.IdleStateEvent; -import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.util.RemotingHelper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class EventMeshTcpConnectionHandler extends ChannelDuplexHandler { public static AtomicInteger connections = new AtomicInteger(0); @@ -60,7 +61,8 @@ public class EventMeshTcpConnectionHandler extends ChannelDuplexHandler { int c = connections.incrementAndGet(); if (c > eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshTcpClientMaxNum) { - logger.warn("client|tcp|channelActive|remoteAddress={}|msg={}", remoteAddress, "too many client connect " + + logger.warn("client|tcp|channelActive|remoteAddress={}|msg={}", remoteAddress, "too many client connect " + + "this eventMesh server"); ctx.close(); return; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpExceptionHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpExceptionHandler.java index d6ed12a30..d9aace846 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpExceptionHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpExceptionHandler.java @@ -17,16 +17,17 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client; -import io.netty.channel.ChannelDuplexHandler; -import io.netty.channel.ChannelHandlerContext; - import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelDuplexHandler; +import io.netty.channel.ChannelHandlerContext; + public class EventMeshTcpExceptionHandler extends ChannelDuplexHandler { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -49,9 +50,11 @@ public class EventMeshTcpExceptionHandler extends ChannelDuplexHandler { } if (session != null) { - EventMeshTcp2Client.goodBye2Client(eventMeshTCPServer, session, errMsg, OPStatus.FAIL.getCode(), eventMeshTCPServer.getClientSessionGroupMapping()); + EventMeshTcp2Client.goodBye2Client(eventMeshTCPServer, session, errMsg, OPStatus.FAIL.getCode(), + eventMeshTCPServer.getClientSessionGroupMapping()); } else { - EventMeshTcp2Client.goodBye2Client(ctx, errMsg, eventMeshTCPServer.getClientSessionGroupMapping(), eventMeshTCPServer.getEventMeshTcpMonitor()); + EventMeshTcp2Client.goodBye2Client(ctx, errMsg, eventMeshTCPServer.getClientSessionGroupMapping(), + eventMeshTCPServer.getEventMeshTcpMonitor()); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpMessageDispatcher.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpMessageDispatcher.java index 83497bc07..8b6c6e705 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpMessageDispatcher.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/EventMeshTcpMessageDispatcher.java @@ -17,18 +17,30 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; - -import org.apache.eventmesh.common.protocol.tcp.*; +import org.apache.eventmesh.common.protocol.tcp.Command; +import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; +import org.apache.eventmesh.common.protocol.tcp.Header; +import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.SessionState; -import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.*; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.GoodbyeTask; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.HeartBeatTask; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.HelloTask; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.ListenTask; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.MessageAckTask; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.MessageTransferTask; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.RecommendTask; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.SubscribeTask; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.task.UnSubscribeTask; import org.apache.eventmesh.runtime.util.EventMeshUtil; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; + public class EventMeshTcpMessageDispatcher extends SimpleChannelInboundHandler { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -79,18 +91,18 @@ public class EventMeshTcpMessageDispatcher extends SimpleChannelInboundHandler

> topic2sessionInGroupMapping = - new ConcurrentHashMap>(); + new ConcurrentHashMap>(); public AtomicBoolean producerStarted = new AtomicBoolean(Boolean.FALSE); @@ -111,11 +122,11 @@ public class ClientGroupWrapper { this.eventMeshTcpMonitor = eventMeshTCPServer.getEventMeshTcpMonitor(); this.downstreamDispatchStrategy = downstreamDispatchStrategy; this.persistentMsgConsumer = new MQConsumerWrapper( - eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshConnectorPluginType); + eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshConnectorPluginType); this.broadCastMsgConsumer = new MQConsumerWrapper( - eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshConnectorPluginType); + eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshConnectorPluginType); this.mqProducerWrapper = new MQProducerWrapper( - eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshConnectorPluginType); + eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshConnectorPluginType); } public ConcurrentHashMap> getTopic2sessionInGroupMapping() { @@ -137,13 +148,13 @@ public class ClientGroupWrapper { } public boolean send(UpStreamMsgContext upStreamMsgContext, SendCallback sendCallback) - throws Exception { + throws Exception { mqProducerWrapper.send(upStreamMsgContext.getEvent(), sendCallback); return true; } public void request(UpStreamMsgContext upStreamMsgContext, RequestReplyCallback rrCallback, long timeout) - throws Exception { + throws Exception { mqProducerWrapper.request(upStreamMsgContext.getEvent(), rrCallback, timeout); } @@ -158,8 +169,8 @@ public class ClientGroupWrapper { public void onException(OnExceptionContext context) { String bizSeqNo = (String) upStreamMsgContext.getEvent().getExtension(EventMeshConstants.PROPERTY_MESSAGE_KEYS); logger.error("reply err! topic:{}, bizSeqNo:{}, client:{}", - upStreamMsgContext.getEvent().getSubject(), bizSeqNo, - upStreamMsgContext.getSession().getClient(), context.getException()); + upStreamMsgContext.getEvent().getSubject(), bizSeqNo, + upStreamMsgContext.getSession().getClient(), context.getException()); } }); return true; @@ -171,7 +182,7 @@ public class ClientGroupWrapper { public boolean addSubscription(String topic, Session session) throws Exception { if (session == null || !StringUtils.equalsIgnoreCase(consumerGroup, - EventMeshUtil.buildClientGroup(session.getClient().getConsumerGroup()))) { + EventMeshUtil.buildClientGroup(session.getClient().getConsumerGroup()))) { logger.error("addSubscription param error,topic:{},session:{}", topic, session); return false; } @@ -186,15 +197,15 @@ public class ClientGroupWrapper { r = topic2sessionInGroupMapping.get(topic).add(session); if (r) { logger.info("addSubscription success, group:{} topic:{} client:{}", consumerGroup, - topic, session.getClient()); + topic, session.getClient()); } else { logger - .warn("addSubscription fail, group:{} topic:{} client:{}", consumerGroup, topic, - session.getClient()); + .warn("addSubscription fail, group:{} topic:{} client:{}", consumerGroup, topic, + session.getClient()); } } catch (Exception e) { logger - .error("addSubscription error! topic:{} client:{}", topic, session.getClient(), e); + .error("addSubscription error! topic:{} client:{}", topic, session.getClient(), e); throw new Exception("addSubscription fail"); } finally { this.groupLock.writeLock().unlock(); @@ -204,8 +215,8 @@ public class ClientGroupWrapper { public boolean removeSubscription(String topic, Session session) { if (session == null - || !StringUtils.equalsIgnoreCase(consumerGroup, - EventMeshUtil.buildClientGroup(session.getClient().getConsumerGroup()))) { + || !StringUtils.equalsIgnoreCase(consumerGroup, + EventMeshUtil.buildClientGroup(session.getClient().getConsumerGroup()))) { logger.error("removeSubscription param error,topic:{},session:{}", topic, session); return false; } @@ -217,22 +228,22 @@ public class ClientGroupWrapper { r = topic2sessionInGroupMapping.get(topic).remove(session); if (r) { logger.info( - "removeSubscription remove session success, group:{} topic:{} client:{}", - consumerGroup, topic, session.getClient()); + "removeSubscription remove session success, group:{} topic:{} client:{}", + consumerGroup, topic, session.getClient()); } else { logger.warn( - "removeSubscription remove session failed, group:{} topic:{} client:{}", - consumerGroup, topic, session.getClient()); + "removeSubscription remove session failed, group:{} topic:{} client:{}", + consumerGroup, topic, session.getClient()); } } if (CollectionUtils.size(topic2sessionInGroupMapping.get(topic)) == 0) { topic2sessionInGroupMapping.remove(topic); logger.info("removeSubscription remove topic success, group:{} topic:{}", - consumerGroup, topic); + consumerGroup, topic); } } catch (Exception e) { logger.error("removeSubscription error! topic:{} client:{}", topic, session.getClient(), - e); + e); } finally { this.groupLock.writeLock().unlock(); } @@ -247,7 +258,7 @@ public class ClientGroupWrapper { Properties keyValue = new Properties(); keyValue.put("producerGroup", producerGroup); keyValue.put("instanceName", EventMeshUtil - .buildMeshTcpClientID(sysId, "PUB", eventMeshTCPConfiguration.eventMeshCluster)); + .buildMeshTcpClientID(sysId, "PUB", eventMeshTCPConfiguration.eventMeshCluster)); //TODO for defibus keyValue.put("eventMeshIDC", eventMeshTCPConfiguration.eventMeshIDC); @@ -285,8 +296,8 @@ public class ClientGroupWrapper { public boolean addGroupConsumerSession(Session session) { if (session == null - || !StringUtils.equalsIgnoreCase(consumerGroup, - EventMeshUtil.buildClientGroup(session.getClient().getConsumerGroup()))) { + || !StringUtils.equalsIgnoreCase(consumerGroup, + EventMeshUtil.buildClientGroup(session.getClient().getConsumerGroup()))) { logger.error("addGroupConsumerSession param error,session:{}", session); return false; } @@ -297,11 +308,11 @@ public class ClientGroupWrapper { r = groupConsumerSessions.add(session); if (r) { logger.info("addGroupConsumerSession success, group:{} client:{}", consumerGroup, - session.getClient()); + session.getClient()); } } catch (Exception e) { logger.error("addGroupConsumerSession error! group:{} client:{}", consumerGroup, - session.getClient(), e); + session.getClient(), e); } finally { this.groupLock.writeLock().unlock(); } @@ -310,8 +321,8 @@ public class ClientGroupWrapper { public boolean addGroupProducerSession(Session session) { if (session == null - || !StringUtils.equalsIgnoreCase(producerGroup, - EventMeshUtil.buildClientGroup(session.getClient().getProducerGroup()))) { + || !StringUtils.equalsIgnoreCase(producerGroup, + EventMeshUtil.buildClientGroup(session.getClient().getProducerGroup()))) { logger.error("addGroupProducerSession param error,session:{}", session); return false; } @@ -322,11 +333,11 @@ public class ClientGroupWrapper { r = groupProducerSessions.add(session); if (r) { logger.info("addGroupProducerSession success, group:{} client:{}", producerGroup, - session.getClient()); + session.getClient()); } } catch (Exception e) { logger.error("addGroupProducerSession error! group:{} client:{}", producerGroup, - session.getClient(), e); + session.getClient(), e); } finally { this.groupLock.writeLock().unlock(); } @@ -335,8 +346,8 @@ public class ClientGroupWrapper { public boolean removeGroupConsumerSession(Session session) { if (session == null - || !StringUtils.equalsIgnoreCase(consumerGroup, - EventMeshUtil.buildClientGroup(session.getClient().getConsumerGroup()))) { + || !StringUtils.equalsIgnoreCase(consumerGroup, + EventMeshUtil.buildClientGroup(session.getClient().getConsumerGroup()))) { logger.error("removeGroupConsumerSession param error,session:{}", session); return false; } @@ -347,11 +358,11 @@ public class ClientGroupWrapper { r = groupConsumerSessions.remove(session); if (r) { logger.info("removeGroupConsumerSession success, group:{} client:{}", consumerGroup, - session.getClient()); + session.getClient()); } } catch (Exception e) { logger.error("removeGroupConsumerSession error! group:{} client:{}", consumerGroup, - session.getClient(), e); + session.getClient(), e); } finally { this.groupLock.writeLock().unlock(); } @@ -360,8 +371,8 @@ public class ClientGroupWrapper { public boolean removeGroupProducerSession(Session session) { if (session == null - || !StringUtils.equalsIgnoreCase(producerGroup, - EventMeshUtil.buildClientGroup(session.getClient().getProducerGroup()))) { + || !StringUtils.equalsIgnoreCase(producerGroup, + EventMeshUtil.buildClientGroup(session.getClient().getProducerGroup()))) { logger.error("removeGroupProducerSession param error,session:{}", session); return false; } @@ -372,11 +383,11 @@ public class ClientGroupWrapper { r = groupProducerSessions.remove(session); if (r) { logger.info("removeGroupProducerSession success, group:{} client:{}", producerGroup, - session.getClient()); + session.getClient()); } } catch (Exception e) { logger.error("removeGroupProducerSession error! group:{} client:{}", producerGroup, - session.getClient(), e); + session.getClient(), e); } finally { this.groupLock.writeLock().unlock(); } @@ -394,7 +405,7 @@ public class ClientGroupWrapper { keyValue.put("consumerGroup", consumerGroup); keyValue.put("eventMeshIDC", eventMeshTCPConfiguration.eventMeshIDC); keyValue.put("instanceName", EventMeshUtil - .buildMeshTcpClientID(sysId, "SUB", eventMeshTCPConfiguration.eventMeshCluster)); + .buildMeshTcpClientID(sysId, "SUB", eventMeshTCPConfiguration.eventMeshCluster)); persistentMsgConsumer.init(keyValue); @@ -421,7 +432,7 @@ public class ClientGroupWrapper { keyValue.put("consumerGroup", consumerGroup); keyValue.put("eventMeshIDC", eventMeshTCPConfiguration.eventMeshIDC); keyValue.put("instanceName", EventMeshUtil - .buildMeshTcpClientID(sysId, "SUB", eventMeshTCPConfiguration.eventMeshCluster)); + .buildMeshTcpClientID(sysId, "SUB", eventMeshTCPConfiguration.eventMeshCluster)); broadCastMsgConsumer.init(keyValue); inited4Broadcast.compareAndSet(false, true); @@ -447,18 +458,18 @@ public class ClientGroupWrapper { eventMeshTcpMonitor.getMq2EventMeshMsgNum().incrementAndGet(); event = CloudEventBuilder.from(event) .withExtension(EventMeshConstants.REQ_MQ2EVENTMESH_TIMESTAMP, - String.valueOf(System.currentTimeMillis())) + String.valueOf(System.currentTimeMillis())) .withExtension(EventMeshConstants.REQ_RECEIVE_EVENTMESH_IP, eventMeshTCPConfiguration.eventMeshServerIp).build(); String topic = event.getSubject(); -// message.getSystemProperties(Constants.PROPERTY_MESSAGE_DESTINATION); -// message.getSystemProperties().put(EventMeshConstants.REQ_MQ2EVENTMESH_TIMESTAMP, -// String.valueOf(System.currentTimeMillis())); -// message.getSystemProperties().put(EventMeshConstants.REQ_RECEIVE_EVENTMESH_IP, -// eventMeshTCPConfiguration.eventMeshServerIp); + // message.getSystemProperties(Constants.PROPERTY_MESSAGE_DESTINATION); + //message.getSystemProperties().put(EventMeshConstants.REQ_MQ2EVENTMESH_TIMESTAMP, + // String.valueOf(System.currentTimeMillis())); + //message.getSystemProperties().put(EventMeshConstants.REQ_RECEIVE_EVENTMESH_IP, + // eventMeshTCPConfiguration.eventMeshServerIp); EventMeshAsyncConsumeContext eventMeshAsyncConsumeContext = - (EventMeshAsyncConsumeContext) context; + (EventMeshAsyncConsumeContext) context; if (CollectionUtils.isEmpty(groupConsumerSessions)) { logger.warn("found no session to downstream broadcast msg"); eventMeshAsyncConsumeContext.commit(EventMeshAction.CommitMessage); @@ -468,17 +479,17 @@ public class ClientGroupWrapper { Iterator sessionsItr = groupConsumerSessions.iterator(); DownStreamMsgContext downStreamMsgContext = - new DownStreamMsgContext(event, null, broadCastMsgConsumer, - eventMeshAsyncConsumeContext.getAbstractContext(), false, - subscriptionItem); + new DownStreamMsgContext(event, null, broadCastMsgConsumer, + eventMeshAsyncConsumeContext.getAbstractContext(), false, + subscriptionItem); while (sessionsItr.hasNext()) { Session session = sessionsItr.next(); if (!session.isAvailable(topic)) { logger - .warn("downstream broadcast msg,session is not available,client:{}", - session.getClient()); + .warn("downstream broadcast msg,session is not available,client:{}", + session.getClient()); continue; } @@ -486,15 +497,15 @@ public class ClientGroupWrapper { //downstream broadcast msg asynchronously eventMeshTCPServer.getBroadcastMsgDownstreamExecutorService() - .submit(new Runnable() { - @Override - public void run() { - //msg put in eventmesh,waiting client ack - session.getPusher() - .unAckMsg(downStreamMsgContext.seq, downStreamMsgContext); - session.downstreamMsg(downStreamMsgContext); - } - }); + .submit(new Runnable() { + @Override + public void run() { + //msg put in eventmesh,waiting client ack + session.getPusher() + .unAckMsg(downStreamMsgContext.seq, downStreamMsgContext); + session.downstreamMsg(downStreamMsgContext); + } + }); } eventMeshAsyncConsumeContext.commit(EventMeshAction.ManualAck); @@ -514,9 +525,9 @@ public class ClientGroupWrapper { String topic = event.getSubject(); EventMeshAsyncConsumeContext eventMeshAsyncConsumeContext = - (EventMeshAsyncConsumeContext) context; + (EventMeshAsyncConsumeContext) context; Session session = downstreamDispatchStrategy - .select(consumerGroup, topic, groupConsumerSessions); + .select(consumerGroup, topic, groupConsumerSessions); String bizSeqNo = EventMeshUtil.getMessageBizSeq(event); if (session == null) { try { @@ -532,19 +543,19 @@ public class ClientGroupWrapper { } logger.error( - "found no session to downstream msg,groupName:{}, topic:{}, " - + "bizSeqNo:{}, sendBackTimes:{}, sendBackFromEventMeshIp:{}", - consumerGroup, topic, bizSeqNo, sendBackTimes, - sendBackFromEventMeshIp); + "found no session to downstream msg,groupName:{}, topic:{}, " + + "bizSeqNo:{}, sendBackTimes:{}, sendBackFromEventMeshIp:{}", + consumerGroup, topic, bizSeqNo, sendBackTimes, + sendBackFromEventMeshIp); if (sendBackTimes >= eventMeshTCPServer - .getEventMeshTCPConfiguration().eventMeshTcpSendBackMaxTimes) { + .getEventMeshTCPConfiguration().eventMeshTcpSendBackMaxTimes) { logger.error( - "sendBack to broker over max times:{}, groupName:{}, topic:{}, " - + "bizSeqNo:{}", eventMeshTCPServer - .getEventMeshTCPConfiguration() - .eventMeshTcpSendBackMaxTimes, - consumerGroup, topic, bizSeqNo); + "sendBack to broker over max times:{}, groupName:{}, topic:{}, " + + "bizSeqNo:{}", eventMeshTCPServer + .getEventMeshTCPConfiguration() + .eventMeshTcpSendBackMaxTimes, + consumerGroup, topic, bizSeqNo); } else { sendBackTimes++; event = CloudEventBuilder.from(event) @@ -563,9 +574,9 @@ public class ClientGroupWrapper { } DownStreamMsgContext downStreamMsgContext = - new DownStreamMsgContext(event, session, persistentMsgConsumer, - eventMeshAsyncConsumeContext.getAbstractContext(), false, - subscriptionItem); + new DownStreamMsgContext(event, session, persistentMsgConsumer, + eventMeshAsyncConsumeContext.getAbstractContext(), false, + subscriptionItem); //msg put in eventmesh,waiting client ack session.getPusher().unAckMsg(downStreamMsgContext.seq, downStreamMsgContext); session.downstreamMsg(downStreamMsgContext); @@ -642,7 +653,7 @@ public class ClientGroupWrapper { } public void setDownstreamDispatchStrategy( - DownstreamDispatchStrategy downstreamDispatchStrategy) { + DownstreamDispatchStrategy downstreamDispatchStrategy) { this.downstreamDispatchStrategy = downstreamDispatchStrategy; } @@ -653,12 +664,12 @@ public class ClientGroupWrapper { private String pushMsgToEventMesh(CloudEvent msg, String ip, int port) throws Exception { StringBuilder targetUrl = new StringBuilder(); targetUrl.append("http://").append(ip).append(":").append(port) - .append("/eventMesh/msg/push"); + .append("/eventMesh/msg/push"); HttpTinyClient.HttpResult result = null; try { logger.info("pushMsgToEventMesh,targetUrl:{},msg:{}", targetUrl.toString(), - msg); + msg); List paramValues = new ArrayList(); paramValues.add("msg"); paramValues.add(JsonUtils.serialize(msg)); @@ -666,23 +677,23 @@ public class ClientGroupWrapper { paramValues.add(consumerGroup); result = HttpTinyClient.httpPost( - targetUrl.toString(), - null, - paramValues, - "UTF-8", - 3000); + targetUrl.toString(), + null, + paramValues, + "UTF-8", + 3000); } catch (Exception e) { logger.error("httpPost " + targetUrl + " is fail,", e); //throw new RuntimeException("httpPost " + targetUrl + " is fail," , e); throw e; } - if (200 == result.code && result.content != null) { - return result.content; + if (200 == result.getCode() && result.getContent() != null) { + return result.getContent(); } else { throw new Exception("httpPost targetUrl[" + targetUrl - + "] is not OK when getContentThroughHttp, httpResult: " + result + "."); + + "] is not OK when getContentThroughHttp, httpResult: " + result + "."); } } @@ -698,22 +709,22 @@ public class ClientGroupWrapper { long startTime = System.currentTimeMillis(); long taskExcuteTime = startTime; send(new UpStreamMsgContext(null, event, null, startTime, taskExcuteTime), - new SendCallback() { - @Override - public void onSuccess(SendResult sendResult) { - logger.info( - "consumerGroup:{} consume fail, sendMessageBack success, bizSeqno:{}, " - + "topic:{}", consumerGroup, bizSeqNo, topic); - } + new SendCallback() { + @Override + public void onSuccess(SendResult sendResult) { + logger.info( + "consumerGroup:{} consume fail, sendMessageBack success, bizSeqno:{}, " + + "topic:{}", consumerGroup, bizSeqNo, topic); + } - @Override - public void onException(OnExceptionContext context) { - logger.warn( - "consumerGroup:{} consume fail, sendMessageBack fail, bizSeqno:{}," - + " topic:{}", consumerGroup, bizSeqNo, topic); - } + @Override + public void onException(OnExceptionContext context) { + logger.warn( + "consumerGroup:{} consume fail, sendMessageBack fail, bizSeqno:{}," + + " topic:{}", consumerGroup, bizSeqNo, topic); + } - }); + }); eventMeshTcpMonitor.getEventMesh2mqMsgNum().incrementAndGet(); } catch (Exception e) { logger.warn("try send msg back to broker failed"); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientSessionGroupMapping.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientSessionGroupMapping.java index ce73948e2..548d7e5b2 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientSessionGroupMapping.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientSessionGroupMapping.java @@ -58,10 +58,10 @@ public class ClientSessionGroupMapping { private ConcurrentHashMap sessionTable = new ConcurrentHashMap<>(); private ConcurrentHashMap clientGroupMap = - new ConcurrentHashMap(); + new ConcurrentHashMap(); private ConcurrentHashMap lockMap = - new ConcurrentHashMap(); + new ConcurrentHashMap(); private EventMeshTCPServer eventMeshTCPServer; @@ -126,7 +126,7 @@ public class ClientSessionGroupMapping { @Override public void operationComplete(ChannelFuture future) throws Exception { logger.info("close the connection to remote address[{}] result: {}", remoteAddress, - future.isSuccess()); + future.isSuccess()); } }); sessionLogger.info("session|close|succeed|address={}|msg={}", addr, "no session was found"); @@ -172,7 +172,7 @@ public class ClientSessionGroupMapping { @Override public void operationComplete(ChannelFuture future) throws Exception { logger.info("close the connection to remote address[{}] result: {}", remoteAddress, - future.isSuccess()); + future.isSuccess()); } }); } @@ -183,7 +183,7 @@ public class ClientSessionGroupMapping { EventMeshTCPServer eventMeshTCPServer, DownstreamDispatchStrategy downstreamDispatchStrategy) { return new ClientGroupWrapper(sysId, producerGroup, consumerGroup, eventMeshTCPServer, - downstreamDispatchStrategy); + downstreamDispatchStrategy); } private void initClientGroupWrapper(UserAgent user, Session session) throws Exception { @@ -196,7 +196,7 @@ public class ClientSessionGroupMapping { synchronized (lockMap.get(user.getSubsystem())) { if (!clientGroupMap.containsKey(user.getSubsystem())) { ClientGroupWrapper cgw = constructClientGroupWrapper(user.getSubsystem(), user.getProducerGroup(), - user.getConsumerGroup(), eventMeshTCPServer, new FreePriorityDispatchStrategy()); + user.getConsumerGroup(), eventMeshTCPServer, new FreePriorityDispatchStrategy()); clientGroupMap.put(user.getSubsystem(), cgw); logger.info("create new ClientGroupWrapper, subsystem:{}", user.getSubsystem()); } @@ -302,23 +302,23 @@ public class ClientSessionGroupMapping { DownStreamMsgContext downStreamMsgContext = entry.getValue(); if (SubscriptionMode.BROADCASTING.equals(downStreamMsgContext.subscriptionItem.getMode())) { logger.warn("exist broadcast msg unack when closeSession,seq:{},bizSeq:{},client:{}", - downStreamMsgContext.seq, EventMeshUtil.getMessageBizSeq(downStreamMsgContext.event), - session.getClient()); + downStreamMsgContext.seq, EventMeshUtil.getMessageBizSeq(downStreamMsgContext.event), + session.getClient()); continue; } Session reChooseSession = session.getClientGroupWrapper().get().getDownstreamDispatchStrategy() - .select(session.getClientGroupWrapper().get().getConsumerGroup(), - downStreamMsgContext.event.getSubject(), - Objects.requireNonNull(session.getClientGroupWrapper().get()).groupConsumerSessions); + .select(session.getClientGroupWrapper().get().getConsumerGroup(), + downStreamMsgContext.event.getSubject(), + Objects.requireNonNull(session.getClientGroupWrapper().get()).groupConsumerSessions); if (reChooseSession != null) { downStreamMsgContext.session = reChooseSession; reChooseSession.getPusher().unAckMsg(downStreamMsgContext.seq, downStreamMsgContext); reChooseSession.downstreamMsg(downStreamMsgContext); logger.info("rePush msg form unAckMsgs,seq:{},rePushClient:{}", entry.getKey(), - downStreamMsgContext.session.getClient()); + downStreamMsgContext.session.getClient()); } else { logger.warn("select session fail in handleUnackMsgsInSession,seq:{},topic:{}", entry.getKey(), - downStreamMsgContext.event.getSubject()); + downStreamMsgContext.event.getSubject()); } } } @@ -326,15 +326,15 @@ public class ClientSessionGroupMapping { private void cleanClientGroupWrapperCommon(Session session) throws Exception { logger.info("GroupConsumerSessions size:{}", - session.getClientGroupWrapper().get().getGroupConsumerSessions().size()); + session.getClientGroupWrapper().get().getGroupConsumerSessions().size()); if (session.getClientGroupWrapper().get().getGroupConsumerSessions().size() == 0) { shutdownClientGroupConsumer(session); } logger.info("GroupProducerSessions size:{}", - session.getClientGroupWrapper().get().getGroupProducerSessions().size()); + session.getClientGroupWrapper().get().getGroupProducerSessions().size()); if ((session.getClientGroupWrapper().get().getGroupConsumerSessions().size() == 0) - && (session.getClientGroupWrapper().get().getGroupProducerSessions().size() == 0)) { + && (session.getClientGroupWrapper().get().getGroupProducerSessions().size() == 0)) { shutdownClientGroupProducer(session); clientGroupMap.remove(session.getClientGroupWrapper().get().getSysId()); @@ -361,50 +361,52 @@ public class ClientSessionGroupMapping { } private void initSessionCleaner() { - eventMeshTCPServer.getScheduler().scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - Iterator sessionIterator = sessionTable.values().iterator(); - while (sessionIterator.hasNext()) { - Session tmp = sessionIterator.next(); - if (System.currentTimeMillis() - tmp.getLastHeartbeatTime() - > eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshTcpSessionExpiredInMills) { - try { - logger.warn("clean expired session,client:{}", tmp.getClient()); - closeSession(tmp.getContext()); - } catch (Exception e) { - logger.error("say goodbye to session error! {}", tmp, e); - } - } - } - } - }, 1000, eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshTcpSessionExpiredInMills, - TimeUnit.MILLISECONDS); + eventMeshTCPServer.getScheduler().scheduleAtFixedRate( + new Runnable() { + @Override + public void run() { + Iterator sessionIterator = sessionTable.values().iterator(); + while (sessionIterator.hasNext()) { + Session tmp = sessionIterator.next(); + if (System.currentTimeMillis() - tmp.getLastHeartbeatTime() + > eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshTcpSessionExpiredInMills) { + try { + logger.warn("clean expired session,client:{}", tmp.getClient()); + closeSession(tmp.getContext()); + } catch (Exception e) { + logger.error("say goodbye to session error! {}", tmp, e); + } + } + } + } + }, 1000, eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshTcpSessionExpiredInMills, + TimeUnit.MILLISECONDS); } private void initDownStreamMsgContextCleaner() { - eventMeshTCPServer.getScheduler().scheduleAtFixedRate(new Runnable() { - @Override - public void run() { + eventMeshTCPServer.getScheduler().scheduleAtFixedRate( + new Runnable() { + @Override + public void run() { - //scan non-broadcast msg - Iterator sessionIterator = sessionTable.values().iterator(); - while (sessionIterator.hasNext()) { - Session tmp = sessionIterator.next(); - for (Map.Entry entry : tmp.getPusher().getUnAckMsg().entrySet()) { - String seqKey = entry.getKey(); - DownStreamMsgContext downStreamMsgContext = entry.getValue(); - if (!downStreamMsgContext.isExpire()) { - continue; + //scan non-broadcast msg + Iterator sessionIterator = sessionTable.values().iterator(); + while (sessionIterator.hasNext()) { + Session tmp = sessionIterator.next(); + for (Map.Entry entry : tmp.getPusher().getUnAckMsg().entrySet()) { + String seqKey = entry.getKey(); + DownStreamMsgContext downStreamMsgContext = entry.getValue(); + if (!downStreamMsgContext.isExpire()) { + continue; + } + downStreamMsgContext.ackMsg(); + tmp.getPusher().getUnAckMsg().remove(seqKey); + logger.warn("remove expire downStreamMsgContext, session:{}, topic:{}, seq:{}", tmp, + downStreamMsgContext.event.getSubject(), seqKey); + } } - downStreamMsgContext.ackMsg(); - tmp.getPusher().getUnAckMsg().remove(seqKey); - logger.warn("remove expire downStreamMsgContext, session:{}, topic:{}, seq:{}", tmp, - downStreamMsgContext.event.getSubject(), seqKey); } - } - } - }, 1000, 5 * 1000, TimeUnit.MILLISECONDS); + }, 1000, 5 * 1000, TimeUnit.MILLISECONDS); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/dispatch/DownstreamDispatchStrategy.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/dispatch/DownstreamDispatchStrategy.java index fe0e58962..9259c51de 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/dispatch/DownstreamDispatchStrategy.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/dispatch/DownstreamDispatchStrategy.java @@ -18,10 +18,13 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.group.dispatch; -import java.util.Set; - import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; +import java.util.Set; + +/** + * DownstreamDispatchStrategy + */ public interface DownstreamDispatchStrategy { /** * select a SESSION diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/dispatch/FreePriorityDispatchStrategy.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/dispatch/FreePriorityDispatchStrategy.java index 4e9e4d593..623dbb07d 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/dispatch/FreePriorityDispatchStrategy.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/dispatch/FreePriorityDispatchStrategy.java @@ -17,14 +17,16 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.group.dispatch; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +50,8 @@ public class FreePriorityDispatchStrategy implements DownstreamDispatchStrategy } if (session.isIsolated()) { isolatedSessions.add(session); - logger.info("session is not available because session is isolated,isolateTime:{},client:{}",session.getIsolateTime(), session.getClient()); + logger.info("session is not available because session is isolated,isolateTime:{},client:{}", + session.getIsolateTime(), session.getClient()); continue; } filtered.add(session); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventMeshRebalanceService.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventMeshRebalanceService.java index 516afa3ae..560cf40e2 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventMeshRebalanceService.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventMeshRebalanceService.java @@ -14,19 +14,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.core.protocol.tcp.client.rebalance; import org.apache.eventmesh.common.ThreadPoolFactory; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.util.EventMeshThreadFactoryImpl; import org.apache.eventmesh.runtime.util.EventMeshUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class EventMeshRebalanceService { protected final Logger logger = LoggerFactory.getLogger(EventMeshRebalanceService.class); @@ -44,8 +46,8 @@ public class EventMeshRebalanceService { this.rebalanceIntervalMills = eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshTcpRebalanceIntervalInMills; } - public void init(){ - this.serviceRebalanceScheduler = ThreadPoolFactory.createScheduledExecutor(5, new EventMeshThreadFactoryImpl("proxy-rebalance-sch",true)); + public void init() { + this.serviceRebalanceScheduler = ThreadPoolFactory.createScheduledExecutor(5, new EventMeshThreadFactoryImpl("proxy-rebalance-sch", true)); logger.info("rebalance service inited......"); } @@ -61,12 +63,12 @@ public class EventMeshRebalanceService { logger.info("rebalance service started......"); } - public void shutdown(){ + public void shutdown() { this.serviceRebalanceScheduler.shutdown(); logger.info("rebalance service shutdown......"); } - public void printRebalanceThreadPoolState(){ + public void printRebalanceThreadPoolState() { EventMeshUtil.printState((ThreadPoolExecutor) serviceRebalanceScheduler); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventMeshRebalanceStrategy.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventMeshRebalanceStrategy.java index 2bc32d165..b14e602a8 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventMeshRebalanceStrategy.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventMeshRebalanceStrategy.java @@ -14,8 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.core.protocol.tcp.client.rebalance; +/** + * EventMeshRebalanceStrategy + */ public interface EventMeshRebalanceStrategy { void doRebalance() throws Exception; } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventmeshRebalanceImpl.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventmeshRebalanceImpl.java index 292970554..4c11b0b43 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventmeshRebalanceImpl.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/rebalance/EventmeshRebalanceImpl.java @@ -14,10 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.core.protocol.tcp.client.rebalance; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.api.registry.dto.EventMeshDataInfo; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; @@ -25,28 +24,37 @@ import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendImpl; import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendStrategy; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; - public class EventmeshRebalanceImpl implements EventMeshRebalanceStrategy { protected final Logger logger = LoggerFactory.getLogger(EventmeshRebalanceImpl.class); private EventMeshTCPServer eventMeshTCPServer; - public EventmeshRebalanceImpl(EventMeshTCPServer eventMeshTCPServer){ + public EventmeshRebalanceImpl(EventMeshTCPServer eventMeshTCPServer) { this.eventMeshTCPServer = eventMeshTCPServer; } @Override public void doRebalance() throws Exception { long startTime = System.currentTimeMillis(); - logger.info("doRebalance start===========startTime:{}",startTime); + logger.info("doRebalance start===========startTime:{}", startTime); Set groupSet = eventMeshTCPServer.getClientSessionGroupMapping().getClientGroupMap().keySet(); - if(CollectionUtils.isEmpty(groupSet)){ + if (CollectionUtils.isEmpty(groupSet)) { logger.warn("doRebalance failed,eventmesh has no group, please check eventmeshData"); return; } @@ -54,41 +62,42 @@ public class EventmeshRebalanceImpl implements EventMeshRebalanceStrategy { final String cluster = eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshCluster; //get eventmesh of local idc Map localEventMeshMap = queryLocalEventMeshMap(cluster); - if(localEventMeshMap == null || localEventMeshMap.size() == 0){ + if (localEventMeshMap == null || localEventMeshMap.size() == 0) { return; } - for(String group : groupSet){ + for (String group : groupSet) { doRebalanceByGroup(cluster, group, EventMeshConstants.PURPOSE_SUB, localEventMeshMap); doRebalanceByGroup(cluster, group, EventMeshConstants.PURPOSE_PUB, localEventMeshMap); } logger.info("doRebalance end===========startTime:{}, cost:{}", startTime, System.currentTimeMillis() - startTime); } - private Map queryLocalEventMeshMap(String cluster){ + private Map queryLocalEventMeshMap(String cluster) { Map localEventMeshMap = null; List eventMeshDataInfoList = null; - try{ + try { eventMeshDataInfoList = eventMeshTCPServer.getRegistry().findEventMeshInfoByCluster(cluster); - if(eventMeshDataInfoList == null || CollectionUtils.isEmpty(eventMeshDataInfoList)){ + if (eventMeshDataInfoList == null || CollectionUtils.isEmpty(eventMeshDataInfoList)) { logger.warn("doRebalance failed,query eventmesh instances is null from registry,cluster:{}", cluster); return null; } localEventMeshMap = new HashMap<>(); String localIdc = eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshIDC; - for(EventMeshDataInfo eventMeshDataInfo : eventMeshDataInfoList){ + for (EventMeshDataInfo eventMeshDataInfo : eventMeshDataInfoList) { String idc = eventMeshDataInfo.getEventMeshName().split("-")[0]; - if(StringUtils.isNotBlank(idc) && StringUtils.equals(idc, localIdc)){ + if (StringUtils.isNotBlank(idc) && StringUtils.equals(idc, localIdc)) { localEventMeshMap.put(eventMeshDataInfo.getEventMeshName(), eventMeshDataInfo.getEndpoint()); } } - if(0 == localEventMeshMap.size()){ - logger.warn("doRebalance failed,query eventmesh instances of localIDC is null from registry,localIDC:{},cluster:{}", localIdc,cluster); + if (0 == localEventMeshMap.size()) { + logger.warn("doRebalance failed,query eventmesh instances of localIDC is null from registry,localIDC:{},cluster:{}", + localIdc, cluster); return null; } - }catch (Exception e){ + } catch (Exception e) { logger.warn("doRebalance failed,findEventMeshInfoByCluster failed,cluster:{},errMsg:{}", cluster, e); return null; } @@ -96,63 +105,71 @@ public class EventmeshRebalanceImpl implements EventMeshRebalanceStrategy { return localEventMeshMap; } - private void doRebalanceByGroup(String cluster, String group, String purpose, Map eventMeshMap) throws Exception{ + private void doRebalanceByGroup(String cluster, String group, String purpose, Map eventMeshMap) throws Exception { logger.info("doRebalanceByGroup start, cluster:{}, group:{}, purpose:{}", cluster, group, purpose); //query distribute data of loacl idc - Map clientDistributionMap = queryLocalEventMeshDistributeData(cluster, group, purpose, eventMeshMap); - if(clientDistributionMap == null || clientDistributionMap.size() == 0){ + Map clientDistributionMap = queryLocalEventMeshDistributeData(cluster, group, purpose, + eventMeshMap); + if (clientDistributionMap == null || clientDistributionMap.size() == 0) { return; } - doRebalanceRedirect(eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshName, group, purpose, eventMeshMap, clientDistributionMap); + doRebalanceRedirect(eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshName, group, purpose, + eventMeshMap, clientDistributionMap); logger.info("doRebalanceByGroup end, cluster:{}, group:{}, purpose:{}", cluster, group, purpose); - + } - private void doRebalanceRedirect(String currEventMeshName, String group, String purpose, Map eventMeshMap, Map clientDistributionMap)throws Exception{ - if(clientDistributionMap == null || clientDistributionMap.size() == 0){ + private void doRebalanceRedirect(String currEventMeshName, String group, String purpose, Map eventMeshMap, + Map clientDistributionMap) throws Exception { + if (clientDistributionMap == null || clientDistributionMap.size() == 0) { return; } //caculate client num need to redirect in currEventMesh int judge = caculateRedirectNum(currEventMeshName, group, purpose, clientDistributionMap); - if(judge > 0) { + if (judge > 0) { //select redirect target eventmesh lisg - List eventMeshRecommendResult = selectRedirectEventMesh(group, eventMeshMap, clientDistributionMap, judge, currEventMeshName); - if(eventMeshRecommendResult == null || eventMeshRecommendResult.size() != judge){ - logger.warn("doRebalance failed,recommendEventMeshNum is not consistent,recommendResult:{},judge:{}", eventMeshRecommendResult, judge); + List eventMeshRecommendResult = selectRedirectEventMesh(group, eventMeshMap, clientDistributionMap, + judge, currEventMeshName); + if (eventMeshRecommendResult == null || eventMeshRecommendResult.size() != judge) { + logger.warn("doRebalance failed,recommendEventMeshNum is not consistent,recommendResult:{},judge:{}", + eventMeshRecommendResult, judge); return; } //do redirect doRedirect(group, purpose, judge, eventMeshRecommendResult); - }else{ + } else { logger.info("rebalance condition not satisfy,group:{}, purpose:{},judge:{}", group, purpose, judge); } } - private void doRedirect(String group, String purpose, int judge, List eventMeshRecommendResult) throws Exception{ + private void doRedirect(String group, String purpose, int judge, List eventMeshRecommendResult) throws Exception { logger.info("doRebalance redirect start---------------------group:{},judge:{}", group, judge); Set sessionSet = null; - if(EventMeshConstants.PURPOSE_SUB.equals(purpose)) { + if (EventMeshConstants.PURPOSE_SUB.equals(purpose)) { sessionSet = eventMeshTCPServer.getClientSessionGroupMapping().getClientGroupMap().get(group).getGroupConsumerSessions(); - }else if(EventMeshConstants.PURPOSE_PUB.equals(purpose)){ + } else if (EventMeshConstants.PURPOSE_PUB.equals(purpose)) { sessionSet = eventMeshTCPServer.getClientSessionGroupMapping().getClientGroupMap().get(group).getGroupProducerSessions(); - }else{ - logger.warn("doRebalance failed,param is illegal, group:{}, purpose:{}",group, purpose); + } else { + logger.warn("doRebalance failed,param is illegal, group:{}, purpose:{}", group, purpose); return; } List sessionList = new ArrayList<>(sessionSet); Collections.shuffle(new ArrayList<>(sessionList)); - for(int i= 0; i selectRedirectEventMesh(String group, Map eventMeshMap, Map clientDistributionMap, int judge, String evenMeshName)throws Exception{ + + private List selectRedirectEventMesh(String group, Map eventMeshMap, + Map clientDistributionMap, int judge, + String evenMeshName) throws Exception { EventMeshRecommendStrategy eventMeshRecommendStrategy = new EventMeshRecommendImpl(eventMeshTCPServer); - return eventMeshRecommendStrategy.calculateRedirectRecommendEventMesh(eventMeshMap, clientDistributionMap, group, judge, evenMeshName); + return eventMeshRecommendStrategy.calculateRedirectRecommendEventMesh(eventMeshMap, clientDistributionMap, + group, judge, evenMeshName); } - public int caculateRedirectNum(String eventMeshName, String group, String purpose, Map clientDistributionMap) throws Exception{ + public int caculateRedirectNum(String eventMeshName, String group, String purpose, + Map clientDistributionMap) throws Exception { int sum = 0; - for(Integer item : clientDistributionMap.values()){ + for (Integer item : clientDistributionMap.values()) { sum += item.intValue(); } int currentNum = 0; - if(clientDistributionMap.get(eventMeshName) != null){ + if (clientDistributionMap.get(eventMeshName) != null) { currentNum = clientDistributionMap.get(eventMeshName); } int avgNum = sum / clientDistributionMap.size(); @@ -183,64 +204,75 @@ public class EventmeshRebalanceImpl implements EventMeshRebalanceStrategy { List eventMeshList = new ArrayList<>(clientDistributionMap.keySet()); Collections.sort(eventMeshList); int index = -1; - for(int i=0; i < Math.min(modNum, eventMeshList.size()); i++){ - if(StringUtils.equals(eventMeshName, eventMeshList.get(i))){ + for (int i = 0; i < Math.min(modNum, eventMeshList.size()); i++) { + if (StringUtils.equals(eventMeshName, eventMeshList.get(i))) { index = i; break; } } int rebalanceResult = 0; - if(avgNum == 0){ + if (avgNum == 0) { rebalanceResult = 1; - }else { + } else { rebalanceResult = (modNum != 0 && index < modNum && index >= 0) ? avgNum + 1 : avgNum; } - logger.info("rebalance caculateRedirectNum,group:{}, purpose:{},sum:{},avgNum:{}," + - "modNum:{}, index:{}, currentNum:{}, rebalanceResult:{}", group, purpose, sum, + logger.info("rebalance caculateRedirectNum,group:{}, purpose:{},sum:{},avgNum:{}," + + + "modNum:{}, index:{}, currentNum:{}, rebalanceResult:{}", group, purpose, sum, avgNum, modNum, index, currentNum, rebalanceResult); return currentNum - rebalanceResult; } - private Map queryLocalEventMeshDistributeData(String cluster, String group, String purpose, Map eventMeshMap){ + private Map queryLocalEventMeshDistributeData(String cluster, String group, String purpose, + Map eventMeshMap) { Map localEventMeshDistributeData = null; Map> eventMeshClientDistributionDataMap = null; - try{ - eventMeshClientDistributionDataMap = eventMeshTCPServer.getRegistry().findEventMeshClientDistributionData(cluster, group, purpose); + try { + eventMeshClientDistributionDataMap = eventMeshTCPServer.getRegistry().findEventMeshClientDistributionData( + cluster, group, purpose); - if(eventMeshClientDistributionDataMap == null || eventMeshClientDistributionDataMap.size() == 0){ - logger.warn("doRebalance failed,found no distribute data in regitry, cluster:{}, group:{}, purpose:{}", cluster, group, purpose); + if (eventMeshClientDistributionDataMap == null || eventMeshClientDistributionDataMap.size() == 0) { + logger.warn("doRebalance failed,found no distribute data in regitry, cluster:{}, group:{}, purpose:{}", + cluster, group, purpose); return null; } localEventMeshDistributeData = new HashMap<>(); String localIdc = eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshIDC; - for(Map.Entry> entry : eventMeshClientDistributionDataMap.entrySet()){ + for (Map.Entry> entry : eventMeshClientDistributionDataMap.entrySet()) { String idc = entry.getKey().split("-")[0]; - if(StringUtils.isNotBlank(idc) && StringUtils.equals(idc, localIdc)){ + if (StringUtils.isNotBlank(idc) && StringUtils.equals(idc, localIdc)) { localEventMeshDistributeData.put(entry.getKey(), entry.getValue().get(purpose)); } } - if(0 == localEventMeshDistributeData.size()){ - logger.warn("doRebalance failed,found no distribute data of localIDC in regitry,cluster:{},group:{}, purpose:{},localIDC:{}", cluster, group, purpose, localIdc); + if (0 == localEventMeshDistributeData.size()) { + logger.warn("doRebalance failed,found no distribute data of localIDC in regitry,cluster:{},group:{}, purpose:{},localIDC:{}", + cluster, group, purpose, localIdc); return null; } - logger.info("before revert clientDistributionMap:{}, group:{}, purpose:{}", localEventMeshDistributeData, group, purpose); - for(String eventMeshName : localEventMeshDistributeData.keySet()){ - if(!eventMeshMap.keySet().contains(eventMeshName)){ - logger.warn("doRebalance failed,exist eventMesh not register but exist in distributionMap,cluster:{},grpup:{},purpose:{},eventMeshName:{}", cluster, group, purpose, eventMeshName); + logger.info("before revert clientDistributionMap:{}, group:{}, purpose:{}", localEventMeshDistributeData, + group, purpose); + for (String eventMeshName : localEventMeshDistributeData.keySet()) { + if (!eventMeshMap.keySet().contains(eventMeshName)) { + logger.warn( + "doRebalance failed,exist eventMesh not register but exist in " + + "distributionMap,cluster:{},grpup:{},purpose:{},eventMeshName:{}", + cluster, group, purpose, eventMeshName); return null; } } - for(String eventMesh : eventMeshMap.keySet()){ - if(!localEventMeshDistributeData.keySet().contains(eventMesh)){ + for (String eventMesh : eventMeshMap.keySet()) { + if (!localEventMeshDistributeData.keySet().contains(eventMesh)) { localEventMeshDistributeData.put(eventMesh, 0); } } - logger.info("after revert clientDistributionMap:{}, group:{}, purpose:{}", localEventMeshDistributeData, group, purpose); - }catch (Exception e){ - logger.warn("doRebalance failed,cluster:{},group:{},purpose:{},findProxyClientDistributionData failed, errMsg:{}", cluster, group, purpose, e); + logger.info("after revert clientDistributionMap:{}, group:{}, purpose:{}", localEventMeshDistributeData, + group, purpose); + } catch (Exception e) { + logger.warn("doRebalance failed,cluster:{},group:{},purpose:{},findProxyClientDistributionData failed, errMsg:{}", + cluster, group, purpose, e); return null; } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/recommend/EventMeshRecommendImpl.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/recommend/EventMeshRecommendImpl.java index 4b5091f41..290e3d4ff 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/recommend/EventMeshRecommendImpl.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/recommend/EventMeshRecommendImpl.java @@ -14,19 +14,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend; +import org.apache.eventmesh.api.registry.dto.EventMeshDataInfo; +import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; +import org.apache.eventmesh.runtime.util.ValueComparator; + import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.eventmesh.api.registry.dto.EventMeshDataInfo; -import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.util.ValueComparator; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; - public class EventMeshRecommendImpl implements EventMeshRecommendStrategy { protected final Logger logger = LoggerFactory.getLogger(EventMeshRecommendImpl.class); @@ -40,63 +47,66 @@ public class EventMeshRecommendImpl implements EventMeshRecommendStrategy { @Override public String calculateRecommendEventMesh(String group, String purpose) throws Exception { List eventMeshDataInfoList = null; - if(StringUtils.isBlank(group) || StringUtils.isBlank(purpose)){ + if (StringUtils.isBlank(group) || StringUtils.isBlank(purpose)) { logger.warn("EventMeshRecommend failed,params illegal,group:{},purpose:{}", group, purpose); return null; } final String cluster = eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshCluster; - try{ + try { eventMeshDataInfoList = eventMeshTCPServer.getRegistry().findEventMeshInfoByCluster(cluster); - }catch (Exception e){ - logger.warn("EventMeshRecommend failed, findEventMeshInfoByCluster failed, cluster:{}, group:{}, purpose:{}, errMsg:{}", cluster, group , purpose, e); + } catch (Exception e) { + logger.warn("EventMeshRecommend failed, findEventMeshInfoByCluster failed, cluster:{}, group:{}, purpose:{}, errMsg:{}", + cluster, group, purpose, e); return null; } - if(eventMeshDataInfoList == null || CollectionUtils.isEmpty(eventMeshDataInfoList)){ - logger.warn("EventMeshRecommend failed,not find eventMesh instances from registry,cluster:{},group:{},purpose:{}", cluster, group, purpose); + if (eventMeshDataInfoList == null || CollectionUtils.isEmpty(eventMeshDataInfoList)) { + logger.warn("EventMeshRecommend failed,not find eventMesh instances from registry,cluster:{},group:{},purpose:{}", + cluster, group, purpose); return null; } Map localEventMeshMap = new HashMap<>(); Map remoteEventMeshMap = new HashMap<>(); String localIdc = eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshIDC; - for(EventMeshDataInfo eventMeshDataInfo : eventMeshDataInfoList){ + for (EventMeshDataInfo eventMeshDataInfo : eventMeshDataInfoList) { String idc = eventMeshDataInfo.getEventMeshName().split("-")[0]; - if(StringUtils.isNotBlank(idc)){ - if(StringUtils.equals(idc, localIdc)){ + if (StringUtils.isNotBlank(idc)) { + if (StringUtils.equals(idc, localIdc)) { localEventMeshMap.put(eventMeshDataInfo.getEventMeshName(), eventMeshDataInfo.getEndpoint()); - }else{ + } else { remoteEventMeshMap.put(eventMeshDataInfo.getEventMeshName(), eventMeshDataInfo.getEndpoint()); } - }else{ + } else { logger.error("EventMeshName may be illegal,idc is null,eventMeshName:{}", eventMeshDataInfo.getEventMeshName()); } } - if(localEventMeshMap.size() ==0 && remoteEventMeshMap.size()==0){ + if (localEventMeshMap.size() == 0 && remoteEventMeshMap.size() == 0) { logger.warn("EventMeshRecommend failed,find no legal eventMesh instances from registry,localIDC:{}", localIdc); return null; } - if(localEventMeshMap.size() > 0){ + if (localEventMeshMap.size() > 0) { //recommend eventmesh of local idc - return recommendProxyByDistributeData(cluster,group,purpose,localEventMeshMap,true); - }else if(remoteEventMeshMap.size() > 0){ + return recommendProxyByDistributeData(cluster, group, purpose, localEventMeshMap, true); + } else if (remoteEventMeshMap.size() > 0) { //recommend eventmesh of other idc - return recommendProxyByDistributeData(cluster,group,purpose,remoteEventMeshMap,false); - }else { + return recommendProxyByDistributeData(cluster, group, purpose, remoteEventMeshMap, false); + } else { logger.error("localEventMeshMap or remoteEventMeshMap size error"); return null; } } @Override - public List calculateRedirectRecommendEventMesh(Map eventMeshMap, Map clientDistributeMap, String group, int recommendProxyNum, String eventMeshName) throws Exception { - if(recommendProxyNum < 1){ + public List calculateRedirectRecommendEventMesh(Map eventMeshMap, + Map clientDistributeMap, String group, + int recommendProxyNum, String eventMeshName) throws Exception { + if (recommendProxyNum < 1) { return null; } - logger.info("eventMeshMap:{},clientDistributionMap:{},group:{},recommendNum:{},currEventMeshName:{}", eventMeshMap,clientDistributeMap,group,recommendProxyNum, eventMeshName); - List recommendProxyList = null; - + logger.info("eventMeshMap:{},clientDistributionMap:{},group:{},recommendNum:{},currEventMeshName:{}", + eventMeshMap, clientDistributeMap, group, recommendProxyNum, eventMeshName); //find eventmesh with least client List> list = new ArrayList<>(); ValueComparator vc = new ValueComparator(); @@ -106,71 +116,80 @@ public class EventMeshRecommendImpl implements EventMeshRecommendStrategy { Collections.sort(list, vc); logger.info("clientDistributionMap after sort:{}", list); - recommendProxyList = new ArrayList<>(recommendProxyNum); - while(recommendProxyList.size() < recommendProxyNum){ + List recommendProxyList = new ArrayList<>(recommendProxyNum); + while (recommendProxyList.size() < recommendProxyNum) { Map.Entry minProxyItem = list.get(0); int currProxyNum = clientDistributeMap.get(eventMeshName); recommendProxyList.add(eventMeshMap.get(minProxyItem.getKey())); - clientDistributeMap.put(minProxyItem.getKey(),minProxyItem.getValue() + 1); - clientDistributeMap.put(eventMeshName,currProxyNum - 1); + clientDistributeMap.put(minProxyItem.getKey(), minProxyItem.getValue() + 1); + clientDistributeMap.put(eventMeshName, currProxyNum - 1); Collections.sort(list, vc); logger.info("clientDistributionMap after sort:{}", list); } - logger.info("choose proxys with min instance num, group:{}, recommendProxyNum:{}, recommendProxyList:{}", group, recommendProxyNum, recommendProxyList); + logger.info("choose proxys with min instance num, group:{}, recommendProxyNum:{}, recommendProxyList:{}", + group, recommendProxyNum, recommendProxyList); return recommendProxyList; } - private String recommendProxyByDistributeData(String cluster, String group, String purpose, Map eventMeshMap, boolean caculateLocal){ - logger.info("eventMeshMap:{},cluster:{},group:{},purpose:{},caculateLocal:{}", eventMeshMap,cluster,group,purpose,caculateLocal); + private String recommendProxyByDistributeData(String cluster, String group, String purpose, + Map eventMeshMap, boolean caculateLocal) { + logger.info("eventMeshMap:{},cluster:{},group:{},purpose:{},caculateLocal:{}", eventMeshMap, cluster, + group, purpose, caculateLocal); String recommendProxyAddr = null; List tmpProxyAddrList = null; Map> eventMeshClientDistributionDataMap = null; - try{ - eventMeshClientDistributionDataMap = eventMeshTCPServer.getRegistry().findEventMeshClientDistributionData(cluster, group, purpose); - }catch (Exception e){ - logger.warn("EventMeshRecommend failed,findEventMeshClientDistributionData failed,cluster:{},group:{},purpose:{}, errMsg:{}",cluster,group,purpose, e); + try { + eventMeshClientDistributionDataMap = eventMeshTCPServer.getRegistry().findEventMeshClientDistributionData( + cluster, group, purpose); + } catch (Exception e) { + logger.warn("EventMeshRecommend failed,findEventMeshClientDistributionData failed," + + "cluster:{},group:{},purpose:{}, errMsg:{}", cluster, group, purpose, e); } - if(eventMeshClientDistributionDataMap == null || MapUtils.isEmpty(eventMeshClientDistributionDataMap)) { + if (eventMeshClientDistributionDataMap == null || MapUtils.isEmpty(eventMeshClientDistributionDataMap)) { tmpProxyAddrList = new ArrayList<>(eventMeshMap.values()); Collections.shuffle(tmpProxyAddrList); recommendProxyAddr = tmpProxyAddrList.get(0); - logger.info("No distribute data in registry,cluster:{}, group:{},purpose:{}, recommendProxyAddr:{}", cluster, group, purpose, recommendProxyAddr); + logger.info("No distribute data in registry,cluster:{}, group:{},purpose:{}, recommendProxyAddr:{}", + cluster, group, purpose, recommendProxyAddr); return recommendProxyAddr; } Map localClientDistributionMap = new HashMap<>(); Map remoteClientDistributionMap = new HashMap<>(); - for(Map.Entry> entry : eventMeshClientDistributionDataMap.entrySet()){ + for (Map.Entry> entry : eventMeshClientDistributionDataMap.entrySet()) { String idc = entry.getKey().split("-")[0]; - if(StringUtils.isNotBlank(idc)) { + if (StringUtils.isNotBlank(idc)) { if (StringUtils.equals(idc, eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshIDC)) { localClientDistributionMap.put(entry.getKey(), entry.getValue().get(purpose)); } else { remoteClientDistributionMap.put(entry.getKey(), entry.getValue().get(purpose)); } - }else { - logger.error("eventMeshName may be illegal,idc is null,eventMeshName:{}",entry.getKey()); + } else { + logger.error("eventMeshName may be illegal,idc is null,eventMeshName:{}", entry.getKey()); } } - recommendProxyAddr = recommendProxy(eventMeshMap, (caculateLocal == true) ? localClientDistributionMap : remoteClientDistributionMap, group); - logger.info("eventMeshMap:{},group:{},purpose:{},caculateLocal:{},recommendProxyAddr:{}",eventMeshMap,group,purpose,caculateLocal,recommendProxyAddr); + recommendProxyAddr = recommendProxy(eventMeshMap, (caculateLocal == true) ? localClientDistributionMap + : remoteClientDistributionMap, group); + + logger.info("eventMeshMap:{},group:{},purpose:{},caculateLocal:{},recommendProxyAddr:{}", eventMeshMap, + group, purpose, caculateLocal, recommendProxyAddr); return recommendProxyAddr; } - private String recommendProxy(Map eventMeshMap,Map clientDistributionMap,String group){ - logger.info("eventMeshMap:{},clientDistributionMap:{},group:{}", eventMeshMap,clientDistributionMap,group); + private String recommendProxy(Map eventMeshMap, Map clientDistributionMap, String group) { + logger.info("eventMeshMap:{},clientDistributionMap:{},group:{}", eventMeshMap, clientDistributionMap, group); String recommendProxy = null; - for(String proxyName : clientDistributionMap.keySet()){ - if(!eventMeshMap.keySet().contains(proxyName)){ + for (String proxyName : clientDistributionMap.keySet()) { + if (!eventMeshMap.keySet().contains(proxyName)) { logger.warn("exist proxy not register but exist in distributionMap,proxy:{}", proxyName); return null; } } - for(String proxy : eventMeshMap.keySet()){ - if(!clientDistributionMap.keySet().contains(proxy)){ + for (String proxy : eventMeshMap.keySet()) { + if (!clientDistributionMap.keySet().contains(proxy)) { clientDistributionMap.put(proxy, 0); } } @@ -181,10 +200,10 @@ public class EventMeshRecommendImpl implements EventMeshRecommendStrategy { for (Map.Entry entry : clientDistributionMap.entrySet()) { list.add(entry); } - if(list.size() == 0){ + if (list.size() == 0) { logger.error("no legal distribute data,check eventMeshMap and distributeData, group:{}", group); return null; - }else{ + } else { Collections.sort(list, vc); logger.info("clientDistributionMap after sort:{}", list); recommendProxy = eventMeshMap.get(list.get(0).getKey()); @@ -192,7 +211,8 @@ public class EventMeshRecommendImpl implements EventMeshRecommendStrategy { } } - private List calculate(Map proxyMap,Map clientDistributionMap,String group, int recommendProxyNum){ + private List calculate(Map proxyMap, Map clientDistributionMap, + String group, int recommendProxyNum) { return null; } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/recommend/EventMeshRecommendStrategy.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/recommend/EventMeshRecommendStrategy.java index f17a513fe..515cf3bc8 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/recommend/EventMeshRecommendStrategy.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/recommend/EventMeshRecommendStrategy.java @@ -14,13 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend; import java.util.List; import java.util.Map; +/** + * EventMeshRecommendStrategy + */ public interface EventMeshRecommendStrategy { String calculateRecommendEventMesh(String group, String purpose) throws Exception; - List calculateRedirectRecommendEventMesh(Map eventMeshMap, Map clientDistributeMap, String group, int recommendNum, String eventMeshName) throws Exception; + List calculateRedirectRecommendEventMesh(Map eventMeshMap, + Map clientDistributeMap, String group, + int recommendNum, String eventMeshName) throws Exception; } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/Session.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/Session.java index e241bb2ab..c1a4dc92a 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/Session.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/Session.java @@ -19,22 +19,12 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.session; import static org.apache.eventmesh.common.protocol.tcp.Command.LISTEN_RESPONSE; -import java.lang.ref.WeakReference; -import java.net.InetSocketAddress; -import java.util.List; -import java.util.concurrent.locks.ReentrantLock; - -import io.cloudevents.CloudEvent; -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelFutureListener; -import io.netty.channel.ChannelHandlerContext; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.api.SendCallback; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.SubscriptionItem; -import org.apache.eventmesh.common.protocol.tcp.*; +import org.apache.eventmesh.common.protocol.tcp.Header; +import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; +import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientGroupWrapper; @@ -44,9 +34,22 @@ import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.send.EventM import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.send.SessionSender; import org.apache.eventmesh.runtime.util.RemotingHelper; import org.apache.eventmesh.runtime.util.Utils; + +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.lang.ref.WeakReference; +import java.net.InetSocketAddress; +import java.util.List; +import java.util.concurrent.locks.ReentrantLock; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cloudevents.CloudEvent; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelFutureListener; +import io.netty.channel.ChannelHandlerContext; + public class Session { protected final Logger messageLogger = LoggerFactory.getLogger("message"); @@ -227,15 +230,24 @@ public class Session { @Override public String toString() { - return "Session{" + - "sysId=" + clientGroupWrapper.get().getSysId() + - ",remoteAddr=" + RemotingHelper.parseSocketAddressAddr(remoteAddress) + - ",client=" + client + - ",sessionState=" + sessionState + - ",sessionContext=" + sessionContext + - ",pusher=" + pusher + - ",sender=" + sender + - ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + + return "Session{" + + + "sysId=" + clientGroupWrapper.get().getSysId() + + + ",remoteAddr=" + RemotingHelper.parseSocketAddressAddr(remoteAddress) + + + ",client=" + client + + + ",sessionState=" + sessionState + + + ",sessionContext=" + sessionContext + + + ",pusher=" + pusher + + + ",sender=" + sender + + + ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + + ",lastHeartbeatTime=" + DateFormatUtils.format(lastHeartbeatTime, EventMeshConstants.DATE_FORMAT) + '}'; } @@ -319,17 +331,17 @@ public class Session { } if (!sessionContext.subscribeTopics.containsKey(topic)) { - logger.warn("session is not available because session has not subscribe topic:{},client:{}", topic,client); + logger.warn("session is not available because session has not subscribe topic:{},client:{}", topic, client); return false; } return true; } -// @Override -// public int hashCode() { -// int code = 37 + (client != null ? client.hashCode() : 0) + (context != null ? context.hashCode() : 0) -// + (sessionState != null ? sessionState.hashCode() : 0); -// return code; -// } + //@Override + //public int hashCode() { + // int code = 37 + (client != null ? client.hashCode() : 0) + (context != null ? context.hashCode() : 0) + // + (sessionState != null ? sessionState.hashCode() : 0); + // return code; + //} } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/SessionContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/SessionContext.java index e8f851bae..802b6e1c0 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/SessionContext.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/SessionContext.java @@ -17,12 +17,13 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.session; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.protocol.SubscriptionItem; import org.apache.eventmesh.runtime.constants.EventMeshConstants; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.concurrent.ConcurrentHashMap; + public class SessionContext { private Session session; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/ClientAckContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/ClientAckContext.java index 3b1e0dbbe..608655bb1 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/ClientAckContext.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/ClientAckContext.java @@ -17,20 +17,22 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.session.push; -import java.util.List; - -import io.cloudevents.CloudEvent; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.api.AbstractContext; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.plugin.MQConsumerWrapper; import org.apache.eventmesh.runtime.util.EventMeshUtil; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cloudevents.CloudEvent; + public class ClientAckContext { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -54,7 +56,7 @@ public class ClientAckContext { this.consumer = consumer; this.createTime = System.currentTimeMillis(); String ttlStr = events.get(0).getExtension(EventMeshConstants.PROPERTY_MESSAGE_TTL).toString(); - long ttl = StringUtils.isNumeric(ttlStr)? Long.parseLong(ttlStr) : EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; + long ttl = StringUtils.isNumeric(ttlStr) ? Long.parseLong(ttlStr) : EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; this.expireTime = System.currentTimeMillis() + ttl; } @@ -109,22 +111,27 @@ public class ClientAckContext { public void ackMsg() { if (consumer != null && context != null && events != null) { consumer.updateOffset(events, context); -// ConsumeMessageService consumeMessageService = consumer..getDefaultMQPushConsumerImpl().getConsumeMessageService(); -// ((ConsumeMessageConcurrentlyService)consumeMessageService).updateOffset(msgs, context); + //ConsumeMessageService consumeMessageService = consumer..getDefaultMQPushConsumerImpl().getConsumeMessageService(); + //((ConsumeMessageConcurrentlyService)consumeMessageService).updateOffset(msgs, context); logger.info("ackMsg topic:{}, bizSeq:{}", events.get(0).getSubject(), EventMeshUtil.getMessageBizSeq(events.get(0))); } else { - logger.warn("ackMsg failed,consumer is null:{}, context is null:{} , msgs is null:{}", consumer == null, context == null, events == null); + logger.warn("ackMsg failed,consumer is null:{}, context is null:{} , msgs is null:{}", + consumer == null, context == null, events == null); } } @Override public String toString() { - return "ClientAckContext{" + - ",seq=" + seq + -// TODO ",consumer=" + consumer.getDefaultMQPushConsumer().getMessageModel() + -// ",consumerGroup=" + consumer.getDefaultMQPushConsumer().getConsumerGroup() + - ",topic=" + (CollectionUtils.size(events) > 0 ? events.get(0).getSubject() : null) + - ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + + return "ClientAckContext{" + + + ",seq=" + seq + + + //TODO ",consumer=" + consumer.getDefaultMQPushConsumer().getMessageModel() + + // ",consumerGroup=" + consumer.getDefaultMQPushConsumer().getConsumerGroup() + + ",topic=" + (CollectionUtils.size(events) > 0 ? events.get(0).getSubject() : null) + + + ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + + ",expireTime=" + DateFormatUtils.format(expireTime, EventMeshConstants.DATE_FORMAT) + '}'; } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/DownStreamMsgContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/DownStreamMsgContext.java index cb6b7d845..f4244e767 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/DownStreamMsgContext.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/DownStreamMsgContext.java @@ -17,11 +17,7 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.session.push; -import io.cloudevents.CloudEvent; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.api.AbstractContext; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.SubscriptionItem; import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.runtime.constants.EventMeshConstants; @@ -30,11 +26,18 @@ import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.retry.RetryContext; import org.apache.eventmesh.runtime.util.EventMeshUtil; import org.apache.eventmesh.runtime.util.ServerGlobal; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; + import java.util.ArrayList; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.cloudevents.CloudEvent; + public class DownStreamMsgContext extends RetryContext { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -55,7 +58,9 @@ public class DownStreamMsgContext extends RetryContext { public boolean msgFromOtherEventMesh; - public DownStreamMsgContext(CloudEvent event, Session session, MQConsumerWrapper consumer, AbstractContext consumeConcurrentlyContext, boolean msgFromOtherEventMesh, SubscriptionItem subscriptionItem) { + public DownStreamMsgContext(CloudEvent event, Session session, MQConsumerWrapper consumer, + AbstractContext consumeConcurrentlyContext, boolean msgFromOtherEventMesh, + SubscriptionItem subscriptionItem) { this.seq = String.valueOf(ServerGlobal.getInstance().getMsgCounter().incrementAndGet()); this.event = event; this.session = session; @@ -65,8 +70,9 @@ public class DownStreamMsgContext extends RetryContext { this.createTime = System.currentTimeMillis(); this.subscriptionItem = subscriptionItem; String ttlStr = (String) event.getExtension("TTL"); -// String ttlStr = msgExt.getUserProperties("TTL"); - long ttl = StringUtils.isNumeric(ttlStr) ? Long.parseLong(ttlStr) : EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; + //String ttlStr = msgExt.getUserProperties("TTL"); + long ttl = StringUtils.isNumeric(ttlStr) ? Long.parseLong(ttlStr) : + EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; this.expireTime = System.currentTimeMillis() + ttl; this.msgFromOtherEventMesh = msgFromOtherEventMesh; } @@ -80,34 +86,47 @@ public class DownStreamMsgContext extends RetryContext { List events = new ArrayList(); events.add(event); consumer.updateOffset(events, consumeConcurrentlyContext); -// ConsumeMessageService consumeMessageService = consumer.getDefaultMQPushConsumer().getDefaultMQPushConsumerImpl().getConsumeMessageService(); -// ((ConsumeMessageConcurrentlyService)consumeMessageService).updateOffset(msgs, consumeConcurrentlyContext); + //ConsumeMessageService consumeMessageService = + // consumer.getDefaultMQPushConsumer().getDefaultMQPushConsumerImpl().getConsumeMessageService(); + //((ConsumeMessageConcurrentlyService)consumeMessageService).updateOffset(msgs, consumeConcurrentlyContext); logger.info("ackMsg seq:{}, topic:{}, bizSeq:{}", seq, events.get(0).getSubject(), events.get(0).getExtension(EventMeshConstants.PROPERTY_MESSAGE_KEYS)); } else { - logger.warn("ackMsg seq:{} failed,consumer is null:{}, context is null:{} , msgs is null:{}", seq, consumer == null, consumeConcurrentlyContext == null, event == null); + logger.warn("ackMsg seq:{} failed,consumer is null:{}, context is null:{} , msgs is null:{}", seq, + consumer == null, consumeConcurrentlyContext == null, event == null); } } @Override public String toString() { - return "DownStreamMsgContext{" + - ",seq=" + seq + - ",client=" + (session == null ? null : session.getClient()) + - ",retryTimes=" + retryTimes + - ",consumer=" + consumer + -// todo ",consumerGroup=" + consumer.getClass().getConsumerGroup() + - ",topic=" + event.getSubject() + - ",subscriptionItem=" + subscriptionItem + - ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + - ",executeTime=" + DateFormatUtils.format(executeTime, EventMeshConstants.DATE_FORMAT) + - ",lastPushTime=" + DateFormatUtils.format(lastPushTime, EventMeshConstants.DATE_FORMAT) + '}'; + return "DownStreamMsgContext{" + + + ",seq=" + seq + + + ",client=" + (session == null ? null : session.getClient()) + + + ",retryTimes=" + retryTimes + + + ",consumer=" + consumer + + + // todo ",consumerGroup=" + consumer.getClass().getConsumerGroup() + + ",topic=" + event.getSubject() + + + ",subscriptionItem=" + subscriptionItem + + + ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + + + ",executeTime=" + DateFormatUtils.format(executeTime, EventMeshConstants.DATE_FORMAT) + + + ",lastPushTime=" + DateFormatUtils.format(lastPushTime, EventMeshConstants.DATE_FORMAT) + + '}'; } @Override public void retry() { try { - logger.info("retry downStream msg start,seq:{},retryTimes:{},bizSeq:{}", this.seq, this.retryTimes, EventMeshUtil.getMessageBizSeq(this.event)); + logger.info("retry downStream msg start,seq:{},retryTimes:{},bizSeq:{}", this.seq, this.retryTimes, + EventMeshUtil.getMessageBizSeq(this.event)); if (isRetryMsgTimeout(this)) { return; @@ -119,18 +138,20 @@ public class DownStreamMsgContext extends RetryContext { String topic = this.event.getSubject(); if (!SubscriptionMode.BROADCASTING.equals(this.subscriptionItem.getMode())) { rechoosen = this.session.getClientGroupWrapper() - .get().getDownstreamDispatchStrategy().select(this.session.getClientGroupWrapper().get().getSysId() - , topic, this.session.getClientGroupWrapper().get().getGroupConsumerSessions()); + .get().getDownstreamDispatchStrategy().select(this.session.getClientGroupWrapper().get().getSysId(), + topic, this.session.getClientGroupWrapper().get().getGroupConsumerSessions()); } else { rechoosen = this.session; } if (rechoosen == null) { - logger.warn("retry, found no session to downstream msg,seq:{}, retryTimes:{}, bizSeq:{}", this.seq, this.retryTimes, EventMeshUtil.getMessageBizSeq(this.event)); + logger.warn("retry, found no session to downstream msg,seq:{}, retryTimes:{}, bizSeq:{}", this.seq, + this.retryTimes, EventMeshUtil.getMessageBizSeq(this.event)); } else { this.session = rechoosen; rechoosen.downstreamMsg(this); - logger.info("retry downStream msg end,seq:{},retryTimes:{},bizSeq:{}", this.seq, this.retryTimes, EventMeshUtil.getMessageBizSeq(this.event)); + logger.info("retry downStream msg end,seq:{},retryTimes:{},bizSeq:{}", this.seq, this.retryTimes, + EventMeshUtil.getMessageBizSeq(this.event)); } } catch (Exception e) { logger.error("retry-dispatcher error!", e); @@ -140,7 +161,8 @@ public class DownStreamMsgContext extends RetryContext { private boolean isRetryMsgTimeout(DownStreamMsgContext downStreamMsgContext) { boolean flag = false; String ttlStr = (String) downStreamMsgContext.event.getExtension(EventMeshConstants.PROPERTY_MESSAGE_TTL); - long ttl = StringUtils.isNumeric(ttlStr) ? Long.parseLong(ttlStr) : EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS;; + long ttl = StringUtils.isNumeric(ttlStr) ? Long.parseLong(ttlStr) : EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; + ; String storeTimeStr = (String) downStreamMsgContext.event.getExtension(EventMeshConstants.STORE_TIME); long storeTimestamp = StringUtils.isNumeric(storeTimeStr) ? Long.parseLong(storeTimeStr) : 0; @@ -148,10 +170,13 @@ public class DownStreamMsgContext extends RetryContext { long brokerCost = StringUtils.isNumeric(leaveTimeStr) ? Long.parseLong(leaveTimeStr) - storeTimestamp : 0; String arriveTimeStr = (String) downStreamMsgContext.event.getExtension(EventMeshConstants.ARRIVE_TIME); - long accessCost = StringUtils.isNumeric(arriveTimeStr) ? System.currentTimeMillis() - Long.parseLong(arriveTimeStr) : 0; + long accessCost = StringUtils.isNumeric(arriveTimeStr) ? System.currentTimeMillis() - Long.parseLong(arriveTimeStr) + : 0; + double elapseTime = brokerCost + accessCost; if (elapseTime >= ttl) { - logger.warn("discard the retry because timeout, seq:{}, retryTimes:{}, bizSeq:{}", downStreamMsgContext.seq, downStreamMsgContext.retryTimes, EventMeshUtil.getMessageBizSeq(downStreamMsgContext.event)); + logger.warn("discard the retry because timeout, seq:{}, retryTimes:{}, bizSeq:{}", downStreamMsgContext.seq, + downStreamMsgContext.retryTimes, EventMeshUtil.getMessageBizSeq(downStreamMsgContext.event)); flag = true; eventMeshAckMsg(downStreamMsgContext); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/PushContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/PushContext.java index d236e5b72..7b721467f 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/PushContext.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/PushContext.java @@ -17,11 +17,14 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.session.push; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicLong; +import org.apache.eventmesh.runtime.constants.EventMeshConstants; + import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.time.DateFormatUtils; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,10 +70,14 @@ public class PushContext { @Override public String toString() { - return "PushContext{" + - "deliveredMsgsCount=" + deliveredMsgsCount.longValue() + - ",deliverFailCount=" + deliverFailMsgsCount.longValue() + - ",unAckMsg=" + CollectionUtils.size(unAckMsg) + + return "PushContext{" + + + "deliveredMsgsCount=" + deliveredMsgsCount.longValue() + + + ",deliverFailCount=" + deliverFailMsgsCount.longValue() + + + ",unAckMsg=" + CollectionUtils.size(unAckMsg) + + ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + '}'; } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/SessionPusher.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/SessionPusher.java index ef339f099..55ac95fd1 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/SessionPusher.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/push/SessionPusher.java @@ -17,27 +17,33 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.session.push; -import io.cloudevents.core.builder.CloudEventBuilder; -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelFutureListener; -import org.apache.commons.collections4.CollectionUtils; import org.apache.eventmesh.common.Constants; -import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.SubscriptionMode; -import org.apache.eventmesh.common.protocol.tcp.*; +import org.apache.eventmesh.common.protocol.SubscriptionType; +import org.apache.eventmesh.common.protocol.tcp.Command; +import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; +import org.apache.eventmesh.common.protocol.tcp.Header; +import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.protocol.api.ProtocolAdaptor; import org.apache.eventmesh.protocol.api.ProtocolPluginFactory; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.EventMeshUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.collections4.CollectionUtils; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.cloudevents.core.builder.CloudEventBuilder; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelFutureListener; + public class SessionPusher { private final Logger messageLogger = LoggerFactory.getLogger("message"); @@ -58,9 +64,12 @@ public class SessionPusher { @Override public String toString() { - return "SessionPusher{" + - "deliveredMsgsCount=" + deliveredMsgsCount.longValue() + - ",deliverFailCount=" + deliverFailMsgsCount.longValue() + + return "SessionPusher{" + + + "deliveredMsgsCount=" + deliveredMsgsCount.longValue() + + + ",deliverFailCount=" + deliverFailMsgsCount.longValue() + + ",unAckMsg=" + CollectionUtils.size(downStreamMap) + '}'; } @@ -83,7 +92,8 @@ public class SessionPusher { downStreamMsgContext.event = CloudEventBuilder.from(downStreamMsgContext.event) .withExtension(EventMeshConstants.REQ_EVENTMESH2C_TIMESTAMP, String.valueOf(System.currentTimeMillis())) .build(); -// downStreamMsgContext.event.getSystemProperties().put(EventMeshConstants.REQ_EVENTMESH2C_TIMESTAMP, String.valueOf(System.currentTimeMillis())); + //downStreamMsgContext.event.getSystemProperties().put(EventMeshConstants.REQ_EVENTMESH2C_TIMESTAMP, + //String.valueOf(System.currentTimeMillis())); EventMeshMessage body = null; int retCode = 0; String retMsg = null; @@ -104,11 +114,13 @@ public class SessionPusher { @Override public void operationComplete(ChannelFuture future) throws Exception { if (!future.isSuccess()) { - logger.error("downstreamMsg fail,seq:{}, retryTimes:{}, event:{}", downStreamMsgContext.seq, downStreamMsgContext.retryTimes, downStreamMsgContext.event); + logger.error("downstreamMsg fail,seq:{}, retryTimes:{}, event:{}", downStreamMsgContext.seq, + downStreamMsgContext.retryTimes, downStreamMsgContext.event); deliverFailMsgsCount.incrementAndGet(); //how long to isolate client when push fail - long isolateTime = System.currentTimeMillis() + session.getEventMeshTCPConfiguration().eventMeshTcpPushFailIsolateTimeInMills; + long isolateTime = System.currentTimeMillis() + + session.getEventMeshTCPConfiguration().eventMeshTcpPushFailIsolateTimeInMills; session.setIsolateTime(isolateTime); logger.warn("isolate client:{},isolateTime:{}", session.getClient(), isolateTime); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/retry/EventMeshTcpRetryer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/retry/EventMeshTcpRetryer.java index ba8f96cd4..d7939d8f5 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/retry/EventMeshTcpRetryer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/retry/EventMeshTcpRetryer.java @@ -22,14 +22,15 @@ import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.push.DownStreamMsgContext; import org.apache.eventmesh.runtime.util.EventMeshThreadFactoryImpl; import org.apache.eventmesh.runtime.util.EventMeshUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.DelayQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class EventMeshTcpRetryer { public static Logger logger = LoggerFactory.getLogger(EventMeshTcpRetryer.class); @@ -122,6 +123,6 @@ public class EventMeshTcpRetryer { } public void printRetryThreadPoolState() { -// ThreadPoolHelper.printState(pool); + //ThreadPoolHelper.printState(pool); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/retry/RetryContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/retry/RetryContext.java index 373f3ed35..9a5359ee0 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/retry/RetryContext.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/retry/RetryContext.java @@ -54,5 +54,5 @@ public abstract class RetryContext implements Delayed { return unit.convert(this.executeTime - System.currentTimeMillis(), TimeUnit.MILLISECONDS); } - abstract public void retry(); + public abstract void retry(); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/send/SessionSender.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/send/SessionSender.java index 340108872..f4615f251 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/send/SessionSender.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/send/SessionSender.java @@ -17,9 +17,6 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.session.send; -import io.cloudevents.core.builder.CloudEventBuilder; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.api.RequestReplyCallback; import org.apache.eventmesh.api.SendCallback; import org.apache.eventmesh.common.Constants; @@ -31,17 +28,21 @@ import org.apache.eventmesh.protocol.api.ProtocolAdaptor; import org.apache.eventmesh.protocol.api.ProtocolPluginFactory; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; -import org.apache.eventmesh.runtime.util.EventMeshUtil; import org.apache.eventmesh.runtime.util.Utils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; import java.util.Objects; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import io.cloudevents.CloudEvent; +import io.cloudevents.core.builder.CloudEventBuilder; public class SessionSender { @@ -60,9 +61,12 @@ public class SessionSender { @Override public String toString() { - return "SessionSender{upstreamBuff=" + upstreamBuff.availablePermits() + - ",upMsgs=" + upMsgs.longValue() + - ",failMsgCount=" + failMsgCount.longValue() + + return "SessionSender{upstreamBuff=" + upstreamBuff.availablePermits() + + + ",upMsgs=" + upMsgs.longValue() + + + ",failMsgCount=" + failMsgCount.longValue() + + ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + '}'; } @@ -86,27 +90,33 @@ public class SessionSender { long ttl = EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; if (Command.REQUEST_TO_SERVER == cmd) { if (event.getExtension(EventMeshConstants.PROPERTY_MESSAGE_TTL) != null) { - ttl = Long.parseLong((String) Objects.requireNonNull(event.getExtension(EventMeshConstants.PROPERTY_MESSAGE_TTL))); + ttl = Long.parseLong((String) Objects.requireNonNull( + event.getExtension(EventMeshConstants.PROPERTY_MESSAGE_TTL))); } -// long ttl = msg.getSystemProperties(EventMeshConstants.PROPERTY_MESSAGE_TTL) != null ? Long.parseLong(msg.getSystemProperties(EventMeshConstants.PROPERTY_MESSAGE_TTL)) : EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; + //long ttl = msg.getSystemProperties(EventMeshConstants.PROPERTY_MESSAGE_TTL) != null ? + // Long.parseLong(msg.getSystemProperties(EventMeshConstants.PROPERTY_MESSAGE_TTL)) + // : EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS; upStreamMsgContext = new UpStreamMsgContext(session, event, header, startTime, taskExecuteTime); - session.getClientGroupWrapper().get().request(upStreamMsgContext, initSyncRRCallback(header, startTime, taskExecuteTime), ttl); + session.getClientGroupWrapper().get().request(upStreamMsgContext, initSyncRRCallback(header, + startTime, taskExecuteTime), ttl); upstreamBuff.release(); } else if (Command.RESPONSE_TO_SERVER == cmd) { - String cluster = (String)event.getExtension(EventMeshConstants.PROPERTY_MESSAGE_CLUSTER); -// String cluster = msg.getUserProperties(EventMeshConstants.PROPERTY_MESSAGE_CLUSTER); + String cluster = (String) event.getExtension(EventMeshConstants.PROPERTY_MESSAGE_CLUSTER); + //String cluster = msg.getUserProperties(EventMeshConstants.PROPERTY_MESSAGE_CLUSTER); if (!StringUtils.isEmpty(cluster)) { String replyTopic = EventMeshConstants.RR_REPLY_TOPIC; replyTopic = cluster + "-" + replyTopic; event = CloudEventBuilder.from(event).withSubject(replyTopic).build(); -// msg.getSystemProperties().put(Constants.PROPERTY_MESSAGE_DESTINATION, replyTopic); -// event(replyTopic); + //msg.getSystemProperties().put(Constants.PROPERTY_MESSAGE_DESTINATION, replyTopic); + //event(replyTopic); } -// //for rocketmq support -// MessageAccessor.putProperty(msg, MessageConst.PROPERTY_MESSAGE_TYPE, MixAll.REPLY_MESSAGE_FLAG); -// MessageAccessor.putProperty(msg, MessageConst.PROPERTY_CORRELATION_ID, msg.getProperty(DeFiBusConstant.PROPERTY_RR_REQUEST_ID)); -// MessageAccessor.putProperty(msg, MessageConst.PROPERTY_MESSAGE_REPLY_TO_CLIENT, msg.getProperty(DeFiBusConstant.PROPERTY_MESSAGE_REPLY_TO)); + ////for rocketmq support + //MessageAccessor.putProperty(msg, MessageConst.PROPERTY_MESSAGE_TYPE, MixAll.REPLY_MESSAGE_FLAG); + //MessageAccessor.putProperty(msg, MessageConst.PROPERTY_CORRELATION_ID, + // msg.getProperty(DeFiBusConstant.PROPERTY_RR_REQUEST_ID)); + //MessageAccessor.putProperty(msg, MessageConst.PROPERTY_MESSAGE_REPLY_TO_CLIENT, + // msg.getProperty(DeFiBusConstant.PROPERTY_MESSAGE_REPLY_TO)); upStreamMsgContext = new UpStreamMsgContext(session, event, header, startTime, taskExecuteTime); session.getClientGroupWrapper().get().reply(upStreamMsgContext); @@ -138,12 +148,12 @@ public class SessionSender { public void onSuccess(CloudEvent event) { String seq = header.getSeq(); // TODO: How to assign values here -// if (msg instanceof MessageExt) { -// msg.putUserProperty(EventMeshConstants.BORN_TIMESTAMP, String.valueOf(((MessageExt) msg) -// .getBornTimestamp())); -// msg.putUserProperty(EventMeshConstants.STORE_TIMESTAMP, String.valueOf(((MessageExt) msg) -// .getStoreTimestamp())); -// } + //if (msg instanceof MessageExt) { + // msg.putUserProperty(EventMeshConstants.BORN_TIMESTAMP, String.valueOf(((MessageExt) msg) + // .getBornTimestamp())); + // msg.putUserProperty(EventMeshConstants.STORE_TIMESTAMP, String.valueOf(((MessageExt) msg) + // .getStoreTimestamp())); + //} event = CloudEventBuilder.from(event) .withExtension(EventMeshConstants.RSP_MQ2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())) .withExtension(EventMeshConstants.RSP_RECEIVE_EVENTMESH_IP, session.getEventMeshTCPConfiguration().eventMeshServerIp) @@ -158,17 +168,17 @@ public class SessionSender { return; } event = CloudEventBuilder.from(event) - .withExtension(EventMeshConstants.RSP_EVENTMESH2C_TIMESTAMP, String.valueOf(System.currentTimeMillis())) - .build(); + .withExtension(EventMeshConstants.RSP_EVENTMESH2C_TIMESTAMP, String.valueOf(System.currentTimeMillis())) + .build(); String protocolType = Objects.requireNonNull(event.getExtension(Constants.PROTOCOL_TYPE)).toString(); ProtocolAdaptor protocolAdaptor = ProtocolPluginFactory.getProtocolAdaptor(protocolType); Package pkg = new Package(); -// msg.getSystemProperties().put(EventMeshConstants.RSP_EVENTMESH2C_TIMESTAMP, String.valueOf(System.currentTimeMillis())); + //msg.getSystemProperties().put(EventMeshConstants.RSP_EVENTMESH2C_TIMESTAMP, String.valueOf(System.currentTimeMillis())); try { -// pkg.setBody(EventMeshUtil.encodeMessage(msg)); + //pkg.setBody(EventMeshUtil.encodeMessage(msg)); pkg = (Package) protocolAdaptor.fromCloudEvent(event); pkg.setHeader(new Header(cmd, OPStatus.SUCCESS.getCode(), null, seq)); pkg.getHeader().putProperty(Constants.PROTOCOL_TYPE, protocolType); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/send/UpStreamMsgContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/send/UpStreamMsgContext.java index 6a72423cc..2950f2f74 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/send/UpStreamMsgContext.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/session/send/UpStreamMsgContext.java @@ -76,28 +76,28 @@ public class UpStreamMsgContext extends RetryContext { @Override public String toString() { return "UpStreamMsgContext{seq=" + seq - + ",topic=" + event.getSubject() - + ",client=" + session.getClient() - + ",retryTimes=" + retryTimes - + ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + "}" - + ",executeTime=" + DateFormatUtils.format(executeTime, EventMeshConstants.DATE_FORMAT); + + ",topic=" + event.getSubject() + + ",client=" + session.getClient() + + ",retryTimes=" + retryTimes + + ",createTime=" + DateFormatUtils.format(createTime, EventMeshConstants.DATE_FORMAT) + "}" + + ",executeTime=" + DateFormatUtils.format(executeTime, EventMeshConstants.DATE_FORMAT); } @Override public void retry() { logger.info("retry upStream msg start,seq:{},retryTimes:{},bizSeq:{}", this.seq, this.retryTimes, - EventMeshUtil.getMessageBizSeq(this.event)); + EventMeshUtil.getMessageBizSeq(this.event)); try { Command replyCmd = getReplyCmd(header.getCmd()); long sendTime = System.currentTimeMillis(); EventMeshTcpSendResult sendStatus = session.upstreamMsg(header, event, - createSendCallback(replyCmd, taskExecuteTime, event), startTime, taskExecuteTime); + createSendCallback(replyCmd, taskExecuteTime, event), startTime, taskExecuteTime); if (StringUtils.equals(EventMeshTcpSendStatus.SUCCESS.name(), sendStatus.getSendStatus().name())) { logger.info("pkg|eventMesh2mq|cmd={}|event={}|user={}|wait={}ms|cost={}ms", header.getCmd(), event, - session.getClient(), taskExecuteTime - startTime, sendTime - startTime); + session.getClient(), taskExecuteTime - startTime, sendTime - startTime); } else { throw new Exception(sendStatus.getDetail()); } @@ -115,9 +115,9 @@ public class UpStreamMsgContext extends RetryContext { public void onSuccess(SendResult sendResult) { session.getSender().getUpstreamBuff().release(); logger.info("upstreamMsg message success|user={}|callback cost={}", session.getClient(), - String.valueOf(System.currentTimeMillis() - createTime)); + String.valueOf(System.currentTimeMillis() - createTime)); if (replyCmd.equals(Command.BROADCAST_MESSAGE_TO_SERVER_ACK) || replyCmd.equals(Command - .ASYNC_MESSAGE_TO_SERVER_ACK)) { + .ASYNC_MESSAGE_TO_SERVER_ACK)) { msg.setHeader(new Header(replyCmd, OPStatus.SUCCESS.getCode(), OPStatus.SUCCESS.getDesc(), seq)); msg.setBody(event); Utils.writeAndFlush(msg, startTime, taskExecuteTime, session.getContext(), session); @@ -130,14 +130,13 @@ public class UpStreamMsgContext extends RetryContext { // retry UpStreamMsgContext upStreamMsgContext = new UpStreamMsgContext( - session, event, header, startTime, taskExecuteTime); + session, event, header, startTime, taskExecuteTime); upStreamMsgContext.delay(10000); session.getClientGroupWrapper().get().getEventMeshTcpRetryer().pushRetry(upStreamMsgContext); session.getSender().failMsgCount.incrementAndGet(); logger.error("upstreamMsg mq message error|user={}|callback cost={}, errMsg={}", session.getClient(), - String.valueOf - (System.currentTimeMillis() - createTime), new Exception(context.getException())); + String.valueOf(System.currentTimeMillis() - createTime), new Exception(context.getException())); msg.setHeader(new Header(replyCmd, OPStatus.FAIL.getCode(), context.getException().toString(), seq)); msg.setBody(event); Utils.writeAndFlush(msg, startTime, taskExecuteTime, session.getContext(), session); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/AbstractTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/AbstractTask.java index 64e0eefb5..560ccf4be 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/AbstractTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/AbstractTask.java @@ -17,17 +17,19 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.task; -import io.netty.channel.ChannelHandlerContext; - import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public abstract class AbstractTask implements Runnable { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + protected Package pkg; protected ChannelHandlerContext ctx; protected Session session; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/GoodbyeTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/GoodbyeTask.java index ed24ef242..0eeabf2dc 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/GoodbyeTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/GoodbyeTask.java @@ -44,13 +44,13 @@ public class GoodbyeTask extends AbstractTask { logger.info("client|address={}| has reject ", session.getContext().channel().remoteAddress()); } else { msg.setHeader( - new Header(CLIENT_GOODBYE_RESPONSE, OPStatus.SUCCESS.getCode(), OPStatus.SUCCESS.getDesc(), - pkg.getHeader().getSeq())); + new Header(CLIENT_GOODBYE_RESPONSE, OPStatus.SUCCESS.getCode(), OPStatus.SUCCESS.getDesc(), + pkg.getHeader().getSeq())); } } catch (Exception e) { logger.error("GoodbyeTask failed|user={}|errMsg={}", session.getClient(), e); msg.setHeader(new Header(CLIENT_GOODBYE_RESPONSE, OPStatus.FAIL.getCode(), e.getStackTrace().toString(), pkg - .getHeader().getSeq())); + .getHeader().getSeq())); } finally { this.eventMeshTCPServer.getScheduler().submit(new Runnable() { @Override @@ -61,6 +61,6 @@ public class GoodbyeTask extends AbstractTask { //session.write2Client(msg); } EventMeshTcp2Client - .closeSessionIfTimeout(this.eventMeshTCPServer, session, eventMeshTCPServer.getClientSessionGroupMapping()); + .closeSessionIfTimeout(this.eventMeshTCPServer, session, eventMeshTCPServer.getClientSessionGroupMapping()); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/HeartBeatTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/HeartBeatTask.java index 9e16ef2cf..099b34638 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/HeartBeatTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/HeartBeatTask.java @@ -20,8 +20,6 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.task; import static org.apache.eventmesh.common.protocol.tcp.Command.HEARTBEAT_REQUEST; import static org.apache.eventmesh.common.protocol.tcp.Command.HEARTBEAT_RESPONSE; -import io.netty.channel.ChannelHandlerContext; - import org.apache.eventmesh.common.protocol.tcp.Header; import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; @@ -30,6 +28,8 @@ import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.util.RemotingHelper; import org.apache.eventmesh.runtime.util.Utils; +import io.netty.channel.ChannelHandlerContext; + public class HeartBeatTask extends AbstractTask { public HeartBeatTask(Package pkg, ChannelHandlerContext ctx, long startTime, EventMeshTCPServer eventMeshTCPServer) { @@ -42,7 +42,7 @@ public class HeartBeatTask extends AbstractTask { Package res = new Package(); try { //do acl check in heartbeat - if(eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerSecurityEnable){ + if (eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerSecurityEnable) { String remoteAddr = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); Acl.doAclCheckInTcpHeartbeat(remoteAddr, session.getClient(), HEARTBEAT_REQUEST.value()); } @@ -53,8 +53,8 @@ public class HeartBeatTask extends AbstractTask { res.setHeader(new Header(HEARTBEAT_RESPONSE, OPStatus.SUCCESS.getCode(), OPStatus.SUCCESS.getDesc(), pkg.getHeader().getSeq())); } catch (Exception e) { logger.error("HeartBeatTask failed|user={}|errMsg={}", session.getClient(), e); - res.setHeader(new Header(HEARTBEAT_RESPONSE, OPStatus.FAIL.getCode(), "exception while " + - "heartbeating", pkg.getHeader().getSeq())); + res.setHeader(new Header(HEARTBEAT_RESPONSE, OPStatus.FAIL.getCode(), "exception while " + + "heartbeating", pkg.getHeader().getSeq())); } finally { Utils.writeAndFlush(res, startTime, taskExecuteTime, session.getContext(), session); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/HelloTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/HelloTask.java index 10e8f1ad4..4d2533591 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/HelloTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/HelloTask.java @@ -20,11 +20,6 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.task; import static org.apache.eventmesh.common.protocol.tcp.Command.HELLO_REQUEST; import static org.apache.eventmesh.common.protocol.tcp.Command.HELLO_RESPONSE; -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelFutureListener; -import io.netty.channel.ChannelHandlerContext; - -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.common.protocol.tcp.Header; import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; @@ -36,9 +31,16 @@ import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; import org.apache.eventmesh.runtime.util.RemotingHelper; import org.apache.eventmesh.runtime.util.Utils; + +import org.apache.commons.lang3.StringUtils; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelFutureListener; +import io.netty.channel.ChannelHandlerContext; + public class HelloTask extends AbstractTask { private final Logger messageLogger = LoggerFactory.getLogger("message"); @@ -99,15 +101,17 @@ public class HelloTask extends AbstractTask { throw new Exception("client version cannot be null"); } -// if (user.getUsername() == null) { -// throw new Exception("client EventMeshUser cannot be null"); -// } -// -// if (user.getPassword() == null) { -// throw new Exception("client EventMeshPasswd cannot be null"); -// } + //if (user.getUsername() == null) { + // throw new Exception("client EventMeshUser cannot be null"); + //} + // + //if (user.getPassword() == null) { + // throw new Exception("client EventMeshPasswd cannot be null"); + //} + + if (!(StringUtils.equals(EventMeshConstants.PURPOSE_PUB, user.getPurpose()) || StringUtils.equals( + EventMeshConstants.PURPOSE_SUB, user.getPurpose()))) { - if (!(StringUtils.equals(EventMeshConstants.PURPOSE_PUB, user.getPurpose()) || StringUtils.equals(EventMeshConstants.PURPOSE_SUB, user.getPurpose()))) { throw new Exception("client purpose config is error"); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/ListenTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/ListenTask.java index 4ce653a40..7d26fe668 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/ListenTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/ListenTask.java @@ -19,13 +19,13 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.task; import static org.apache.eventmesh.common.protocol.tcp.Command.LISTEN_RESPONSE; -import io.netty.channel.ChannelHandlerContext; - import org.apache.eventmesh.common.protocol.tcp.Header; import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; +import io.netty.channel.ChannelHandlerContext; + public class ListenTask extends AbstractTask { public ListenTask(Package pkg, ChannelHandlerContext ctx, long startTime, EventMeshTCPServer eventMeshTCPServer) { @@ -46,8 +46,8 @@ public class ListenTask extends AbstractTask { Integer status = OPStatus.FAIL.getCode(); header = new Header(LISTEN_RESPONSE, status, e.toString(), pkg.getHeader().getSeq()); } finally { -// res.setHeader(header); -// writeAndFlush(res, startTime, session.getContext(), session); + //res.setHeader(header); + //writeAndFlush(res, startTime, session.getContext(), session); //session.write2Client(res); //check to avoid send repeatedly diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/MessageAckTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/MessageAckTask.java index f5e670e2b..a01615bab 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/MessageAckTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/MessageAckTask.java @@ -17,16 +17,16 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.task; -import io.netty.channel.ChannelHandlerContext; - import org.apache.eventmesh.common.protocol.tcp.Command; import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.push.ClientAckContext; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.push.DownStreamMsgContext; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public class MessageAckTask extends AbstractTask { private final Logger messageLogger = LoggerFactory.getLogger("message"); @@ -46,12 +46,14 @@ public class MessageAckTask extends AbstractTask { return; } DownStreamMsgContext downStreamMsgContext = session.getPusher().getUnAckMsg().get(seq); - if (downStreamMsgContext != null) {// ack non-broadcast msg + // ack non-broadcast msg + if (downStreamMsgContext != null) { downStreamMsgContext.ackMsg(); session.getPusher().getUnAckMsg().remove(seq); - }else { - if(!cmd.equals(Command.RESPONSE_TO_CLIENT_ACK)) { - logger.warn("MessageAckTask, seq:{}, downStreamMsgContext not in downStreamMap,client:{}", seq, session.getClient()); + } else { + if (!cmd.equals(Command.RESPONSE_TO_CLIENT_ACK)) { + logger.warn("MessageAckTask, seq:{}, downStreamMsgContext not in downStreamMap,client:{}", + seq, session.getClient()); } } messageLogger.info("pkg|c2eventMesh|cmd={}|seq=[{}]|user={}|wait={}ms|cost={}ms", cmd, seq, session.getClient(), diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/MessageTransferTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/MessageTransferTask.java index c5d5d1abd..442d539a6 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/MessageTransferTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/MessageTransferTask.java @@ -56,7 +56,7 @@ public class MessageTransferTask extends AbstractTask { private final Logger messageLogger = LoggerFactory.getLogger("message"); - private final int TRY_PERMIT_TIME_OUT = 5; + private static final int TRY_PERMIT_TIME_OUT = 5; public MessageTransferTask(Package pkg, ChannelHandlerContext ctx, long startTime, EventMeshTCPServer eventMeshTCPServer) { @@ -73,10 +73,10 @@ public class MessageTransferTask extends AbstractTask { protocolType = (String) pkg.getHeader().getProperty(Constants.PROTOCOL_TYPE); } ProtocolAdaptor protocolAdaptor = - ProtocolPluginFactory.getProtocolAdaptor(protocolType); + ProtocolPluginFactory.getProtocolAdaptor(protocolType); Package msg = new Package(); -// EventMeshMessage eventMeshMessage = (EventMeshMessage) pkg.getBody(); + //EventMeshMessage eventMeshMessage = (EventMeshMessage) pkg.getBody(); int retCode = 0; EventMeshTcpSendResult sendStatus; CloudEvent event = null; @@ -98,39 +98,39 @@ public class MessageTransferTask extends AbstractTask { event = addTimestamp(event, cmd, sendTime); sendStatus = session - .upstreamMsg(pkg.getHeader(), event, createSendCallback(replyCmd, taskExecuteTime, event), - startTime, taskExecuteTime); + .upstreamMsg(pkg.getHeader(), event, createSendCallback(replyCmd, taskExecuteTime, event), + startTime, taskExecuteTime); if (StringUtils.equals(EventMeshTcpSendStatus.SUCCESS.name(), sendStatus.getSendStatus().name())) { messageLogger.info("pkg|eventMesh2mq|cmd={}|Msg={}|user={}|wait={}ms|cost={}ms", cmd, event, - session.getClient(), taskExecuteTime - startTime, sendTime - startTime); + session.getClient(), taskExecuteTime - startTime, sendTime - startTime); } else { throw new Exception(sendStatus.getDetail()); } } } else { msg.setHeader(new Header(replyCmd, OPStatus.FAIL.getCode(), "Tps overload, global flow control", - pkg.getHeader().getSeq())); + pkg.getHeader().getSeq())); ctx.writeAndFlush(msg).addListener( - new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) throws Exception { - Utils.logSucceedMessageFlow(msg, session.getClient(), startTime, taskExecuteTime); + new ChannelFutureListener() { + @Override + public void operationComplete(ChannelFuture future) throws Exception { + Utils.logSucceedMessageFlow(msg, session.getClient(), startTime, taskExecuteTime); + } } - } ); logger.warn("======Tps overload, global flow control, rate:{}! PLEASE CHECK!========", - eventMeshTCPServer.getRateLimiter().getRate()); + eventMeshTCPServer.getRateLimiter().getRate()); return; } } catch (Exception e) { logger - .error("MessageTransferTask failed|cmd={}|event={}|user={}|errMsg={}", cmd, event, session.getClient(), - e); + .error("MessageTransferTask failed|cmd={}|event={}|user={}|errMsg={}", cmd, event, session.getClient(), + e); if (!cmd.equals(RESPONSE_TO_SERVER)) { msg.setHeader( - new Header(replyCmd, OPStatus.FAIL.getCode(), e.getStackTrace().toString(), pkg.getHeader() - .getSeq())); + new Header(replyCmd, OPStatus.FAIL.getCode(), e.getStackTrace().toString(), pkg.getHeader() + .getSeq())); Utils.writeAndFlush(msg, startTime, taskExecuteTime, session.getContext(), session); } } @@ -139,18 +139,18 @@ public class MessageTransferTask extends AbstractTask { private CloudEvent addTimestamp(CloudEvent event, Command cmd, long sendTime) { if (cmd.equals(RESPONSE_TO_SERVER)) { event = CloudEventBuilder.from(event) - .withExtension(EventMeshConstants.RSP_C2EVENTMESH_TIMESTAMP, String.valueOf(startTime)) - .withExtension(EventMeshConstants.RSP_EVENTMESH2MQ_TIMESTAMP, String.valueOf(sendTime)) - .withExtension(EventMeshConstants.RSP_SEND_EVENTMESH_IP, - eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerIp) - .build(); + .withExtension(EventMeshConstants.RSP_C2EVENTMESH_TIMESTAMP, String.valueOf(startTime)) + .withExtension(EventMeshConstants.RSP_EVENTMESH2MQ_TIMESTAMP, String.valueOf(sendTime)) + .withExtension(EventMeshConstants.RSP_SEND_EVENTMESH_IP, + eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerIp) + .build(); } else { event = CloudEventBuilder.from(event) - .withExtension(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, String.valueOf(startTime)) - .withExtension(EventMeshConstants.REQ_EVENTMESH2MQ_TIMESTAMP, String.valueOf(sendTime)) - .withExtension(EventMeshConstants.REQ_SEND_EVENTMESH_IP, - eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerIp) - .build(); + .withExtension(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, String.valueOf(startTime)) + .withExtension(EventMeshConstants.REQ_EVENTMESH2MQ_TIMESTAMP, String.valueOf(sendTime)) + .withExtension(EventMeshConstants.REQ_SEND_EVENTMESH_IP, + eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerIp) + .build(); } return event; } @@ -177,11 +177,11 @@ public class MessageTransferTask extends AbstractTask { public void onSuccess(SendResult sendResult) { session.getSender().getUpstreamBuff().release(); messageLogger.info("upstreamMsg message success|user={}|callback cost={}", session.getClient(), - String.valueOf(System.currentTimeMillis() - createTime)); + String.valueOf(System.currentTimeMillis() - createTime)); if (replyCmd.equals(Command.BROADCAST_MESSAGE_TO_SERVER_ACK) || replyCmd.equals(Command - .ASYNC_MESSAGE_TO_SERVER_ACK)) { + .ASYNC_MESSAGE_TO_SERVER_ACK)) { msg.setHeader(new Header(replyCmd, OPStatus.SUCCESS.getCode(), OPStatus.SUCCESS.getDesc(), - pkg.getHeader().getSeq())); + pkg.getHeader().getSeq())); msg.setBody(event); Utils.writeAndFlush(msg, startTime, taskExecuteTime, session.getContext(), session); } @@ -193,16 +193,16 @@ public class MessageTransferTask extends AbstractTask { // retry UpStreamMsgContext upStreamMsgContext = new UpStreamMsgContext( - session, event, pkg.getHeader(), startTime, taskExecuteTime); + session, event, pkg.getHeader(), startTime, taskExecuteTime); upStreamMsgContext.delay(10000); session.getClientGroupWrapper().get().getEventMeshTcpRetryer().pushRetry(upStreamMsgContext); session.getSender().failMsgCount.incrementAndGet(); messageLogger - .error("upstreamMsg mq message error|user={}|callback cost={}, errMsg={}", session.getClient(), - (System.currentTimeMillis() - createTime), new Exception(context.getException())); + .error("upstreamMsg mq message error|user={}|callback cost={}, errMsg={}", session.getClient(), + (System.currentTimeMillis() - createTime), new Exception(context.getException())); msg.setHeader(new Header(replyCmd, OPStatus.FAIL.getCode(), context.getException().toString(), - pkg.getHeader().getSeq())); + pkg.getHeader().getSeq())); msg.setBody(event); Utils.writeAndFlush(msg, startTime, taskExecuteTime, session.getContext(), session); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/RecommendTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/RecommendTask.java index ca626a87e..da595bacf 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/RecommendTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/RecommendTask.java @@ -14,21 +14,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.core.protocol.tcp.client.task; -import io.netty.channel.ChannelHandlerContext; -import org.apache.commons.lang3.StringUtils; -import org.apache.eventmesh.common.protocol.tcp.*; +import static org.apache.eventmesh.common.protocol.tcp.Command.RECOMMEND_RESPONSE; +import static org.apache.eventmesh.runtime.util.Utils.writeAndFlush; + +import org.apache.eventmesh.common.protocol.tcp.Header; +import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; +import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendImpl; import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendStrategy; + +import org.apache.commons.lang3.StringUtils; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.eventmesh.common.protocol.tcp.Command.RECOMMEND_RESPONSE; -import static org.apache.eventmesh.runtime.util.Utils.writeAndFlush; +import io.netty.channel.ChannelHandlerContext; public class RecommendTask extends AbstractTask { @@ -43,12 +49,12 @@ public class RecommendTask extends AbstractTask { long taskExecuteTime = System.currentTimeMillis(); Package res = new Package(); try { - if(!eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerRegistryEnable) { + if (!eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerRegistryEnable) { throw new Exception("registry enable config is false, not support"); } UserAgent user = (UserAgent) pkg.getBody(); validateUserAgent(user); - String group = getGroupOfClient(user); + String group = getGroupOfClient(user); EventMeshRecommendStrategy eventMeshRecommendStrategy = new EventMeshRecommendImpl(eventMeshTCPServer); String eventMeshRecommendResult = eventMeshRecommendStrategy.calculateRecommendEventMesh(group, user.getPurpose()); res.setHeader(new Header(RECOMMEND_RESPONSE, OPStatus.SUCCESS.getCode(), OPStatus.SUCCESS.getDesc(), pkg.getHeader().getSeq())); @@ -81,20 +87,21 @@ public class RecommendTask extends AbstractTask { throw new Exception("client wemqPasswd cannot be null"); } - if (!(StringUtils.equals(EventMeshConstants.PURPOSE_PUB, user.getPurpose()) || StringUtils.equals(EventMeshConstants.PURPOSE_SUB, user.getPurpose()))) { + if (!(StringUtils.equals(EventMeshConstants.PURPOSE_PUB, user.getPurpose()) || StringUtils.equals( + EventMeshConstants.PURPOSE_SUB, user.getPurpose()))) { throw new Exception("client purpose config is error"); } } - private String getGroupOfClient(UserAgent userAgent){ - if(userAgent == null){ + private String getGroupOfClient(UserAgent userAgent) { + if (userAgent == null) { return null; } - if(EventMeshConstants.PURPOSE_PUB.equals(userAgent.getPurpose())){ + if (EventMeshConstants.PURPOSE_PUB.equals(userAgent.getPurpose())) { return userAgent.getProducerGroup(); - }else if(EventMeshConstants.PURPOSE_SUB.equals(userAgent.getPurpose())){ + } else if (EventMeshConstants.PURPOSE_SUB.equals(userAgent.getPurpose())) { return userAgent.getConsumerGroup(); - }else{ + } else { return null; } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/SubscribeTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/SubscribeTask.java index c48a881e8..852636c37 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/SubscribeTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/SubscribeTask.java @@ -17,22 +17,25 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.task; -import java.util.ArrayList; -import java.util.List; - -import io.netty.channel.ChannelHandlerContext; - -import org.apache.eventmesh.common.protocol.tcp.Subscription; import org.apache.eventmesh.common.protocol.SubscriptionItem; -import org.apache.eventmesh.common.protocol.tcp.*; +import org.apache.eventmesh.common.protocol.tcp.Command; +import org.apache.eventmesh.common.protocol.tcp.Header; +import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; +import org.apache.eventmesh.common.protocol.tcp.Subscription; import org.apache.eventmesh.runtime.acl.Acl; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.util.RemotingHelper; import org.apache.eventmesh.runtime.util.Utils; + +import java.util.ArrayList; +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public class SubscribeTask extends AbstractTask { private final Logger messageLogger = LoggerFactory.getLogger("message"); @@ -56,7 +59,7 @@ public class SubscribeTask extends AbstractTask { SubscriptionItem item = subscriptionInfo.getTopicList().get(i); //do acl check for receive msg - if(eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerSecurityEnable){ + if (eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshServerSecurityEnable) { String remoteAddr = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); Acl.doAclCheckInTcpReceive(remoteAddr, session.getClient(), item.getTopic(), Command.SUBSCRIBE_REQUEST.value()); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/UnSubscribeTask.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/UnSubscribeTask.java index c35245ada..15e3f7032 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/UnSubscribeTask.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/task/UnSubscribeTask.java @@ -17,13 +17,6 @@ package org.apache.eventmesh.runtime.core.protocol.tcp.client.task; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import io.netty.channel.ChannelHandlerContext; - -import org.apache.commons.collections4.MapUtils; import org.apache.eventmesh.common.protocol.SubscriptionItem; import org.apache.eventmesh.common.protocol.tcp.Command; import org.apache.eventmesh.common.protocol.tcp.Header; @@ -31,9 +24,18 @@ import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; import org.apache.eventmesh.runtime.util.Utils; + +import org.apache.commons.collections4.MapUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public class UnSubscribeTask extends AbstractTask { private final Logger messageLogger = LoggerFactory.getLogger("message"); @@ -61,7 +63,8 @@ public class UnSubscribeTask extends AbstractTask { .getSeq())); } catch (Exception e) { messageLogger.error("UnSubscribeTask failed|user={}|errMsg={}", session.getClient(), e); - msg.setHeader(new Header(Command.UNSUBSCRIBE_RESPONSE, OPStatus.FAIL.getCode(), "exception while " + + msg.setHeader(new Header(Command.UNSUBSCRIBE_RESPONSE, OPStatus.FAIL.getCode(), "exception while " + + "unSubscribing", pkg.getHeader().getSeq())); } finally { Utils.writeAndFlush(msg, startTime, taskExecuteTime, session.getContext(), session); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/domain/NonStandardKeys.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/domain/NonStandardKeys.java index 779b3dcce..a82c71e4a 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/domain/NonStandardKeys.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/domain/NonStandardKeys.java @@ -14,8 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.domain; +/** + * NonStandardKeys + */ public interface NonStandardKeys { String CONSUMER_GROUP = "rmq.consumer.group"; String PRODUCER_GROUP = "rmq.producer.group"; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/domain/RocketMQConstants.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/domain/RocketMQConstants.java index a8f08533d..95fb1aee0 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/domain/RocketMQConstants.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/domain/RocketMQConstants.java @@ -14,8 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + + package org.apache.eventmesh.runtime.domain; +/** + * RocketMQConstants + */ public interface RocketMQConstants { /** diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/GroupMetrics.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/GroupMetrics.java index 75f3d5d93..85ded0bcb 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/GroupMetrics.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/GroupMetrics.java @@ -17,10 +17,10 @@ package org.apache.eventmesh.runtime.metrics.http; -import com.codahale.metrics.MetricRegistry; - import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; +import com.codahale.metrics.MetricRegistry; + public class GroupMetrics { private EventMeshHTTPServer eventMeshHTTPServer; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/HTTPMetricsServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/HTTPMetricsServer.java index d49167f88..4659dbfa7 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/HTTPMetricsServer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/HTTPMetricsServer.java @@ -17,19 +17,20 @@ package org.apache.eventmesh.runtime.metrics.http; +import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; +import org.apache.eventmesh.runtime.metrics.opentelemetry.OpenTelemetryHTTPMetricsExporter; + import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import com.codahale.metrics.MetricRegistry; - -import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; -import org.apache.eventmesh.runtime.metrics.opentelemetry.OpenTelemetryHTTPMetricsExporter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.codahale.metrics.MetricRegistry; + public class HTTPMetricsServer { private EventMeshHTTPServer eventMeshHTTPServer; @@ -60,7 +61,7 @@ public class HTTPMetricsServer { groupMetrics = new GroupMetrics(this.eventMeshHTTPServer, this.metricRegistry); healthMetrics = new HealthMetrics(this.eventMeshHTTPServer, this.metricRegistry); - openTelemetryHTTPMetricsExporter = new OpenTelemetryHTTPMetricsExporter(this,this.eventMeshHTTPServer.getEventMeshHttpConfiguration()); + openTelemetryHTTPMetricsExporter = new OpenTelemetryHTTPMetricsExporter(this, this.eventMeshHTTPServer.getEventMeshHttpConfiguration()); logger.info("HTTPMetricsServer inited......"); } @@ -170,19 +171,19 @@ public class HTTPMetricsServer { summaryMetrics.send2MQStatInfoClear(); } - public int getBatchMsgQ(){ + public int getBatchMsgQ() { return eventMeshHTTPServer.getBatchMsgExecutor().getQueue().size(); } - public int getSendMsgQ(){ + public int getSendMsgQ() { return eventMeshHTTPServer.getSendMsgExecutor().getQueue().size(); } - public int getPushMsgQ(){ + public int getPushMsgQ() { return eventMeshHTTPServer.getPushMsgExecutor().getQueue().size(); } - public int getHttpRetryQ(){ + public int getHttpRetryQ() { return eventMeshHTTPServer.getHttpRetryer().size(); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/HealthMetrics.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/HealthMetrics.java index 6e59fb636..7451d9988 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/HealthMetrics.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/HealthMetrics.java @@ -17,12 +17,13 @@ package org.apache.eventmesh.runtime.metrics.http; -import com.codahale.metrics.MetricRegistry; - import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.codahale.metrics.MetricRegistry; + public class HealthMetrics { private EventMeshHTTPServer eventMeshHTTPServer; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/SummaryMetrics.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/SummaryMetrics.java index a0e2223a4..3bf4fe909 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/SummaryMetrics.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/SummaryMetrics.java @@ -17,17 +17,18 @@ package org.apache.eventmesh.runtime.metrics.http; +import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; + import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.concurrent.atomic.AtomicLong; -import com.codahale.metrics.MetricRegistry; - -import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.codahale.metrics.MetricRegistry; + public class SummaryMetrics { public Logger logger = LoggerFactory.getLogger("httpMonitor"); @@ -58,9 +59,10 @@ public class SummaryMetrics { return sum / linkedList.size(); } - //////////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_HTTP = "{\"maxHTTPTPS\":\"%.1f\",\"avgHTTPTPS\":\"%.1f\"," + //EVENTMESH tps related to accepting external http requests - "\"maxHTTPCOST\":\"%s\",\"avgHTTPCOST\":\"%.1f\",\"avgHTTPBodyDecodeCost\":\"%.1f\", \"httpDiscard\":\"%s\"}"; + public static final String EVENTMESH_MONITOR_FORMAT_HTTP = "{\"maxHTTPTPS\":\"%.1f\",\"avgHTTPTPS\":\"%.1f\"," + //EVENTMESH tps related to accepting external http requests + + "\"maxHTTPCOST\":\"%s\",\"avgHTTPCOST\":\"%.1f\",\"avgHTTPBodyDecodeCost\":\"%.1f\", " + + "\"httpDiscard\":\"%s\"}"; private float wholeCost = 0f; @@ -76,7 +78,7 @@ public class SummaryMetrics { private LinkedList httpRequestTPSSnapshots = new LinkedList(); public float avgHTTPCost() { - float cost = (wholeRequestNum.longValue() == 0l) ? 0f : wholeCost / wholeRequestNum.longValue(); + float cost = (wholeRequestNum.longValue() == 0L) ? 0f : wholeCost / wholeRequestNum.longValue(); return cost; } @@ -125,10 +127,10 @@ public class SummaryMetrics { } public void httpStatInfoClear() { - wholeRequestNum.set(0l); + wholeRequestNum.set(0L); wholeCost = 0f; - maxCost.set(0l); - httpDecodeNum.set(0l); + maxCost.set(0L); + httpDecodeNum.set(0L); httpDecodeTimeCost = 0f; } @@ -142,14 +144,14 @@ public class SummaryMetrics { } public float avgHTTPBodyDecodeCost() { - float cost = (httpDecodeNum.longValue() == 0l) ? 0f : httpDecodeTimeCost / httpDecodeNum.longValue(); + float cost = (httpDecodeNum.longValue() == 0L) ? 0f : httpDecodeTimeCost / httpDecodeNum.longValue(); return cost; } ////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_BATCHSENDMSG = "{\"maxBatchSendMsgTPS\":\"%.1f\",\"avgBatchSendMsgTPS\":\"%.1f\"," + - " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.2f\", \"discard\":\"%s\"}"; + public static final String EVENTMESH_MONITOR_FORMAT_BATCHSENDMSG = "{\"maxBatchSendMsgTPS\":\"%.1f\",\"avgBatchSendMsgTPS\":\"%.1f\"," + + " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.2f\", \"discard\":\"%s\"}"; private AtomicLong sendBatchMsgNumPerSecond = new AtomicLong(0); @@ -203,12 +205,12 @@ public class SummaryMetrics { } public float getSendBatchMsgFailRate() { - return (sendBatchMsgNumSum.longValue() == 0l) ? 0f : sendBatchMsgFailNumSum.floatValue() / sendBatchMsgNumSum.longValue(); + return (sendBatchMsgNumSum.longValue() == 0L) ? 0f : sendBatchMsgFailNumSum.floatValue() / sendBatchMsgNumSum.longValue(); } public void cleanSendBatchStat() { - sendBatchMsgNumSum.set(0l); - sendBatchMsgFailNumSum.set(0l); + sendBatchMsgNumSum.set(0L); + sendBatchMsgFailNumSum.set(0L); } public long getSendBatchMsgDiscardNumSum() { @@ -216,8 +218,8 @@ public class SummaryMetrics { } ////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_SENDMSG = "{\"maxSendMsgTPS\":\"%.1f\",\"avgSendMsgTPS\":\"%.1f\"," + - " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.2f\", \"replyMsg\":\"%s\", \"replyFail\":\"%s\"}"; + public static final String EVENTMESH_MONITOR_FORMAT_SENDMSG = "{\"maxSendMsgTPS\":\"%.1f\",\"avgSendMsgTPS\":\"%.1f\"," + + " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.2f\", \"replyMsg\":\"%s\", \"replyFail\":\"%s\"}"; private AtomicLong sendMsgNumSum = new AtomicLong(0); @@ -280,7 +282,7 @@ public class SummaryMetrics { } public float getSendMsgFailRate() { - return (sendMsgNumSum.longValue() == 0l) ? 0f : sendMsgFailNumSum.floatValue() / sendMsgNumSum.longValue(); + return (sendMsgNumSum.longValue() == 0L) ? 0f : sendMsgFailNumSum.floatValue() / sendMsgNumSum.longValue(); } public void recordSendMsgFailed() { @@ -288,15 +290,15 @@ public class SummaryMetrics { } public void cleanSendMsgStat() { - sendMsgNumSum.set(0l); - replyMsgNumSum.set(0l); - sendMsgFailNumSum.set(0l); - replyMsgFailNumSum.set(0l); + sendMsgNumSum.set(0L); + replyMsgNumSum.set(0L); + sendMsgFailNumSum.set(0L); + replyMsgFailNumSum.set(0L); } //////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_PUSHMSG = "{\"maxPushMsgTPS\":\"%.1f\",\"avgPushMsgTPS\":\"%.1f\"," + - " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.1f\", \"maxClientLatency\":\"%.1f\", \"avgClientLatency\":\"%.1f\"}"; + public static final String EVENTMESH_MONITOR_FORMAT_PUSHMSG = "{\"maxPushMsgTPS\":\"%.1f\",\"avgPushMsgTPS\":\"%.1f\"," + + " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.1f\", \"maxClientLatency\":\"%.1f\", \"avgClientLatency\":\"%.1f\"}"; private float wholePushCost = 0f; @@ -330,7 +332,7 @@ public class SummaryMetrics { } public float avgHTTPPushLatency() { - return (wholePushRequestNum.longValue() == 0l) ? 0f : wholePushCost / wholePushRequestNum.longValue(); + return (wholePushRequestNum.longValue() == 0L) ? 0f : wholePushCost / wholePushRequestNum.longValue(); } public float maxHTTPPushLatency() { @@ -361,7 +363,7 @@ public class SummaryMetrics { } public float getHttpPushMsgFailRate() { - return (httpPushMsgNumSum.longValue() == 0l) ? 0f : httpPushFailNumSum.floatValue() / httpPushMsgNumSum.longValue(); + return (httpPushMsgNumSum.longValue() == 0L) ? 0f : httpPushFailNumSum.floatValue() / httpPushMsgNumSum.longValue(); } public void recordHttpPushMsgFailed() { @@ -369,19 +371,20 @@ public class SummaryMetrics { } public void cleanHttpPushMsgStat() { - httpPushFailNumSum.set(0l); - httpPushMsgNumSum.set(0l); - wholeRequestNum.set(0l); + httpPushFailNumSum.set(0L); + httpPushMsgNumSum.set(0L); + wholeRequestNum.set(0L); wholeCost = 0f; - maxCost.set(0l); + maxCost.set(0L); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_BLOCKQ = "{\"batchMsgQ\":\"%s\",\"sendMsgQ\":\"%s\"," + - "\"pushMsgQ\":\"%s\",\"httpRetryQ\":\"%s\"}"; + public static final String EVENTMESH_MONITOR_FORMAT_BLOCKQ = "{\"batchMsgQ\":\"%s\",\"sendMsgQ\":\"%s\"," + + "\"pushMsgQ\":\"%s\",\"httpRetryQ\":\"%s\"}"; /////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_MQ_CLIENT = "{\"batchAvgSend2MQCost\":\"%.1f\", \"avgSend2MQCost\":\"%.1f\", \"avgReply2MQCost\":\"%.1f\"}"; + public static final String EVENTMESH_MONITOR_FORMAT_MQ_CLIENT = "{\"batchAvgSend2MQCost\":\"%.1f\", " + + "\"avgSend2MQCost\":\"%.1f\", \"avgReply2MQCost\":\"%.1f\"}"; private float batchSend2MQWholeCost = 0f; @@ -427,10 +430,10 @@ public class SummaryMetrics { public void send2MQStatInfoClear() { batchSend2MQWholeCost = 0f; - batchSend2MQNum.set(0l); + batchSend2MQNum.set(0L); send2MQWholeCost = 0f; - send2MQNum.set(0l); + send2MQNum.set(0L); reply2MQWholeCost = 0f; - reply2MQNum.set(0l); + reply2MQNum.set(0L); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/TcpSummaryMetrics.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/TcpSummaryMetrics.java index ce5944d46..579c71bf8 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/TcpSummaryMetrics.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/TcpSummaryMetrics.java @@ -17,17 +17,18 @@ package org.apache.eventmesh.runtime.metrics.http; +import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; + import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.concurrent.atomic.AtomicLong; -import com.codahale.metrics.MetricRegistry; - -import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.codahale.metrics.MetricRegistry; + public class TcpSummaryMetrics { public Logger logger = LoggerFactory.getLogger("httpMonitor"); @@ -58,7 +59,8 @@ public class TcpSummaryMetrics { } //////////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_HTTP = "%15s : {\"maxHTTPTPS\":\"%.1f\",\"avgHTTPTPS\":\"%.1f\"," + //EVENTMESH tps related to accepting external http requests + public static final String EVENTMESH_MONITOR_FORMAT_HTTP = "%15s : {\"maxHTTPTPS\":\"%.1f\",\"avgHTTPTPS\":\"%.1f\"," + + //EVENTMESH tps related to accepting external http requests "\"maxHTTPCOST\":\"%s\",\"avgHTTPCOST\":\"%.1f\",\"avgHTTPBodyDecodeCost\":\"%.1f\"}"; private float wholeCost = 0f; @@ -72,7 +74,7 @@ public class TcpSummaryMetrics { private LinkedList httpRequestTPSSnapshots = new LinkedList(); public float avgHTTPCost() { - float cost = (wholeRequestNum.longValue() == 0l) ? 0f : wholeCost / wholeRequestNum.longValue(); + float cost = (wholeRequestNum.longValue() == 0L) ? 0f : wholeCost / wholeRequestNum.longValue(); return cost; } @@ -113,10 +115,10 @@ public class TcpSummaryMetrics { } public void httpStatInfoClear() { - wholeRequestNum.set(0l); + wholeRequestNum.set(0L); wholeCost = 0f; - maxCost.set(0l); - httpDecodeNum.set(0l); + maxCost.set(0L); + httpDecodeNum.set(0L); httpDecodeTimeCost = 0f; } @@ -130,13 +132,14 @@ public class TcpSummaryMetrics { } public float avgHTTPBodyDecodeCost() { - float cost = (httpDecodeNum.longValue() == 0l) ? 0f : httpDecodeTimeCost / httpDecodeNum.longValue(); + float cost = (httpDecodeNum.longValue() == 0L) ? 0f : httpDecodeTimeCost / httpDecodeNum.longValue(); return cost; } ////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_BATCHSENDMSG = "%15s : {\"maxBatchSendMsgTPS\":\"%.1f\",\"avgBatchSendMsgTPS\":\"%.1f\"," + + public static final String EVENTMESH_MONITOR_FORMAT_BATCHSENDMSG = "%15s : {\"maxBatchSendMsgTPS\":\"%.1f\",\"avgBatchSendMsgTPS\":\"%.1f\"," + + " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.2f\", \"discard\":\"%s\"}"; private AtomicLong sendBatchMsgNumPerSecond = new AtomicLong(0); @@ -190,12 +193,12 @@ public class TcpSummaryMetrics { } public float getSendBatchMsgFailRate() { - return (sendBatchMsgNumSum.longValue() == 0l) ? 0f : sendBatchMsgFailNumSum.floatValue() / sendBatchMsgNumSum.longValue(); + return (sendBatchMsgNumSum.longValue() == 0L) ? 0f : sendBatchMsgFailNumSum.floatValue() / sendBatchMsgNumSum.longValue(); } public void cleanSendBatchStat() { - sendBatchMsgNumSum.set(0l); - sendBatchMsgFailNumSum.set(0l); + sendBatchMsgNumSum.set(0L); + sendBatchMsgFailNumSum.set(0L); } public long getSendBatchMsgDiscardNumSum() { @@ -203,7 +206,8 @@ public class TcpSummaryMetrics { } ////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_SENDMSG = "%15s : {\"maxSendMsgTPS\":\"%.1f\",\"avgSendMsgTPS\":\"%.1f\"," + + public static final String EVENTMESH_MONITOR_FORMAT_SENDMSG = "%15s : {\"maxSendMsgTPS\":\"%.1f\",\"avgSendMsgTPS\":\"%.1f\"," + + " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.2f\", \"discard\":\"%s\"}"; private AtomicLong sendMsgNumSum = new AtomicLong(0); @@ -249,7 +253,7 @@ public class TcpSummaryMetrics { } public float getSendMsgFailRate() { - return (sendMsgNumSum.longValue() == 0l) ? 0f : sendMsgFailNumSum.floatValue() / sendMsgNumSum.longValue(); + return (sendMsgNumSum.longValue() == 0L) ? 0f : sendMsgFailNumSum.floatValue() / sendMsgNumSum.longValue(); } public void recordSendMsgFailed() { @@ -261,8 +265,8 @@ public class TcpSummaryMetrics { } public void cleanSendMsgStat() { - sendMsgNumSum.set(0l); - sendMsgFailNumSum.set(0l); + sendMsgNumSum.set(0L); + sendMsgFailNumSum.set(0L); } public long getSendMsgDiscardNumSum() { @@ -270,8 +274,10 @@ public class TcpSummaryMetrics { } //////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_PUSHMSG = "%15s : {\"maxPushMsgTPS\":\"%.1f\",\"avgPushMsgTPS\":\"%.1f\"," + - " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.1f\", \"maxClientLatency\":\"%.1f\", \"avgClientLatency\":\"%.1f\"}"; + public static final String EVENTMESH_MONITOR_FORMAT_PUSHMSG = "%15s : {\"maxPushMsgTPS\":\"%.1f\",\"avgPushMsgTPS\":\"%.1f\"," + + + " \"sum\":\"%s\", \"sumFail\":\"%s\", \"sumFailRate\":\"%.1f\", " + + "\"maxClientLatency\":\"%.1f\", \"avgClientLatency\":\"%.1f\"}"; private float wholePushCost = 0f; @@ -305,7 +311,7 @@ public class TcpSummaryMetrics { } public float avgHTTPPushLatency() { - return (wholePushRequestNum.longValue() == 0l) ? 0f : wholePushCost / wholePushRequestNum.longValue(); + return (wholePushRequestNum.longValue() == 0L) ? 0f : wholePushCost / wholePushRequestNum.longValue(); } public float maxHTTPPushLatency() { @@ -336,7 +342,7 @@ public class TcpSummaryMetrics { } public float getHttpPushMsgFailRate() { - return (httpPushMsgNumSum.longValue() == 0l) ? 0f : httpPushFailNumSum.floatValue() / httpPushMsgNumSum.longValue(); + return (httpPushMsgNumSum.longValue() == 0L) ? 0f : httpPushFailNumSum.floatValue() / httpPushMsgNumSum.longValue(); } public void recordHttpPushMsgFailed() { @@ -344,19 +350,21 @@ public class TcpSummaryMetrics { } public void cleanHttpPushMsgStat() { - httpPushFailNumSum.set(0l); - httpPushMsgNumSum.set(0l); - wholeRequestNum.set(0l); + httpPushFailNumSum.set(0L); + httpPushMsgNumSum.set(0L); + wholeRequestNum.set(0L); wholeCost = 0f; - maxCost.set(0l); + maxCost.set(0L); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_BLOCKQ = "%15s : {\"batchMsgQ\":\"%s\",\"sendMsgQ\":\"%s\"," + + public static final String EVENTMESH_MONITOR_FORMAT_BLOCKQ = "%15s : {\"batchMsgQ\":\"%s\",\"sendMsgQ\":\"%s\"," + + "\"pushMsgQ\":\"%s\",\"consumeRetryQ\":\"%s\"}"; /////////////////////////////////////////////////////////////////////////// - public static final String EVENTMESH_MONITOR_FORMAT_MQ_CLIENT = "%15s : {\"batchAvgSend2MQCost\":\"%.1f\", \"avgSend2MQCost\":\"%.1f\"}"; + public static final String EVENTMESH_MONITOR_FORMAT_MQ_CLIENT = "%15s : {\"batchAvgSend2MQCost\":\"%.1f\", " + + "\"avgSend2MQCost\":\"%.1f\"}"; private float batchSend2MQWholeCost = 0f; @@ -388,8 +396,8 @@ public class TcpSummaryMetrics { public void send2MQStatInfoClear() { batchSend2MQWholeCost = 0f; - batchSend2MQNum.set(0l); + batchSend2MQNum.set(0L); send2MQWholeCost = 0f; - send2MQNum.set(0l); + send2MQNum.set(0L); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/TopicMetrics.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/TopicMetrics.java index 6a0afabdc..06f97cada 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/TopicMetrics.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/http/TopicMetrics.java @@ -17,10 +17,10 @@ package org.apache.eventmesh.runtime.metrics.http; -import com.codahale.metrics.MetricRegistry; - import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; +import com.codahale.metrics.MetricRegistry; + public class TopicMetrics { private EventMeshHTTPServer eventMeshHTTPServer; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryHTTPMetricsExporter.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryHTTPMetricsExporter.java index b3805d2b9..65d135796 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryHTTPMetricsExporter.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryHTTPMetricsExporter.java @@ -17,13 +17,14 @@ package org.apache.eventmesh.runtime.metrics.opentelemetry; -import io.opentelemetry.api.metrics.GlobalMeterProvider; -import io.opentelemetry.api.metrics.Meter; -import io.opentelemetry.api.metrics.common.Labels; import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration; import org.apache.eventmesh.runtime.metrics.http.HTTPMetricsServer; import org.apache.eventmesh.runtime.metrics.http.SummaryMetrics; +import io.opentelemetry.api.metrics.GlobalMeterProvider; +import io.opentelemetry.api.metrics.Meter; +import io.opentelemetry.api.metrics.common.Labels; + public class OpenTelemetryHTTPMetricsExporter { private final SummaryMetrics summaryMetrics; @@ -43,7 +44,7 @@ public class OpenTelemetryHTTPMetricsExporter { .doubleValueObserverBuilder("eventmesh.http.request.tps.max") .setDescription("max TPS of HTTP.") .setUnit("HTTP") - .setUpdater(result -> result.observe(summaryMetrics.maxHTTPTPS(),Labels.empty())) + .setUpdater(result -> result.observe(summaryMetrics.maxHTTPTPS(), Labels.empty())) .build(); //avgHTTPTPS @@ -51,7 +52,7 @@ public class OpenTelemetryHTTPMetricsExporter { .doubleValueObserverBuilder("eventmesh.http.request.tps.avg") .setDescription("avg TPS of HTTP.") .setUnit("HTTP") - .setUpdater(result -> result.observe(summaryMetrics.avgHTTPTPS(),Labels.empty())) + .setUpdater(result -> result.observe(summaryMetrics.avgHTTPTPS(), Labels.empty())) .build(); //maxHTTPCost @@ -303,7 +304,7 @@ public class OpenTelemetryHTTPMetricsExporter { .build(); } - public void shutdown(){ + public void shutdown() { OpenTelemetryPrometheusExporter.shutdown(); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryPrometheusExporter.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryPrometheusExporter.java index 730adc925..f3ca62793 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryPrometheusExporter.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryPrometheusExporter.java @@ -17,13 +17,16 @@ package org.apache.eventmesh.runtime.metrics.opentelemetry; +import org.apache.eventmesh.common.config.CommonConfiguration; + +import java.io.IOException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import io.opentelemetry.exporter.prometheus.PrometheusCollector; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.prometheus.client.exporter.HTTPServer; -import org.apache.eventmesh.common.config.CommonConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.io.IOException; public class OpenTelemetryPrometheusExporter { @@ -36,8 +39,8 @@ public class OpenTelemetryPrometheusExporter { * * @param configuration configuration. */ - public synchronized static void initialize(CommonConfiguration configuration) { - if (server != null){ + public static synchronized void initialize(CommonConfiguration configuration) { + if (server != null) { return; } PrometheusCollector.builder().setMetricProducer( @@ -45,7 +48,7 @@ public class OpenTelemetryPrometheusExporter { int port = configuration.eventMeshPrometheusPort; try { //Use the daemon thread to start an HTTP server to serve the default Prometheus registry. - server = new HTTPServer(port,true); + server = new HTTPServer(port, true); } catch (IOException e) { logger.error("failed to start prometheus server, port: {} due to {}", port, e.getMessage()); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryTCPMetricsExporter.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryTCPMetricsExporter.java index c75896236..5b4f6ce69 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryTCPMetricsExporter.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/opentelemetry/OpenTelemetryTCPMetricsExporter.java @@ -17,90 +17,86 @@ package org.apache.eventmesh.runtime.metrics.opentelemetry; -import io.opentelemetry.api.metrics.GlobalMeterProvider; -import io.opentelemetry.api.metrics.Meter; -import io.opentelemetry.api.metrics.common.Labels; import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcpConnectionHandler; import org.apache.eventmesh.runtime.metrics.tcp.EventMeshTcpMonitor; +import io.opentelemetry.api.metrics.GlobalMeterProvider; +import io.opentelemetry.api.metrics.Meter; +import io.opentelemetry.api.metrics.common.Labels; + public class OpenTelemetryTCPMetricsExporter { private final EventMeshTcpMonitor eventMeshTcpMonitor; - public OpenTelemetryTCPMetricsExporter(EventMeshTcpMonitor eventMeshTcpMonitor , EventMeshTCPConfiguration eventMeshTCPConfiguration){ + public OpenTelemetryTCPMetricsExporter(EventMeshTcpMonitor eventMeshTcpMonitor, + EventMeshTCPConfiguration eventMeshTCPConfiguration) { OpenTelemetryPrometheusExporter.initialize(eventMeshTCPConfiguration); this.eventMeshTcpMonitor = eventMeshTcpMonitor; } - public void start(){ + public void start() { Meter meter = GlobalMeterProvider.getMeter("apache-eventmesh"); //retryQueueSize - meter - .doubleValueObserverBuilder("eventmesh.tcp.retry.queue.size") + meter.doubleValueObserverBuilder("eventmesh.tcp.retry.queue.size") .setDescription("get size of retry queue.") .setUnit("TCP") - .setUpdater(result -> result.observe(eventMeshTcpMonitor.getEventMeshTCPServer().getEventMeshTcpRetryer().getRetrySize(), Labels.empty())) + .setUpdater(result -> result.observe( + eventMeshTcpMonitor.getEventMeshTCPServer() + .getEventMeshTcpRetryer().getRetrySize(), Labels.empty())) .build(); //client2eventMeshTPS - meter - .doubleValueObserverBuilder("eventmesh.tcp.server.tps") + meter.doubleValueObserverBuilder("eventmesh.tcp.server.tps") .setDescription("get tps of client to eventMesh.") .setUnit("TCP") .setUpdater(result -> result.observe(eventMeshTcpMonitor.getClient2eventMeshTPS(), Labels.empty())) .build(); //eventMesh2mqTPS - meter - .doubleValueObserverBuilder("eventmesh.tcp.mq.provider.tps") + meter.doubleValueObserverBuilder("eventmesh.tcp.mq.provider.tps") .setDescription("get tps of eventMesh to mq.") .setUnit("TCP") .setUpdater(result -> result.observe(eventMeshTcpMonitor.getEventMesh2mqTPS(), Labels.empty())) .build(); //mq2eventMeshTPS - meter - .doubleValueObserverBuilder("eventmesh.tcp.mq.consumer.tps") + meter.doubleValueObserverBuilder("eventmesh.tcp.mq.consumer.tps") .setDescription("get tps of mq to eventMesh.") .setUnit("TCP") .setUpdater(result -> result.observe(eventMeshTcpMonitor.getMq2eventMeshTPS(), Labels.empty())) .build(); //eventMesh2clientTPS - meter - .doubleValueObserverBuilder("eventmesh.tcp.client.tps") + meter.doubleValueObserverBuilder("eventmesh.tcp.client.tps") .setDescription("get tps of eventMesh to client.") .setUnit("TCP") .setUpdater(result -> result.observe(eventMeshTcpMonitor.getEventMesh2clientTPS(), Labels.empty())) .build(); //allTPS - meter - .doubleValueObserverBuilder("eventmesh.tcp.all.tps") + meter.doubleValueObserverBuilder("eventmesh.tcp.all.tps") .setDescription("get all TPS.") .setUnit("TCP") .setUpdater(result -> result.observe(eventMeshTcpMonitor.getAllTPS(), Labels.empty())) .build(); //EventMeshTcpConnectionHandler.connections - meter - .doubleValueObserverBuilder("eventmesh.tcp.connection.num") + meter.doubleValueObserverBuilder("eventmesh.tcp.connection.num") .setDescription("EventMeshTcpConnectionHandler.connections.") .setUnit("TCP") .setUpdater(result -> result.observe(EventMeshTcpConnectionHandler.connections.doubleValue(), Labels.empty())) .build(); //subTopicNum - meter - .doubleValueObserverBuilder("eventmesh.tcp.sub.topic.num") + meter.doubleValueObserverBuilder("eventmesh.tcp.sub.topic.num") .setDescription("get sub topic num.") .setUnit("TCP") .setUpdater(result -> result.observe(eventMeshTcpMonitor.getSubTopicNum(), Labels.empty())) .build(); } - public void shutdown(){ + public void shutdown() { OpenTelemetryPrometheusExporter.shutdown(); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/tcp/EventMeshTcpMonitor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/tcp/EventMeshTcpMonitor.java index 2a2cbdca7..c94e604b1 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/tcp/EventMeshTcpMonitor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/metrics/tcp/EventMeshTcpMonitor.java @@ -17,6 +17,13 @@ package org.apache.eventmesh.runtime.metrics.tcp; +import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; +import org.apache.eventmesh.runtime.constants.EventMeshConstants; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcpConnectionHandler; +import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; +import org.apache.eventmesh.runtime.metrics.MonitorMetricConstants; +import org.apache.eventmesh.runtime.metrics.opentelemetry.OpenTelemetryTCPMetricsExporter; + import java.net.InetSocketAddress; import java.util.HashSet; import java.util.Iterator; @@ -27,12 +34,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; -import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; -import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcpConnectionHandler; -import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; -import org.apache.eventmesh.runtime.metrics.MonitorMetricConstants; -import org.apache.eventmesh.runtime.metrics.opentelemetry.OpenTelemetryTCPMetricsExporter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -83,7 +84,7 @@ public class EventMeshTcpMonitor { this.eventMesh2mqMsgNum = new AtomicInteger(0); this.mq2eventMeshMsgNum = new AtomicInteger(0); this.eventMesh2clientMsgNum = new AtomicInteger(0); - this.metricsExporter = new OpenTelemetryTCPMetricsExporter(this,eventMeshTCPServer.getEventMeshTCPConfiguration()); + this.metricsExporter = new OpenTelemetryTCPMetricsExporter(this, eventMeshTCPServer.getEventMeshTCPConfiguration()); logger.info("EventMeshTcpMonitor inited......"); } @@ -130,26 +131,35 @@ public class EventMeshTcpMonitor { } subTopicNum = topicSet.size(); - appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.CLIENT_2_EVENTMESH_TPS, client2eventMeshTPS)); - appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.EVENTMESH_2_MQ_TPS, eventMesh2mqTPS)); - appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.MQ_2_EVENTMESH_TPS, mq2eventMeshTPS)); - appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.EVENTMESH_2_CLIENT_TPS, eventMesh2clientTPS)); - appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.ALL_TPS, allTPS)); - appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.CONNECTION, EventMeshTcpConnectionHandler.connections)); - appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.SUB_TOPIC_NUM, subTopicNum)); + appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, + EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.CLIENT_2_EVENTMESH_TPS, client2eventMeshTPS)); + appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, + EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.EVENTMESH_2_MQ_TPS, eventMesh2mqTPS)); + appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, + EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.MQ_2_EVENTMESH_TPS, mq2eventMeshTPS)); + appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, + EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.EVENTMESH_2_CLIENT_TPS, eventMesh2clientTPS)); + appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, + EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.ALL_TPS, allTPS)); + appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, + EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.CONNECTION, + EventMeshTcpConnectionHandler.connections)); + appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, + EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.SUB_TOPIC_NUM, subTopicNum)); } }), delay, period, TimeUnit.MILLISECONDS); monitorThreadPoolTask = eventMeshTCPServer.getScheduler().scheduleAtFixedRate(new Runnable() { @Override public void run() { -// ThreadPoolHelper.printThreadPoolState(); + //ThreadPoolHelper.printThreadPoolState(); eventMeshTCPServer.getEventMeshRebalanceService().printRebalanceThreadPoolState(); eventMeshTCPServer.getEventMeshTcpRetryer().printRetryThreadPoolState(); //monitor retry queue size int retrySize = eventMeshTCPServer.getEventMeshTcpRetryer().getRetrySize(); - appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.RETRY_QUEUE_SIZE, retrySize)); + appLogger.info(String.format(MonitorMetricConstants.EVENTMESH_MONITOR_FORMAT_COMMON, + EventMeshConstants.PROTOCOL_TCP, MonitorMetricConstants.RETRY_QUEUE_SIZE, retrySize)); } }, 10, PRINT_THREADPOOLSTATE_INTERVAL, TimeUnit.SECONDS); logger.info("EventMeshTcpMonitor started......"); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/registry/Registry.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/registry/Registry.java index c8fe7ad8f..2a8d6999c 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/registry/Registry.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/registry/Registry.java @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.runtime.registry; import org.apache.eventmesh.api.registry.RegistryService; @@ -21,12 +22,13 @@ import org.apache.eventmesh.api.registry.dto.EventMeshDataInfo; import org.apache.eventmesh.api.registry.dto.EventMeshRegisterInfo; import org.apache.eventmesh.api.registry.dto.EventMeshUnRegisterInfo; import org.apache.eventmesh.spi.EventMeshExtensionFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class Registry { private static final Logger logger = LoggerFactory.getLogger(Registry.class); private static RegistryService registryService; @@ -40,27 +42,27 @@ public class Registry { registryService.init(); } - public void start() throws Exception{ + public void start() throws Exception { registryService.start(); } - public void shutdown() throws Exception{ + public void shutdown() throws Exception { registryService.shutdown(); } - public List findEventMeshInfoByCluster(String clusterName) throws Exception{ + public List findEventMeshInfoByCluster(String clusterName) throws Exception { return registryService.findEventMeshInfoByCluster(clusterName); } - public Map> findEventMeshClientDistributionData(String clusterName, String group, String purpose) throws Exception{ + public Map> findEventMeshClientDistributionData(String clusterName, String group, String purpose) throws Exception { return registryService.findEventMeshClientDistributionData(clusterName, group, purpose); } - public boolean register(EventMeshRegisterInfo eventMeshRegisterInfo) throws Exception{ + public boolean register(EventMeshRegisterInfo eventMeshRegisterInfo) throws Exception { return registryService.register(eventMeshRegisterInfo); } - public boolean unRegister(EventMeshUnRegisterInfo eventMeshUnRegisterInfo) throws Exception{ + public boolean unRegister(EventMeshUnRegisterInfo eventMeshUnRegisterInfo) throws Exception { return registryService.unRegister(eventMeshUnRegisterInfo); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/EventMeshUtil.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/EventMeshUtil.java index 22400f7c3..3e3c066ab 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/EventMeshUtil.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/EventMeshUtil.java @@ -17,44 +17,43 @@ package org.apache.eventmesh.runtime.util; +import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; +import org.apache.eventmesh.common.protocol.tcp.UserAgent; +import org.apache.eventmesh.common.utils.RandomStringUtils; +import org.apache.eventmesh.common.utils.ThreadUtils; +import org.apache.eventmesh.runtime.constants.EventMeshConstants; +import org.apache.eventmesh.runtime.constants.EventMeshVersion; + +import org.apache.commons.lang3.StringUtils; + import java.net.Inet6Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; -import java.util.Properties; import java.util.Set; import java.util.TimeZone; import java.util.concurrent.ThreadPoolExecutor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.cloudevents.CloudEvent; + import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; -import io.cloudevents.CloudEvent; - -import org.apache.commons.lang3.StringUtils; -import org.apache.eventmesh.common.Constants; -import org.apache.eventmesh.common.utils.RandomStringUtils; -import org.apache.eventmesh.common.utils.ThreadUtils; -import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; -import org.apache.eventmesh.common.protocol.tcp.UserAgent; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; -import org.apache.eventmesh.runtime.constants.EventMeshVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class EventMeshUtil { - public static Logger logger = LoggerFactory.getLogger(EventMeshUtil.class); + private static final Logger logger = LoggerFactory.getLogger(EventMeshUtil.class); - private final static Logger tcpLogger = LoggerFactory.getLogger("tcpMonitor"); + private static final Logger tcpLogger = LoggerFactory.getLogger("tcpMonitor"); public static String buildPushMsgSeqNo() { return StringUtils.rightPad(String.valueOf(System.currentTimeMillis()), 6) + RandomStringUtils.generateNum(4); @@ -155,86 +154,86 @@ public class EventMeshUtil { return prop; } -// public static org.apache.rocketmq.common.message.Message decodeMessage(AccessMessage accessMessage) { -// org.apache.rocketmq.common.message.Message msg = new org.apache.rocketmq.common.message.Message(); -// msg.setTopic(accessMessage.getTopic()); -// msg.setBody(accessMessage.getBody().getBytes()); -// msg.getProperty("init"); -// for (Map.Entry property : accessMessage.getProperties().entrySet()) { -// msg.getProperties().put(property.getKey(), property.getValue()); -// } -// return msg; -// } + //public static org.apache.rocketmq.common.message.Message decodeMessage(AccessMessage accessMessage) { + // org.apache.rocketmq.common.message.Message msg = new org.apache.rocketmq.common.message.Message(); + // msg.setTopic(accessMessage.getTopic()); + // msg.setBody(accessMessage.getBody().getBytes()); + // msg.getProperty("init"); + // for (Map.Entry property : accessMessage.getProperties().entrySet()) { + // msg.getProperties().put(property.getKey(), property.getValue()); + // } + // return msg; + //} -// public static Message decodeMessage(EventMeshMessage eventMeshMessage) { -// Message omsMsg = new Message(); -// omsMsg.setBody(eventMeshMessage.getBody().getBytes()); -// omsMsg.setTopic(eventMeshMessage.getTopic()); -// Properties systemProperties = new Properties(); -// Properties userProperties = new Properties(); -// -// final Set> entries = eventMeshMessage.getProperties().entrySet(); -// -// for (final Map.Entry entry : entries) { -// if (isOMSHeader(entry.getKey())) { -// systemProperties.put(entry.getKey(), entry.getValue()); -// } else { -// userProperties.put(entry.getKey(), entry.getValue()); -// } -// } -// -// systemProperties.put(Constants.PROPERTY_MESSAGE_DESTINATION, eventMeshMessage.getTopic()); -// omsMsg.setSystemProperties(systemProperties); -// omsMsg.setUserProperties(userProperties); -// return omsMsg; -// } + //public static Message decodeMessage(EventMeshMessage eventMeshMessage) { + // Message omsMsg = new Message(); + // omsMsg.setBody(eventMeshMessage.getBody().getBytes()); + // omsMsg.setTopic(eventMeshMessage.getTopic()); + // Properties systemProperties = new Properties(); + // Properties userProperties = new Properties(); + // + // final Set> entries = eventMeshMessage.getProperties().entrySet(); + // + // for (final Map.Entry entry : entries) { + // if (isOMSHeader(entry.getKey())) { + // systemProperties.put(entry.getKey(), entry.getValue()); + // } else { + // userProperties.put(entry.getKey(), entry.getValue()); + // } + // } + // + // systemProperties.put(Constants.PROPERTY_MESSAGE_DESTINATION, eventMeshMessage.getTopic()); + // omsMsg.setSystemProperties(systemProperties); + // omsMsg.setUserProperties(userProperties); + // return omsMsg; + //} + // + //public static AccessMessage encodeMessage(org.apache.rocketmq.common.message.Message msg) throws Exception { + // AccessMessage accessMessage = new AccessMessage(); + // accessMessage.setBody(new String(msg.getBody(), "UTF-8")); + // accessMessage.setTopic(msg.getTopic()); + // for (Map.Entry property : msg.getProperties().entrySet()) { + // accessMessage.getProperties().put(property.getKey(), property.getValue()); + // } + // return accessMessage; + //} -// public static AccessMessage encodeMessage(org.apache.rocketmq.common.message.Message msg) throws Exception { -// AccessMessage accessMessage = new AccessMessage(); -// accessMessage.setBody(new String(msg.getBody(), "UTF-8")); -// accessMessage.setTopic(msg.getTopic()); -// for (Map.Entry property : msg.getProperties().entrySet()) { -// accessMessage.getProperties().put(property.getKey(), property.getValue()); -// } -// return accessMessage; -// } - -// public static EventMeshMessage encodeMessage(Message omsMessage) throws Exception { -// -// EventMeshMessage eventMeshMessage = new EventMeshMessage(); -// eventMeshMessage.setBody(new String(omsMessage.getBody(), StandardCharsets.UTF_8)); -// -// Properties sysHeaders = omsMessage.getSystemProperties(); -// Properties userHeaders = omsMessage.getUserProperties(); -// -// //All destinations in RocketMQ use Topic -// eventMeshMessage.setTopic(sysHeaders.getProperty(Constants.PROPERTY_MESSAGE_DESTINATION)); -// -// if (sysHeaders.containsKey("START_TIME")) { -// long deliverTime; -// if (StringUtils.isBlank(sysHeaders.getProperty("START_TIME"))) { -// deliverTime = 0; -// } else { -// deliverTime = Long.parseLong(sysHeaders.getProperty("START_TIME")); -// } -// -// if (deliverTime > 0) { -//// rmqMessage.putUserProperty(RocketMQConstants.START_DELIVER_TIME, String.valueOf(deliverTime)); -// eventMeshMessage.getProperties().put("START_TIME", String.valueOf(deliverTime)); -// } -// } -// -// for (String key : userHeaders.stringPropertyNames()) { -// eventMeshMessage.getProperties().put(key, userHeaders.getProperty(key)); -// } -// -// //System headers has a high priority -// for (String key : sysHeaders.stringPropertyNames()) { -// eventMeshMessage.getProperties().put(key, sysHeaders.getProperty(key)); -// } -// -// return eventMeshMessage; -// } + //public static EventMeshMessage encodeMessage(Message omsMessage) throws Exception { + // + // EventMeshMessage eventMeshMessage = new EventMeshMessage(); + // eventMeshMessage.setBody(new String(omsMessage.getBody(), StandardCharsets.UTF_8)); + // + // Properties sysHeaders = omsMessage.getSystemProperties(); + // Properties userHeaders = omsMessage.getUserProperties(); + // + // //All destinations in RocketMQ use Topic + // eventMeshMessage.setTopic(sysHeaders.getProperty(Constants.PROPERTY_MESSAGE_DESTINATION)); + // + // if (sysHeaders.containsKey("START_TIME")) { + // long deliverTime; + // if (StringUtils.isBlank(sysHeaders.getProperty("START_TIME"))) { + // deliverTime = 0; + // } else { + // deliverTime = Long.parseLong(sysHeaders.getProperty("START_TIME")); + // } + // + // if (deliverTime > 0) { + // // rmqMessage.putUserProperty(RocketMQConstants.START_DELIVER_TIME, String.valueOf(deliverTime)); + // eventMeshMessage.getProperties().put("START_TIME", String.valueOf(deliverTime)); + // } + // } + // + // for (String key : userHeaders.stringPropertyNames()) { + // eventMeshMessage.getProperties().put(key, userHeaders.getProperty(key)); + // } + // + // //System headers has a high priority + // for (String key : sysHeaders.stringPropertyNames()) { + // eventMeshMessage.getProperties().put(key, sysHeaders.getProperty(key)); + // } + // + // return eventMeshMessage; + //} public static String getLocalAddr() { //priority of networkInterface when generating client ip @@ -254,10 +253,9 @@ public class EventMeshUtil { continue; } else if (preferNetworkInterface == null) { preferNetworkInterface = networkInterface; - } - //get the networkInterface that has higher priority - else if (preferList.indexOf(networkInterface.getName()) + } else if (preferList.indexOf(networkInterface.getName()) > preferList.indexOf(preferNetworkInterface.getName())) { + //get the networkInterface that has higher priority preferNetworkInterface = networkInterface; } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpTinyClient.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpTinyClient.java index f3a930ca0..c118471ab 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpTinyClient.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpTinyClient.java @@ -17,6 +17,8 @@ package org.apache.eventmesh.runtime.util; +import org.apache.eventmesh.runtime.constants.EventMeshConstants; + import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; @@ -25,11 +27,9 @@ import java.net.URLEncoder; import java.util.Iterator; import java.util.List; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; - public class HttpTinyClient { - static public HttpResult httpGet(String url, List headers, List paramValues, + public static HttpResult httpGet(String url, List headers, List paramValues, String encoding, long readTimeoutMs) throws IOException { String encodedContent = encodingParams(paramValues, encoding); url += (null == encodedContent) ? "" : ("?" + encodedContent); @@ -59,7 +59,7 @@ public class HttpTinyClient { } } - static private String encodingParams(List paramValues, String encoding) + private static String encodingParams(List paramValues, String encoding) throws UnsupportedEncodingException { StringBuilder sb = new StringBuilder(); if (null == paramValues) { @@ -76,13 +76,13 @@ public class HttpTinyClient { return sb.toString(); } - static private void setHeaders(HttpURLConnection conn, List headers, String encoding) { + private static void setHeaders(HttpURLConnection conn, List headers, String encoding) { if (null != headers) { for (Iterator iter = headers.iterator(); iter.hasNext(); ) { conn.addRequestProperty(iter.next(), iter.next()); } } -// conn.addRequestProperty("Client-Version", MQVersion.getVersionDesc(MQVersion.CURRENT_VERSION)); + //conn.addRequestProperty("Client-Version", MQVersion.getVersionDesc(MQVersion.CURRENT_VERSION)); conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + encoding); String ts = String.valueOf(System.currentTimeMillis()); @@ -92,7 +92,7 @@ public class HttpTinyClient { /** * @return the http response of given http post request */ - static public HttpResult httpPost(String url, List headers, List paramValues, + public static HttpResult httpPost(String url, List headers, List paramValues, String encoding, long readTimeoutMs) throws IOException { String encodedContent = encodingParams(paramValues, encoding); @@ -124,13 +124,21 @@ public class HttpTinyClient { } } - static public class HttpResult { - final public int code; - final public String content; + public static class HttpResult { + private final int code; + private final String content; public HttpResult(int code, String content) { this.code = code; this.content = content; } + + public int getCode() { + return code; + } + + public String getContent() { + return content; + } } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/IOTinyUtils.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/IOTinyUtils.java index 7ce4d154a..5aa315374 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/IOTinyUtils.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/IOTinyUtils.java @@ -17,6 +17,8 @@ package org.apache.eventmesh.runtime.util; +import org.apache.eventmesh.runtime.constants.EventMeshConstants; + import java.io.BufferedReader; import java.io.CharArrayWriter; import java.io.File; @@ -32,22 +34,20 @@ import java.nio.channels.FileChannel; import java.util.ArrayList; import java.util.List; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; - public class IOTinyUtils { - static public String toString(InputStream input, String encoding) throws IOException { - return (null == encoding) ? toString(new InputStreamReader(input, EventMeshConstants.DEFAULT_CHARSET)) : toString(new InputStreamReader( - input, encoding)); + public static String toString(InputStream input, String encoding) throws IOException { + return (null == encoding) ? toString(new InputStreamReader(input, EventMeshConstants.DEFAULT_CHARSET)) + : toString(new InputStreamReader(input, encoding)); } - static public String toString(Reader reader) throws IOException { + public static String toString(Reader reader) throws IOException { CharArrayWriter sw = new CharArrayWriter(); copy(reader, sw); return sw.toString(); } - static public long copy(Reader input, Writer output) throws IOException { + public static long copy(Reader input, Writer output) throws IOException { char[] buffer = new char[1 << 12]; long count = 0; for (int n = 0; (n = input.read(buffer)) >= 0; ) { @@ -57,7 +57,7 @@ public class IOTinyUtils { return count; } - static public List readLines(Reader input) throws IOException { + public static List readLines(Reader input) throws IOException { BufferedReader reader = toBufferedReader(input); List list = new ArrayList(); String line; @@ -72,11 +72,11 @@ public class IOTinyUtils { return list; } - static private BufferedReader toBufferedReader(Reader reader) { + private static BufferedReader toBufferedReader(Reader reader) { return reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader); } - static public void copyFile(String source, String target) throws IOException { + public static void copyFile(String source, String target) throws IOException { File sf = new File(source); if (!sf.exists()) { throw new IllegalArgumentException("source file does not exist."); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/NetUtils.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/NetUtils.java index a2563bce3..3a1cc8787 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/NetUtils.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/NetUtils.java @@ -17,9 +17,6 @@ package org.apache.eventmesh.runtime.util; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.UnsupportedEncodingException; import java.net.InetSocketAddress; import java.net.URLDecoder; @@ -28,6 +25,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class NetUtils { private static final Logger logger = LoggerFactory.getLogger(NetUtils.class); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/RemotingHelper.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/RemotingHelper.java index 0266a924d..6bbff738f 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/RemotingHelper.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/RemotingHelper.java @@ -16,16 +16,17 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.eventmesh.runtime.util; import java.net.InetSocketAddress; import java.net.SocketAddress; -import io.netty.channel.Channel; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.Channel; + public class RemotingHelper { public static final String DEFAULT_CHARSET = "UTF-8"; @@ -55,97 +56,97 @@ public class RemotingHelper { return isa; } -// public static RemotingCommand invokeSync(final String addr, final RemotingCommand request, -// final long timeoutMillis) throws InterruptedException, RemotingConnectException, -// RemotingSendRequestException, RemotingTimeoutException { -// long beginTime = System.currentTimeMillis(); -// SocketAddress socketAddress = RemotingUtil.string2SocketAddress(addr); -// SocketChannel socketChannel = RemotingUtil.connect(socketAddress); -// if (socketChannel != null) { -// boolean sendRequestOK = false; -// -// try { -// -// socketChannel.configureBlocking(true); -// -// //bugfix http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4614802 -// socketChannel.socket().setSoTimeout((int) timeoutMillis); -// -// ByteBuffer byteBufferRequest = request.encode(); -// while (byteBufferRequest.hasRemaining()) { -// int length = socketChannel.write(byteBufferRequest); -// if (length > 0) { -// if (byteBufferRequest.hasRemaining()) { -// if ((System.currentTimeMillis() - beginTime) > timeoutMillis) { -// -// throw new RemotingSendRequestException(addr); -// } -// } -// } else { -// throw new RemotingSendRequestException(addr); -// } -// -// Thread.sleep(1); -// } -// -// sendRequestOK = true; -// -// ByteBuffer byteBufferSize = ByteBuffer.allocate(4); -// while (byteBufferSize.hasRemaining()) { -// int length = socketChannel.read(byteBufferSize); -// if (length > 0) { -// if (byteBufferSize.hasRemaining()) { -// if ((System.currentTimeMillis() - beginTime) > timeoutMillis) { -// -// throw new RemotingTimeoutException(addr, timeoutMillis); -// } -// } -// } else { -// throw new RemotingTimeoutException(addr, timeoutMillis); -// } -// -// Thread.sleep(1); -// } -// -// int size = byteBufferSize.getInt(0); -// ByteBuffer byteBufferBody = ByteBuffer.allocate(size); -// while (byteBufferBody.hasRemaining()) { -// int length = socketChannel.read(byteBufferBody); -// if (length > 0) { -// if (byteBufferBody.hasRemaining()) { -// if ((System.currentTimeMillis() - beginTime) > timeoutMillis) { -// -// throw new RemotingTimeoutException(addr, timeoutMillis); -// } -// } -// } else { -// throw new RemotingTimeoutException(addr, timeoutMillis); -// } -// -// Thread.sleep(1); -// } -// -// byteBufferBody.flip(); -// return RemotingCommand.decode(byteBufferBody); -// } catch (IOException e) { -// log.error("invokeSync failure", e); -// -// if (sendRequestOK) { -// throw new RemotingTimeoutException(addr, timeoutMillis); -// } else { -// throw new RemotingSendRequestException(addr); -// } -// } finally { -// try { -// socketChannel.close(); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// } -// } else { -// throw new RemotingConnectException(addr); -// } -// } + //public static RemotingCommand invokeSync(final String addr, final RemotingCommand request, + // final long timeoutMillis) throws InterruptedException, RemotingConnectException, + // RemotingSendRequestException, RemotingTimeoutException { + // long beginTime = System.currentTimeMillis(); + // SocketAddress socketAddress = RemotingUtil.string2SocketAddress(addr); + // SocketChannel socketChannel = RemotingUtil.connect(socketAddress); + // if (socketChannel != null) { + // boolean sendRequestOK = false; + // + // try { + // + // socketChannel.configureBlocking(true); + // + // //bugfix http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4614802 + // socketChannel.socket().setSoTimeout((int) timeoutMillis); + // + // ByteBuffer byteBufferRequest = request.encode(); + // while (byteBufferRequest.hasRemaining()) { + // int length = socketChannel.write(byteBufferRequest); + // if (length > 0) { + // if (byteBufferRequest.hasRemaining()) { + // if ((System.currentTimeMillis() - beginTime) > timeoutMillis) { + // + // throw new RemotingSendRequestException(addr); + // } + // } + // } else { + // throw new RemotingSendRequestException(addr); + // } + // + // Thread.sleep(1); + // } + // + // sendRequestOK = true; + // + // ByteBuffer byteBufferSize = ByteBuffer.allocate(4); + // while (byteBufferSize.hasRemaining()) { + // int length = socketChannel.read(byteBufferSize); + // if (length > 0) { + // if (byteBufferSize.hasRemaining()) { + // if ((System.currentTimeMillis() - beginTime) > timeoutMillis) { + // + // throw new RemotingTimeoutException(addr, timeoutMillis); + // } + // } + // } else { + // throw new RemotingTimeoutException(addr, timeoutMillis); + // } + // + // Thread.sleep(1); + // } + // + // int size = byteBufferSize.getInt(0); + // ByteBuffer byteBufferBody = ByteBuffer.allocate(size); + // while (byteBufferBody.hasRemaining()) { + // int length = socketChannel.read(byteBufferBody); + // if (length > 0) { + // if (byteBufferBody.hasRemaining()) { + // if ((System.currentTimeMillis() - beginTime) > timeoutMillis) { + // + // throw new RemotingTimeoutException(addr, timeoutMillis); + // } + // } + // } else { + // throw new RemotingTimeoutException(addr, timeoutMillis); + // } + // + // Thread.sleep(1); + // } + // + // byteBufferBody.flip(); + // return RemotingCommand.decode(byteBufferBody); + // } catch (IOException e) { + // log.error("invokeSync failure", e); + // + // if (sendRequestOK) { + // throw new RemotingTimeoutException(addr, timeoutMillis); + // } else { + // throw new RemotingSendRequestException(addr); + // } + // } finally { + // try { + // socketChannel.close(); + // } catch (IOException e) { + // e.printStackTrace(); + // } + // } + // } else { + // throw new RemotingConnectException(addr); + // } + //} public static String parseChannelRemoteAddr(final Channel channel) { if (null == channel) { diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/Utils.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/Utils.java index fb3ee4bc1..e6be33a34 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/Utils.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/Utils.java @@ -36,8 +36,8 @@ import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; public class Utils { - private final static Logger logger = LoggerFactory.getLogger(Utils.class); - private final static Logger messageLogger = LoggerFactory.getLogger("message"); + private static final Logger logger = LoggerFactory.getLogger(Utils.class); + private static final Logger messageLogger = LoggerFactory.getLogger("message"); /** * used to send messages to the client @@ -49,30 +49,30 @@ public class Utils { */ public static void writeAndFlush(final Package pkg, long startTime, long taskExecuteTime, ChannelHandlerContext ctx, Session - session) { + session) { try { UserAgent user = session == null ? null : session.getClient(); if (session != null && session.getSessionState().equals(SessionState.CLOSED)) { logFailedMessageFlow(pkg, user, startTime, taskExecuteTime, - new Exception("the session has been closed")); + new Exception("the session has been closed")); return; } ctx.writeAndFlush(pkg).addListener( - new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) throws Exception { - if (!future.isSuccess()) { - logFailedMessageFlow(future, pkg, user, startTime, taskExecuteTime); - } else { - logSucceedMessageFlow(pkg, user, startTime, taskExecuteTime); + new ChannelFutureListener() { + @Override + public void operationComplete(ChannelFuture future) throws Exception { + if (!future.isSuccess()) { + logFailedMessageFlow(future, pkg, user, startTime, taskExecuteTime); + } else { + logSucceedMessageFlow(pkg, user, startTime, taskExecuteTime); - if (session != null) { - session.getClientGroupWrapper().get().getEventMeshTcpMonitor() - .getEventMesh2clientMsgNum().incrementAndGet(); + if (session != null) { + session.getClientGroupWrapper().get().getEventMeshTcpMonitor() + .getEventMesh2clientMsgNum().incrementAndGet(); + } } } } - } ); } catch (Exception e) { logger.error("exception while sending message to client", e); @@ -96,13 +96,13 @@ public class Utils { Throwable e) { if (pkg.getBody() instanceof EventMeshMessage) { messageLogger.error("pkg|eventMesh2c|failed|cmd={}|mqMsg={}|user={}|wait={}ms|cost={}ms|errMsg={}", - pkg.getHeader().getCmd(), - printMqMessage((EventMeshMessage) pkg.getBody()), user, taskExecuteTime - startTime, - System.currentTimeMillis() - startTime, e); + pkg.getHeader().getCmd(), + printMqMessage((EventMeshMessage) pkg.getBody()), user, taskExecuteTime - startTime, + System.currentTimeMillis() - startTime, e); } else { messageLogger.error("pkg|eventMesh2c|failed|cmd={}|pkg={}|user={}|wait={}ms|cost={}ms|errMsg={}", - pkg.getHeader().getCmd(), - pkg, user, taskExecuteTime - startTime, System.currentTimeMillis() - startTime, e); + pkg.getHeader().getCmd(), + pkg, user, taskExecuteTime - startTime, System.currentTimeMillis() - startTime, e); } } @@ -116,12 +116,12 @@ public class Utils { public static void logSucceedMessageFlow(Package pkg, UserAgent user, long startTime, long taskExecuteTime) { if (pkg.getBody() instanceof EventMeshMessage) { messageLogger.info("pkg|eventMesh2c|cmd={}|mqMsg={}|user={}|wait={}ms|cost={}ms", pkg.getHeader().getCmd(), - printMqMessage((EventMeshMessage) pkg.getBody()), user, taskExecuteTime - startTime, - System.currentTimeMillis() - startTime); + printMqMessage((EventMeshMessage) pkg.getBody()), user, taskExecuteTime - startTime, + System.currentTimeMillis() - startTime); } else { messageLogger - .info("pkg|eventMesh2c|cmd={}|pkg={}|user={}|wait={}ms|cost={}ms", pkg.getHeader().getCmd(), pkg, - user, taskExecuteTime - startTime, System.currentTimeMillis() - startTime); + .info("pkg|eventMesh2c|cmd={}|pkg={}|user={}|wait={}ms|cost={}ms", pkg.getHeader().getCmd(), pkg, + user, taskExecuteTime - startTime, System.currentTimeMillis() - startTime); } } @@ -140,8 +140,8 @@ public class Utils { } String result = String.format("Message [topic=%s,TTL=%s,uniqueId=%s,bizSeq=%s]", eventMeshMessage - .getTopic(), properties.get(EventMeshConstants.TTL), properties.get(EventMeshConstants.RR_REQUEST_UNIQ_ID), - bizSeqNo); + .getTopic(), properties.get(EventMeshConstants.TTL), properties.get(EventMeshConstants.RR_REQUEST_UNIQ_ID), + bizSeqNo); return result; } @@ -151,13 +151,13 @@ public class Utils { * @param message * @return */ -// public static String printMqMessage(org.apache.rocketmq.common.message.Message message) { -// Map properties = message.getProperties(); -// String bizSeqNo = message.getKeys(); -// String result = String.format("Message [topic=%s,TTL=%s,uniqueId=%s,bizSeq=%s]", message.getTopic() -// , properties.get(EventMeshConstants.TTL), properties.get(EventMeshConstants.RR_REQUEST_UNIQ_ID), bizSeqNo); -// return result; -// } + //public static String printMqMessage(org.apache.rocketmq.common.message.Message message) { + // Map properties = message.getProperties(); + // String bizSeqNo = message.getKeys(); + // String result = String.format("Message [topic=%s,TTL=%s,uniqueId=%s,bizSeq=%s]", message.getTopic() + // , properties.get(EventMeshConstants.TTL), properties.get(EventMeshConstants.RR_REQUEST_UNIQ_ID), bizSeqNo); + // return result; + //} /** * get serviceId according to topic diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/ValueComparator.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/ValueComparator.java index 510db7610..d8c8f4d0c 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/ValueComparator.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/ValueComparator.java @@ -23,9 +23,9 @@ import java.util.Map; public class ValueComparator implements Comparator> { @Override public int compare(Map.Entry x, Map.Entry y) { - if(x.getValue().intValue() != y.getValue().intValue()){ + if (x.getValue().intValue() != y.getValue().intValue()) { return x.getValue().intValue() - y.getValue().intValue(); - }else { + } else { return x.getKey().compareTo(y.getKey()); } } diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandlerTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandlerTest.java index c28a460d7..7ed08f7db 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandlerTest.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandlerTest.java @@ -19,18 +19,20 @@ package org.apache.eventmesh.runtime.admin.handler; -import com.sun.net.httpserver.HttpExchange; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.powermock.api.mockito.PowerMockito; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URI; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.powermock.api.mockito.PowerMockito; + +import com.sun.net.httpserver.HttpExchange; + public class RedirectClientByIpPortHandlerTest { private RedirectClientByIpPortHandler redirectClientByIpPortHandler; diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/EventMeshClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/EventMeshClient.java index 2ba50e7db..59c060e82 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/EventMeshClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/EventMeshClient.java @@ -17,12 +17,14 @@ package org.apache.eventmesh.runtime.client.api; +import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.Package; - import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; -import org.apache.eventmesh.common.protocol.SubscriptionMode; +/** + * EventMeshClient + */ public interface EventMeshClient { Package rr(Package msg, long timeout) throws Exception; diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/PubClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/PubClient.java index 938b5e05d..f0097af0b 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/PubClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/PubClient.java @@ -19,10 +19,11 @@ package org.apache.eventmesh.runtime.client.api; import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.common.protocol.tcp.UserAgent; - import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; - +/** + * PubClient + */ public interface PubClient { void init() throws Exception; diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/SubClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/SubClient.java index 03772d19d..524b1ba14 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/SubClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/api/SubClient.java @@ -17,14 +17,15 @@ package org.apache.eventmesh.runtime.client.api; +import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.Package; -import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.tcp.UserAgent; - import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; - +/** + * SubClient + */ public interface SubClient { void init() throws Exception; diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/ClientConstants.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/ClientConstants.java index ed8a9dbb6..466e8d1e5 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/ClientConstants.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/ClientConstants.java @@ -17,7 +17,9 @@ package org.apache.eventmesh.runtime.client.common; - +/** + * ClientConstants + */ public interface ClientConstants { /** diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/ClientGlobal.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/ClientGlobal.java index 2f29d8841..65e14fd2f 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/ClientGlobal.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/ClientGlobal.java @@ -19,14 +19,14 @@ package org.apache.eventmesh.runtime.client.common; import java.util.TimeZone; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class ClientGlobal { diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/Codec.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/Codec.java index d31bb43c9..1124287c8 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/Codec.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/Codec.java @@ -17,15 +17,6 @@ package org.apache.eventmesh.runtime.client.common; -import java.nio.charset.Charset; -import java.util.Arrays; -import java.util.List; - -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.MessageToByteEncoder; -import io.netty.handler.codec.ReplayingDecoder; - import org.apache.eventmesh.common.protocol.tcp.Command; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; import org.apache.eventmesh.common.protocol.tcp.Header; @@ -34,14 +25,24 @@ import org.apache.eventmesh.common.protocol.tcp.RedirectInfo; import org.apache.eventmesh.common.protocol.tcp.Subscription; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.runtime.constants.EventMeshConstants; + +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.MessageToByteEncoder; +import io.netty.handler.codec.ReplayingDecoder; + public class Codec { - private final static Logger logger = LoggerFactory.getLogger(Codec.class); + private static final Logger logger = LoggerFactory.getLogger(Codec.class); private static final int FRAME_MAX_LENGTH = 1024 * 1024 * 4; - private static Charset UTF8 = Charset.forName(EventMeshConstants.DEFAULT_CHARSET); + private static final Charset UTF8 = Charset.forName(EventMeshConstants.DEFAULT_CHARSET); private static final byte[] CONSTANT_MAGIC_FLAG = "EventMesh".getBytes(UTF8); private static final byte[] VERSION = "0000".getBytes(UTF8); @@ -72,10 +73,12 @@ public class Codec { out.writeBytes(VERSION); out.writeInt(length); out.writeInt(headerLength); - if (headerData != null) + if (headerData != null) { out.writeBytes(headerData); - if (bodyData != null) + } + if (bodyData != null) { out.writeBytes(bodyData); + } } } @@ -90,8 +93,9 @@ public class Codec { int bodyLength = 0; try { - if (null == in) + if (null == in) { return; + } byte[] flagBytes = new byte[CONSTANT_MAGIC_FLAG.length]; byte[] versionBytes = new byte[VERSION.length]; @@ -99,9 +103,10 @@ public class Codec { in.readBytes(flagBytes); in.readBytes(versionBytes); if (!Arrays.equals(flagBytes, CONSTANT_MAGIC_FLAG) || !Arrays.equals(versionBytes, VERSION)) { - String errorMsg = String.format("invalid magic flag or " + - "version|flag=%s|version=%s|remoteAddress=%s", new String(flagBytes, UTF8), new String - (versionBytes, UTF8), ctx.channel().remoteAddress()); + String errorMsg = String.format("invalid magic flag or " + + + "version|flag=%s|version=%s|remoteAddress=%s", new String(flagBytes, UTF8), + new String(versionBytes, UTF8), ctx.channel().remoteAddress()); throw new Exception(errorMsg); } @@ -136,16 +141,23 @@ public class Codec { private static Object parseFromJson(Command cmd, String data) throws Exception { if (cmd == Command.HELLO_REQUEST || cmd == Command.RECOMMEND_REQUEST) { return ClientGlobal.jsonMapper.readValue(data, UserAgent.class); - } else if (cmd == Command.SUBSCRIBE_REQUEST || - cmd == Command.UNSUBSCRIBE_REQUEST) { + } else if (cmd == Command.SUBSCRIBE_REQUEST + || cmd == Command.UNSUBSCRIBE_REQUEST) { return ClientGlobal.jsonMapper.readValue(data, Subscription.class); - } else if (cmd == Command.REQUEST_TO_SERVER || cmd == Command.REQUEST_TO_CLIENT || cmd == Command.RESPONSE_TO_SERVER || cmd == - Command.RESPONSE_TO_CLIENT || cmd == Command.ASYNC_MESSAGE_TO_SERVER || cmd == Command.ASYNC_MESSAGE_TO_CLIENT || cmd == - Command.BROADCAST_MESSAGE_TO_SERVER || cmd == Command.BROADCAST_MESSAGE_TO_CLIENT || cmd == - Command.BROADCAST_MESSAGE_TO_CLIENT_ACK || cmd == Command.ASYNC_MESSAGE_TO_CLIENT_ACK || cmd == Command.REQUEST_TO_CLIENT_ACK + } else if (cmd == Command.REQUEST_TO_SERVER + || cmd == Command.REQUEST_TO_CLIENT + || cmd == Command.RESPONSE_TO_SERVER + || cmd == Command.RESPONSE_TO_CLIENT + || cmd == Command.ASYNC_MESSAGE_TO_SERVER + || cmd == Command.ASYNC_MESSAGE_TO_CLIENT + || cmd == Command.BROADCAST_MESSAGE_TO_SERVER + || cmd == Command.BROADCAST_MESSAGE_TO_CLIENT + || cmd == Command.BROADCAST_MESSAGE_TO_CLIENT_ACK + || cmd == Command.ASYNC_MESSAGE_TO_CLIENT_ACK + || cmd == Command.REQUEST_TO_CLIENT_ACK || cmd == Command.RESPONSE_TO_CLIENT_ACK) { return ClientGlobal.jsonMapper.readValue(data, EventMeshMessage.class); - } else if (cmd == (Command.REDIRECT_TO_CLIENT)) { + } else if (cmd == Command.REDIRECT_TO_CLIENT) { return ClientGlobal.jsonMapper.readValue(data, RedirectInfo.class); } else { return null; diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/MessageUtils.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/MessageUtils.java index 0f20828bc..04af7d082 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/MessageUtils.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/MessageUtils.java @@ -17,17 +17,20 @@ package org.apache.eventmesh.runtime.client.common; +import org.apache.eventmesh.common.protocol.SubscriptionItem; +import org.apache.eventmesh.common.protocol.SubscriptionMode; +import org.apache.eventmesh.common.protocol.SubscriptionType; +import org.apache.eventmesh.common.protocol.tcp.Command; +import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; +import org.apache.eventmesh.common.protocol.tcp.Header; +import org.apache.eventmesh.common.protocol.tcp.Package; +import org.apache.eventmesh.common.protocol.tcp.Subscription; +import org.apache.eventmesh.common.protocol.tcp.UserAgent; + import java.util.ArrayList; import java.util.List; import java.util.concurrent.ThreadLocalRandom; -import org.apache.eventmesh.common.protocol.SubscriptionType; -import org.apache.eventmesh.common.protocol.tcp.Subscription; -import org.apache.eventmesh.common.protocol.SubscriptionItem; -import org.apache.eventmesh.common.protocol.SubscriptionMode; -import org.apache.eventmesh.common.protocol.tcp.*; -import org.apache.eventmesh.common.protocol.tcp.Package; - public class MessageUtils { public static int seqLength = 10; @@ -167,12 +170,13 @@ public class MessageUtils { } public static Subscription generateSubscription() { - Subscription subscription = new Subscription(); + List subscriptionItems = new ArrayList<>(); subscriptionItems.add(new SubscriptionItem("TEST-TOPIC-TCP-SYNC", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC)); subscriptionItems.add(new SubscriptionItem("TEST-TOPIC-TCP-SYNC2", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC)); subscriptionItems.add(new SubscriptionItem("TEST-TOPIC-TCP-SYNC3", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC)); subscriptionItems.add(new SubscriptionItem("TEST-TOPIC-TCP-SYNC4", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC)); + Subscription subscription = new Subscription(); subscription.setTopicList(subscriptionItems); return subscription; } diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/RequestContext.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/RequestContext.java index 5855e1fe3..63044dbe7 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/RequestContext.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/RequestContext.java @@ -17,9 +17,10 @@ package org.apache.eventmesh.runtime.client.common; +import org.apache.eventmesh.common.protocol.tcp.Package; + import java.util.concurrent.CountDownLatch; -import org.apache.eventmesh.common.protocol.tcp.Package; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -75,13 +76,13 @@ public class RequestContext { latch.countDown(); } - public static RequestContext _context(Object key, Package request, CountDownLatch latch) throws Exception { + public static RequestContext context(Object key, Package request, CountDownLatch latch) throws Exception { RequestContext c = new RequestContext(key, request, latch); logger.info("_RequestContext|create|key=" + key); return c; } - public static Object _key(Package request) { + public static Object key(Package request) { return request.getHeader().getSeq(); } } diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/TCPClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/TCPClient.java index c73376a8d..90d728a18 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/TCPClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/TCPClient.java @@ -17,6 +17,8 @@ package org.apache.eventmesh.runtime.client.common; +import org.apache.eventmesh.common.protocol.tcp.Package; + import java.io.Closeable; import java.net.InetSocketAddress; import java.util.Random; @@ -28,6 +30,9 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicInteger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import io.netty.bootstrap.Bootstrap; import io.netty.buffer.PooledByteBufAllocator; import io.netty.channel.AdaptiveRecvByteBufAllocator; @@ -43,14 +48,12 @@ import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; -import org.apache.eventmesh.common.protocol.tcp.Package; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - /** * one Client connects one ACCESS - * Provides the most basic connection, send capability, and cannot provide disconnected reconnection capability, The service is request-dependent. If the disconnection and reconnection capability is provided, it will cause business insensitivity, that is, it will not follow the business reconnection logic. + * Provides the most basic connection, send capability, and cannot provide disconnected reconnection capability, + * The service is request-dependent. If the disconnection and reconnection capability is provided, + * it will cause business insensitivity, that is, it will not follow the business reconnection logic. */ public abstract class TCPClient implements Closeable { @@ -117,17 +120,19 @@ public abstract class TCPClient implements Closeable { send(msg); return null; } else { - Object key = RequestContext._key(msg); + Object key = RequestContext.key(msg); CountDownLatch latch = new CountDownLatch(1); - RequestContext c = RequestContext._context(key, msg, latch); + RequestContext c = RequestContext.context(key, msg, latch); if (!contexts.contains(c)) { contexts.put(key, c); } else { logger.info("duplicate key : {}", key); } send(msg); - if (!c.getLatch().await(timeout, TimeUnit.MILLISECONDS)) + if (!c.getLatch().await(timeout, TimeUnit.MILLISECONDS)) { throw new TimeoutException("operation timeout, context.key=" + c.getKey()); + } + return c.getResponse(); } } diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/UserAgentUtils.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/UserAgentUtils.java index c18e8185a..a916a9167 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/UserAgentUtils.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/common/UserAgentUtils.java @@ -17,11 +17,11 @@ package org.apache.eventmesh.runtime.client.common; -import java.util.concurrent.ThreadLocalRandom; - import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.runtime.constants.EventMeshConstants; +import java.util.concurrent.ThreadLocalRandom; + public class UserAgentUtils { public static UserAgent createPubUserAgent() { UserAgent userAgent = new UserAgent(); @@ -42,8 +42,8 @@ public class UserAgentUtils { public static UserAgent createUserAgent() { UserAgent userAgent = new UserAgent(); userAgent.setSubsystem("5123"); -// userAgent.setPid(UtilAll.getPid()); -// userAgent.setHost(RemotingUtil.getLocalAddress()); + //userAgent.setPid(UtilAll.getPid()); + //userAgent.setHost(RemotingUtil.getLocalAddress()); userAgent.setVersion("2.0.8"); userAgent.setUsername("username"); userAgent.setPassword("1234"); @@ -53,8 +53,8 @@ public class UserAgentUtils { public static UserAgent createSubUserAgent() { UserAgent userAgent = new UserAgent(); userAgent.setSubsystem("5243"); -// userAgent.setPid(UtilAll.getPid()); -// userAgent.setHost(RemotingUtil.getLocalAddress()); + //userAgent.setPid(UtilAll.getPid()); + //userAgent.setHost(RemotingUtil.getLocalAddress()); userAgent.setPort(8888); userAgent.setVersion("2.0.8"); userAgent.setUsername("username"); diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/hook/ReceiveMsgHook.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/hook/ReceiveMsgHook.java index 31cd763ed..a3364795d 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/hook/ReceiveMsgHook.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/hook/ReceiveMsgHook.java @@ -17,10 +17,10 @@ package org.apache.eventmesh.runtime.client.hook; -import io.netty.channel.ChannelHandlerContext; - import org.apache.eventmesh.common.protocol.tcp.Package; +import io.netty.channel.ChannelHandlerContext; + /** * Business callback hook, which is a callback for all types of messages */ diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/EventMeshClientImpl.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/EventMeshClientImpl.java index 9d830f791..5536c2eaf 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/EventMeshClientImpl.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/EventMeshClientImpl.java @@ -17,11 +17,10 @@ package org.apache.eventmesh.runtime.client.impl; +import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.Package; -import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.tcp.UserAgent; - import org.apache.eventmesh.runtime.client.api.EventMeshClient; import org.apache.eventmesh.runtime.client.api.PubClient; import org.apache.eventmesh.runtime.client.api.SubClient; @@ -84,13 +83,13 @@ public class EventMeshClientImpl implements EventMeshClient { @Override public Package justSubscribe(String topic, SubscriptionMode subscriptionMode, - SubscriptionType subscriptionType) throws Exception { + SubscriptionType subscriptionType) throws Exception { return this.subClient.justSubscribe(topic, subscriptionMode, subscriptionType); } @Override public Package justUnsubscribe(String topic, SubscriptionMode subscriptionMode, - SubscriptionType subscriptionType) throws Exception { + SubscriptionType subscriptionType) throws Exception { return this.subClient.justUnsubscribe(topic, subscriptionMode, subscriptionType); } @@ -104,33 +103,37 @@ public class EventMeshClientImpl implements EventMeshClient { @Override public String toString() { - return "AccessClientImpl{" + - "accessHost='" + accessHost + '\'' + - ", accessPort=" + accessPort + - ", agent=" + agent + - '}'; + return "AccessClientImpl{" + + + "accessHost='" + accessHost + '\'' + + + ", accessPort=" + accessPort + + + ", agent=" + agent + + + '}'; } @Deprecated public EventMeshClientImpl(String accessServer, String busiTag, String subSystem) { -// this.accessServer = accessServer; -// this.pubClient = new PubClientImpl(StringUtils.split(this.accessServer, ":")[0], -// Integer.parseInt(StringUtils.split(this.accessServer, ":")[1]), OldTestUserAgentFactory.createPubUserAgent -// (busiTag, subSystem)); -// this.subClient = new SubClientImpl(StringUtils.split(this.accessServer, ":")[0], -// Integer.parseInt(StringUtils.split(this.accessServer, ":")[1]), OldTestUserAgentFactory.createSubUserAgent -// (busiTag, subSystem)); + //this.accessServer = accessServer; + //this.pubClient = new PubClientImpl(StringUtils.split(this.accessServer, ":")[0], + // Integer.parseInt(StringUtils.split(this.accessServer, ":")[1]), OldTestUserAgentFactory.createPubUserAgent + // (busiTag, subSystem)); + //this.subClient = new SubClientImpl(StringUtils.split(this.accessServer, ":")[0], + // Integer.parseInt(StringUtils.split(this.accessServer, ":")[1]), OldTestUserAgentFactory.createSubUserAgent + // (busiTag, subSystem)); } -// @Override -// public void sysLog() throws Exception { -// subClient.sysLog(); -// } -// -// @Override -// public void traceLog() throws Exception { -// subClient.traceLog(); -// } + //@Override + //public void sysLog() throws Exception { + // subClient.sysLog(); + //} + // + //@Override + //public void traceLog() throws Exception { + // subClient.traceLog(); + //} @Override public void goodbye() throws Exception { diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/PubClientImpl.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/PubClientImpl.java index 701b519e4..f4293e79f 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/PubClientImpl.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/PubClientImpl.java @@ -17,21 +17,10 @@ package org.apache.eventmesh.runtime.client.impl; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; - import org.apache.eventmesh.common.protocol.tcp.Command; import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; import org.apache.eventmesh.common.protocol.tcp.UserAgent; -import org.junit.Assert; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import org.apache.eventmesh.runtime.client.api.PubClient; import org.apache.eventmesh.runtime.client.common.ClientConstants; import org.apache.eventmesh.runtime.client.common.MessageUtils; @@ -39,6 +28,17 @@ import org.apache.eventmesh.runtime.client.common.RequestContext; import org.apache.eventmesh.runtime.client.common.TCPClient; import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import org.junit.Assert; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; + public class PubClientImpl extends TCPClient implements PubClient { private Logger publogger = LoggerFactory.getLogger(this.getClass()); @@ -90,6 +90,7 @@ public class PubClientImpl extends TCPClient implements PubClient { publogger.debug("PubClientImpl|{}|send heartbeat|Command={}|msg={}", clientNo, msg.getHeader().getCommand(), msg); PubClientImpl.this.dispatcher(msg, ClientConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); } catch (Exception e) { + //ignore } } }, ClientConstants.HEARTBEAT, ClientConstants.HEARTBEAT, TimeUnit.MILLISECONDS); @@ -192,7 +193,7 @@ public class PubClientImpl extends TCPClient implements PubClient { if (cmd == Command.RESPONSE_TO_CLIENT) { Package responseToClientAck = MessageUtils.responseToClientAck(msg); send(responseToClientAck); - RequestContext context = contexts.get(RequestContext._key(msg)); + RequestContext context = contexts.get(RequestContext.key(msg)); if (context != null) { contexts.remove(context.getKey()); context.finish(msg); @@ -205,7 +206,7 @@ public class PubClientImpl extends TCPClient implements PubClient { publogger.error("server goodby request: ---------------------------" + msg.toString()); close(); } else { - RequestContext context = contexts.get(RequestContext._key(msg)); + RequestContext context = contexts.get(RequestContext.key(msg)); if (context != null) { contexts.remove(context.getKey()); context.finish(msg); diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/SubClientImpl.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/SubClientImpl.java index 473a82d1f..1d3b98c49 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/SubClientImpl.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/client/impl/SubClientImpl.java @@ -17,25 +17,13 @@ package org.apache.eventmesh.runtime.client.impl; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; - -import org.apache.commons.collections4.CollectionUtils; -import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.SubscriptionItem; import org.apache.eventmesh.common.protocol.SubscriptionMode; -import org.apache.eventmesh.common.protocol.tcp.*; +import org.apache.eventmesh.common.protocol.SubscriptionType; +import org.apache.eventmesh.common.protocol.tcp.Command; +import org.apache.eventmesh.common.protocol.tcp.OPStatus; import org.apache.eventmesh.common.protocol.tcp.Package; -import org.junit.Assert; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.runtime.client.api.SubClient; import org.apache.eventmesh.runtime.client.common.ClientConstants; import org.apache.eventmesh.runtime.client.common.MessageUtils; @@ -43,6 +31,21 @@ import org.apache.eventmesh.runtime.client.common.RequestContext; import org.apache.eventmesh.runtime.client.common.TCPClient; import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import org.junit.Assert; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; + public class SubClientImpl extends TCPClient implements SubClient { private static final Logger logger = LoggerFactory.getLogger(SubClientImpl.class); @@ -103,6 +106,7 @@ public class SubClientImpl extends TCPClient implements SubClient { logger.debug("SubClientImpl|{}|send heartbeat|Command={}|msg={}", clientNo, msg.getHeader().getCommand(), msg); SubClientImpl.this.dispatcher(msg, ClientConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); } catch (Exception e) { + //ignore } } }, ClientConstants.HEARTBEAT, ClientConstants.HEARTBEAT, TimeUnit.MILLISECONDS); @@ -129,19 +133,19 @@ public class SubClientImpl extends TCPClient implements SubClient { return this.dispatcher(request, ClientConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); } -// @Override -// public void traceLog() throws Exception { -// Package msg = MessageUtils.traceLog(); -// this.dispatcher(msg, ClientConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); -// } + //@Override + //public void traceLog() throws Exception { + // Package msg = MessageUtils.traceLog(); + // this.dispatcher(msg, ClientConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); + //} -// public void sysLog() throws Exception { -// Package msg = MessageUtils.sysLog(); -// this.dispatcher(msg, ClientConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); -// } + //public void sysLog() throws Exception { + // Package msg = MessageUtils.sysLog(); + // this.dispatcher(msg, ClientConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); + //} public Package justUnsubscribe(String topic, SubscriptionMode subscriptionMode, - SubscriptionType subscriptionType) throws Exception { + SubscriptionType subscriptionType) throws Exception { subscriptionItems.remove(topic); Package msg = MessageUtils.unsubscribe(topic, subscriptionMode, subscriptionType); return this.dispatcher(msg, ClientConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS); @@ -202,8 +206,8 @@ public class SubClientImpl extends TCPClient implements SubClient { try { Package ackMsg = MessageUtils.requestToClientAck(msg); send(ackMsg); - Package aPackage = MessageUtils.rrResponse(msg); - send(aPackage); + Package responsePKG = MessageUtils.rrResponse(msg); + send(responsePKG); } catch (Exception e) { logger.info("send rr request to client ack failed"); } @@ -226,7 +230,7 @@ public class SubClientImpl extends TCPClient implements SubClient { close(); } else { //control instruction set - RequestContext context = contexts.get(RequestContext._key(msg)); + RequestContext context = contexts.get(RequestContext.key(msg)); if (context != null) { contexts.remove(context.getKey()); context.finish(msg); diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/CSVFormat.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/CSVFormat.java deleted file mode 100644 index 6a9d3c594..000000000 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/CSVFormat.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.eventmesh.runtime.cloudevent; - -import io.cloudevents.CloudEvent; -import io.cloudevents.SpecVersion; -import io.cloudevents.core.builder.CloudEventBuilder; -import io.cloudevents.core.data.BytesCloudEventData; -import io.cloudevents.core.format.EventFormat; -import io.cloudevents.rw.CloudEventDataMapper; -import io.cloudevents.types.Time; - -import java.net.URI; -import java.nio.charset.StandardCharsets; -import java.time.OffsetDateTime; -import java.util.Base64; -import java.util.Collections; -import java.util.Objects; -import java.util.Set; -import java.util.regex.Pattern; - -public class CSVFormat implements EventFormat { - - public static final CSVFormat INSTANCE = new CSVFormat(); - - @Override - public byte[] serialize(CloudEvent event) { - return String.join( - ",", - event.getSpecVersion().toString(), - event.getId(), - event.getType(), - event.getSource().toString(), - Objects.toString(event.getDataContentType()), - Objects.toString(event.getDataSchema()), - Objects.toString(event.getSubject()), - event.getTime() != null - ? Time.writeTime(event.getTime()) - : "null", - event.getData() != null - ? new String(Base64.getEncoder().encode(event.getData().toBytes()), StandardCharsets.UTF_8) - : "null" - ).getBytes(); - } - - @Override - public CloudEvent deserialize(byte[] bytes, CloudEventDataMapper mapper) { - String[] splitted = new String(bytes, StandardCharsets.UTF_8).split(Pattern.quote(",")); - SpecVersion sv = SpecVersion.parse(splitted[0]); - - String id = splitted[1]; - String type = splitted[2]; - URI source = URI.create(splitted[3]); - String datacontenttype = splitted[4].equals("null") ? null : splitted[4]; - URI dataschema = splitted[5].equals("null") ? null : URI.create(splitted[5]); - String subject = splitted[6].equals("null") ? null : splitted[6]; - OffsetDateTime time = splitted[7].equals("null") ? null : Time.parseTime(splitted[7]); - byte[] data = splitted[8].equals("null") ? null : Base64.getDecoder().decode(splitted[8].getBytes()); - - CloudEventBuilder builder = CloudEventBuilder.fromSpecVersion(sv) - .withId(id) - .withType(type) - .withSource(source); - - if (datacontenttype != null) { - builder.withDataContentType(datacontenttype); - } - if (dataschema != null) { - builder.withDataSchema(dataschema); - } - if (subject != null) { - builder.withSubject(subject); - } - if (time != null) { - builder.withTime(time); - } - if (data != null) { - builder.withData(mapper.map(BytesCloudEventData.wrap(data))); - } - return builder.build(); - } - - @Override - public Set deserializableContentTypes() { - return Collections.singleton(serializedContentType()); - } - - @Override - public String serializedContentType() { - return "application/cloudevents+csv"; - } -} diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/Data.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/Data.java deleted file mode 100644 index 001aa196b..000000000 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/Data.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.eventmesh.runtime.cloudevent; - -import io.cloudevents.CloudEvent; -import io.cloudevents.core.builder.CloudEventBuilder; -import io.cloudevents.types.Time; - -import java.math.BigDecimal; -import java.net.URI; -import java.time.OffsetDateTime; -import java.util.Objects; -import java.util.stream.Stream; - -public class Data { - - public static final String ID = "1"; - public static final String TYPE = "mock.test"; - public static final URI SOURCE = URI.create("http://localhost/source"); - public static final String DATACONTENTTYPE_JSON = "application/json"; - public static final String DATACONTENTTYPE_XML = "application/xml"; - public static final String DATACONTENTTYPE_TEXT = "text/plain"; - public static final URI DATASCHEMA = URI.create("http://localhost/schema"); - public static final String SUBJECT = "sub"; - public static final OffsetDateTime TIME = Time.parseTime("2018-04-26T14:48:09+02:00"); - - protected static final byte[] DATA_JSON_SERIALIZED = "{}".getBytes(); - protected static final byte[] DATA_XML_SERIALIZED = "".getBytes(); - protected static final byte[] DATA_TEXT_SERIALIZED = "Hello World Lorena!".getBytes(); - protected static final byte[] BINARY_VALUE = { (byte) 0xE0, (byte) 0xFF, (byte) 0x00, (byte) 0x44, (byte) 0xAA }; // Base64: 4P8ARKo= - - protected static final CloudEvent V1_MIN = CloudEventBuilder.v1() - .withId(ID) - .withType(TYPE) - .withSource(SOURCE) - .build(); - - public static final CloudEvent V1_WITH_JSON_DATA = CloudEventBuilder.v1() - .withId(ID) - .withType(TYPE) - .withSource(SOURCE) - .withData(DATACONTENTTYPE_JSON, DATASCHEMA, DATA_JSON_SERIALIZED) - .withSubject(SUBJECT) - .withTime(TIME) - .build(); - - public static final CloudEvent V1_WITH_JSON_DATA_WITH_FRACTIONAL_TIME = CloudEventBuilder.v1() - .withId(ID) - .withType(TYPE) - .withSource(SOURCE) - .withData(DATACONTENTTYPE_JSON, DATASCHEMA, DATA_JSON_SERIALIZED) - .withSubject(SUBJECT) - .withTime(Time.parseTime("2018-04-26T14:48:09.1234Z")) - .build(); - - public static final CloudEvent V1_WITH_JSON_DATA_WITH_EXT = CloudEventBuilder.v1() - .withId(ID) - .withType(TYPE) - .withSource(SOURCE) - .withData(DATACONTENTTYPE_JSON, DATASCHEMA, DATA_JSON_SERIALIZED) - .withSubject(SUBJECT) - .withTime(TIME) - .withExtension("astring", "aaa") - .withExtension("aboolean", true) - .withExtension("anumber", 10) - .build(); - - public static final CloudEvent V1_WITH_JSON_DATA_WITH_EXT_STRING = CloudEventBuilder.v1() - .withId(ID) - .withType(TYPE) - .withSource(SOURCE) - .withData(DATACONTENTTYPE_JSON, DATASCHEMA, DATA_JSON_SERIALIZED) - .withSubject(SUBJECT) - .withTime(TIME) - .withExtension("astring", "aaa") - .withExtension("aboolean", "true") - .withExtension("anumber", "10") - .build(); - - public static final CloudEvent V1_WITH_XML_DATA = CloudEventBuilder.v1() - .withId(ID) - .withType(TYPE) - .withSource(SOURCE) - .withData(DATACONTENTTYPE_XML, DATA_XML_SERIALIZED) - .withSubject(SUBJECT) - .withTime(TIME) - .build(); - - public static final CloudEvent V1_WITH_TEXT_DATA = CloudEventBuilder.v1() - .withId(ID) - .withType(TYPE) - .withSource(SOURCE) - .withData(DATACONTENTTYPE_TEXT, DATA_TEXT_SERIALIZED) - .withSubject(SUBJECT) - .withTime(TIME) - .build(); - - public static final CloudEvent V1_WITH_BINARY_EXT = CloudEventBuilder.v1() - .withId(ID) - .withType(TYPE) - .withSource(SOURCE) - .withExtension("binary", BINARY_VALUE) - .build(); - - public static final CloudEvent V1_WITH_NUMERIC_EXT = CloudEventBuilder.v1() - .withId(ID) - .withType(TYPE) - .withSource(SOURCE) - .withExtension("integer", 42) - .withExtension("decimal", new BigDecimal("42.42")) - .withExtension("float", 4.2f) - .withExtension("long", new Long(4200)) - .build(); - - public static final CloudEvent V03_MIN = CloudEventBuilder.v03(V1_MIN).build(); - public static final CloudEvent V03_WITH_JSON_DATA = CloudEventBuilder.v03(V1_WITH_JSON_DATA).build(); - public static final CloudEvent V03_WITH_JSON_DATA_WITH_EXT = CloudEventBuilder.v03(V1_WITH_JSON_DATA_WITH_EXT).build(); - public static final CloudEvent V03_WITH_JSON_DATA_WITH_EXT_STRING = CloudEventBuilder.v03(V1_WITH_JSON_DATA_WITH_EXT_STRING).build(); - public static final CloudEvent V03_WITH_XML_DATA = CloudEventBuilder.v03(V1_WITH_XML_DATA).build(); - public static final CloudEvent V03_WITH_TEXT_DATA = CloudEventBuilder.v03(V1_WITH_TEXT_DATA).build(); - - public static Stream allEvents() { - return Stream.concat(v1Events(), v03Events()); - } - - public static Stream allEventsWithoutExtensions() { - return Stream.concat(v1Events(), v03Events()).filter(e -> e.getExtensionNames().isEmpty()); - } - - public static Stream allEventsWithStringExtensions() { - return Stream.concat(v1EventsWithStringExt(), v03EventsWithStringExt()); - } - - public static Stream v1Events() { - return Stream.of( - Data.V1_MIN, - Data.V1_WITH_JSON_DATA, - Data.V1_WITH_JSON_DATA_WITH_EXT, - Data.V1_WITH_XML_DATA, - Data.V1_WITH_TEXT_DATA - ); - } - - /** - * Due to the nature of CE there are scenarios where an event might be serialized - * in such a fashion that it can not be deserialized while retaining the orginal - * type information, this varies from format-2-format - */ - - public static Stream v1NonRoundTripEvents() { - return Stream.of( - Data.V1_WITH_BINARY_EXT - ); - } - - public static Stream v03Events() { - return Stream.of( - Data.V03_MIN, - Data.V03_WITH_JSON_DATA, - Data.V03_WITH_JSON_DATA_WITH_EXT, - Data.V03_WITH_XML_DATA, - Data.V03_WITH_TEXT_DATA - ); - } - - public static Stream v1EventsWithStringExt() { - return v1Events().map(ce -> { - io.cloudevents.core.v1.CloudEventBuilder builder = CloudEventBuilder.v1(ce); - ce.getExtensionNames().forEach(k -> builder.withExtension(k, Objects.toString(ce.getExtension(k)))); - return builder.build(); - }); - } - - public static Stream v03EventsWithStringExt() { - return v03Events().map(ce -> { - io.cloudevents.core.v03.CloudEventBuilder builder = CloudEventBuilder.v03(ce); - ce.getExtensionNames().forEach(k -> builder.withExtension(k, Objects.toString(ce.getExtension(k)))); - return builder.build(); - }); - } - -} diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/OMSFactoryTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/OMSFactoryTest.java deleted file mode 100644 index 583262edb..000000000 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/OMSFactoryTest.java +++ /dev/null @@ -1,260 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.eventmesh.runtime.cloudevent; - - -import io.cloudevents.CloudEvent; -import io.cloudevents.SpecVersion; -import io.cloudevents.core.message.Encoding; -import io.cloudevents.core.message.MessageReader; -import io.cloudevents.core.provider.EventFormatProvider; -import io.cloudevents.core.v03.CloudEventV03; -import io.cloudevents.core.v1.CloudEventV1; -import io.cloudevents.types.Time; -import org.apache.eventmesh.runtime.core.protocol.cloudevent.OMSMessageFactory; -import org.apache.eventmesh.runtime.core.protocol.cloudevent.impl.OMSHeaders; -import org.junit.Test; - -import java.util.AbstractMap; -import java.util.Map; -import java.util.Properties; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; - -public class OMSFactoryTest { - - private static final String PREFIX_TEMPLATE = OMSHeaders.CE_PREFIX + "%s"; - private static final String DATACONTENTTYPE_NULL = null; - private static final byte[] DATAPAYLOAD_NULL = null; - - @Test - public void readBinary() { - Stream argumentsStream=binaryTestArguments(); - argumentsStream.forEach(argument -> { - if (argument.contentType != null) { - argument.props.put(OMSHeaders.CONTENT_TYPE, argument.contentType); - } - Properties properties = new Properties(); - properties.putAll(argument.props); - final MessageReader reader = OMSMessageFactory.createReader(properties, argument.body); - assertThat(reader.getEncoding()).isEqualTo(Encoding.BINARY); - assertThat(reader.toEvent()).isEqualTo(argument.event); - - }); - - } - - @Test - public void readStructured() { - Stream cloudEventStream= Data.allEventsWithoutExtensions(); - EventFormatProvider.getInstance().registerFormat(CSVFormat.INSTANCE); - cloudEventStream.forEach(event -> { - final String contentType = CSVFormat.INSTANCE.serializedContentType() + "; charset=utf8"; - final byte[] contentPayload = CSVFormat.INSTANCE.serialize(event); - Properties properties = new Properties(); - properties.put(OMSHeaders.CONTENT_TYPE, contentType); - final MessageReader reader = OMSMessageFactory.createReader(properties, contentPayload); - assertThat(reader.getEncoding()).isEqualTo(Encoding.STRUCTURED); - assertThat(reader.toEvent()).isEqualTo(event); - }); - } - - private Stream binaryTestArguments() { - - return Stream.of( - // V03 - new Arguments( - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property("ignored", "ignore") - ), - DATACONTENTTYPE_NULL, - DATAPAYLOAD_NULL, - Data.V03_MIN - ), - new Arguments( - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property(CloudEventV03.SCHEMAURL, Data.DATASCHEMA.toString()), - property(CloudEventV03.SUBJECT, Data.SUBJECT), - property(CloudEventV03.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignore") - ), - Data.DATACONTENTTYPE_JSON, - Data.DATA_JSON_SERIALIZED, - Data.V03_WITH_JSON_DATA - ), - new Arguments( - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property(CloudEventV03.SCHEMAURL, Data.DATASCHEMA.toString()), - property(CloudEventV03.SUBJECT, Data.SUBJECT), - property(CloudEventV03.TIME, Time.writeTime(Data.TIME)), - property("astring", "aaa"), - property("aboolean", "true"), - property("anumber", "10"), - property("ignored", "ignored") - ), - Data.DATACONTENTTYPE_JSON, - Data.DATA_JSON_SERIALIZED, - Data.V03_WITH_JSON_DATA_WITH_EXT_STRING - ), - new Arguments( - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property(CloudEventV03.SUBJECT, Data.SUBJECT), - property(CloudEventV03.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - Data.DATACONTENTTYPE_XML, - Data.DATA_XML_SERIALIZED, - Data.V03_WITH_XML_DATA - ), - new Arguments( - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property(CloudEventV03.SUBJECT, Data.SUBJECT), - property(CloudEventV03.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - Data.DATACONTENTTYPE_TEXT, - Data.DATA_TEXT_SERIALIZED, - Data.V03_WITH_TEXT_DATA - ), - // V1 - new Arguments( - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property("ignored", "ignored") - ), - DATACONTENTTYPE_NULL, - DATAPAYLOAD_NULL, - Data.V1_MIN - ), - new Arguments( - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property(CloudEventV1.DATASCHEMA, Data.DATASCHEMA.toString()), - property(CloudEventV1.SUBJECT, Data.SUBJECT), - property(CloudEventV1.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - Data.DATACONTENTTYPE_JSON, - Data.DATA_JSON_SERIALIZED, - Data.V1_WITH_JSON_DATA - ), - new Arguments( - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property(CloudEventV1.DATASCHEMA, Data.DATASCHEMA.toString()), - property(CloudEventV1.SUBJECT, Data.SUBJECT), - property(CloudEventV1.TIME, Time.writeTime(Data.TIME)), - property("astring", "aaa"), - property("aboolean", "true"), - property("anumber", "10"), - property("ignored", "ignored") - ), - Data.DATACONTENTTYPE_JSON, - Data.DATA_JSON_SERIALIZED, - Data.V1_WITH_JSON_DATA_WITH_EXT_STRING - ), - new Arguments( - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property(CloudEventV1.SUBJECT, Data.SUBJECT), - property(CloudEventV1.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - Data.DATACONTENTTYPE_XML, - Data.DATA_XML_SERIALIZED, - Data.V1_WITH_XML_DATA - ), - new Arguments( - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property(CloudEventV1.SUBJECT, Data.SUBJECT), - property(CloudEventV1.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - Data.DATACONTENTTYPE_TEXT, - Data.DATA_TEXT_SERIALIZED, - Data.V1_WITH_TEXT_DATA - ) - ); - } - - private static final AbstractMap.SimpleEntry property(final String name, final String value) { - return name.equalsIgnoreCase("ignored") ? - new AbstractMap.SimpleEntry<>(name, value) : - new AbstractMap.SimpleEntry<>(String.format(PREFIX_TEMPLATE, name), value); - } - - @SafeVarargs - private static final Map properties(final AbstractMap.SimpleEntry... entries) { - return Stream.of(entries) - .collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue)); - - } - - - private class Arguments { - private Map props; - private String contentType; - private byte[] body; - private CloudEvent event; - - public Arguments(Map props, String contentType, byte[] body, CloudEvent event) { - this.props = props; - this.contentType = contentType; - this.body = body; - this.event = event; - } - } -} diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/OMSWriterTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/OMSWriterTest.java deleted file mode 100644 index 834f156d6..000000000 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/cloudevent/OMSWriterTest.java +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.eventmesh.runtime.cloudevent; - -import io.cloudevents.CloudEvent; -import io.cloudevents.SpecVersion; -import io.cloudevents.core.message.StructuredMessageReader; -import io.cloudevents.core.v03.CloudEventV03; -import io.cloudevents.core.v1.CloudEventV1; -import io.cloudevents.types.Time; -import io.openmessaging.api.Message; -import org.apache.eventmesh.runtime.core.protocol.cloudevent.OMSMessageFactory; -import org.apache.eventmesh.runtime.core.protocol.cloudevent.impl.OMSHeaders; -import org.junit.Test; - -import java.util.AbstractMap; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; - -public class OMSWriterTest { - - private static final String PREFIX_TEMPLATE = OMSHeaders.CE_PREFIX + "%s"; - private static final String DATACONTENTTYPE_NULL = null; - private static final byte[] DATAPAYLOAD_NULL = null; - - - @Test - public void testRequestWithStructured() { - Stream cloudEventStream = Data.allEventsWithoutExtensions(); - //String expectedContentType = CSVFormat.INSTANCE.serializedContentType(); - cloudEventStream.forEach(event -> { - byte[] expectedBuffer = CSVFormat.INSTANCE.serialize(event); - - String topic = "test"; - String keys = "keys"; - String tags = "tags"; - - Message message = StructuredMessageReader - .from(event, CSVFormat.INSTANCE) - .read(OMSMessageFactory.createWriter(topic, keys, tags)); - - assertThat(message.getTopic()) - .isEqualTo(topic); - assertThat(message.getKey()) - .isEqualTo(keys); - assertThat(message.getTag()) - .isEqualTo(tags); - assertThat(message.getBody()) - .isEqualTo(expectedBuffer); - }); - - } - - @Test - public void testRequestWithBinary() { - Stream argumentsStream = binaryTestArguments(); - String topic = "test"; - String keys = "keys"; - String tags = "tags"; - argumentsStream.forEach(argument -> { - Message message = OMSMessageFactory - .createWriter(topic, keys, tags) - .writeBinary(argument.cloudEvent); - - assertThat(message.getTopic()) - .isEqualTo(topic); - assertThat(message.getKey()) - .isEqualTo(keys); - assertThat(message.getTag()) - .isEqualTo(tags); - assertThat(message.getBody()) - .isEqualTo(argument.body); - assertThat(message.getUserProperties() - .keySet().containsAll(argument.properties.keySet())); - assertThat(message.getUserProperties() - .values().containsAll(argument.properties.values())); - - - }); - - } - - private Stream binaryTestArguments() { - - return Stream.of( - // V03 - new Arguments( - Data.V03_MIN, - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property("ignored", "ignore") - ), - DATAPAYLOAD_NULL - ), - new Arguments( - Data.V03_WITH_JSON_DATA, - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property(CloudEventV03.SCHEMAURL, Data.DATASCHEMA.toString()), - property(CloudEventV03.SUBJECT, Data.SUBJECT), - property(CloudEventV03.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignore") - ), - Data.DATA_JSON_SERIALIZED - - ), - new Arguments( - Data.V03_WITH_JSON_DATA_WITH_EXT_STRING, - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property(CloudEventV03.SCHEMAURL, Data.DATASCHEMA.toString()), - property(CloudEventV03.SUBJECT, Data.SUBJECT), - property(CloudEventV03.TIME, Time.writeTime(Data.TIME)), - property("astring", "aaa"), - property("aboolean", "true"), - property("anumber", "10"), - property("ignored", "ignored") - ), - Data.DATA_JSON_SERIALIZED - - ), - new Arguments( - Data.V03_WITH_XML_DATA, - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property(CloudEventV03.SUBJECT, Data.SUBJECT), - property(CloudEventV03.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - - Data.DATA_XML_SERIALIZED - - ), - new Arguments( - Data.V03_WITH_TEXT_DATA, - properties( - property(CloudEventV03.SPECVERSION, SpecVersion.V03.toString()), - property(CloudEventV03.ID, Data.ID), - property(CloudEventV03.TYPE, Data.TYPE), - property(CloudEventV03.SOURCE, Data.SOURCE.toString()), - property(CloudEventV03.SUBJECT, Data.SUBJECT), - property(CloudEventV03.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - - Data.DATA_TEXT_SERIALIZED - - ), - // V1 - new Arguments( - Data.V1_MIN, - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property("ignored", "ignored") - ), - - DATAPAYLOAD_NULL - - ), - new Arguments( - Data.V1_WITH_JSON_DATA, - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property(CloudEventV1.DATASCHEMA, Data.DATASCHEMA.toString()), - property(CloudEventV1.SUBJECT, Data.SUBJECT), - property(CloudEventV1.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - - Data.DATA_JSON_SERIALIZED - - ), - new Arguments( - Data.V1_WITH_JSON_DATA_WITH_EXT_STRING, - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property(CloudEventV1.DATASCHEMA, Data.DATASCHEMA.toString()), - property(CloudEventV1.SUBJECT, Data.SUBJECT), - property(CloudEventV1.TIME, Time.writeTime(Data.TIME)), - property("astring", "aaa"), - property("aboolean", "true"), - property("anumber", "10"), - property("ignored", "ignored") - ), - - Data.DATA_JSON_SERIALIZED - - ), - new Arguments( - Data.V1_WITH_XML_DATA, - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property(CloudEventV1.SUBJECT, Data.SUBJECT), - property(CloudEventV1.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - - Data.DATA_XML_SERIALIZED - - ), - new Arguments( - Data.V1_WITH_TEXT_DATA, - properties( - property(CloudEventV1.SPECVERSION, SpecVersion.V1.toString()), - property(CloudEventV1.ID, Data.ID), - property(CloudEventV1.TYPE, Data.TYPE), - property(CloudEventV1.SOURCE, Data.SOURCE.toString()), - property(CloudEventV1.SUBJECT, Data.SUBJECT), - property(CloudEventV1.TIME, Time.writeTime(Data.TIME)), - property("ignored", "ignored") - ), - - Data.DATA_TEXT_SERIALIZED - - ) - ); - } - - private static final AbstractMap.SimpleEntry property(final String name, final String value) { - return name.equalsIgnoreCase("ignored") ? - new AbstractMap.SimpleEntry<>(name, value) : - new AbstractMap.SimpleEntry<>(String.format(PREFIX_TEMPLATE, name), value); - } - - @SafeVarargs - private static final Map properties(final AbstractMap.SimpleEntry... entries) { - return Stream.of(entries) - .collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue)); - - } - - private class Arguments { - CloudEvent cloudEvent; - Map properties; - byte[] body; - - public Arguments(CloudEvent cloudEvent, Map properties, byte[] body) { - this.cloudEvent = cloudEvent; - this.properties = properties; - this.body = body; - } - - - } -} diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/AsyncPubClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/AsyncPubClient.java index 14ee1ddbc..a2dd1d904 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/AsyncPubClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/AsyncPubClient.java @@ -17,19 +17,19 @@ package org.apache.eventmesh.runtime.demo; -import io.netty.channel.ChannelHandlerContext; - -import org.apache.eventmesh.common.utils.ThreadUtils; import org.apache.eventmesh.common.protocol.tcp.Package; - +import org.apache.eventmesh.common.utils.ThreadUtils; import org.apache.eventmesh.runtime.client.common.ClientConstants; import org.apache.eventmesh.runtime.client.common.MessageUtils; import org.apache.eventmesh.runtime.client.common.UserAgentUtils; import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; import org.apache.eventmesh.runtime.client.impl.PubClientImpl; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public class AsyncPubClient { private static final Logger logger = LoggerFactory.getLogger(AsyncPubClient.class); diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/AsyncSubClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/AsyncSubClient.java index c634d35ee..2783e136e 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/AsyncSubClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/AsyncSubClient.java @@ -17,20 +17,20 @@ package org.apache.eventmesh.runtime.demo; -import io.netty.channel.ChannelHandlerContext; - +import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; import org.apache.eventmesh.common.protocol.tcp.Package; - import org.apache.eventmesh.runtime.client.common.ClientConstants; import org.apache.eventmesh.runtime.client.common.MessageUtils; import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; import org.apache.eventmesh.runtime.client.impl.SubClientImpl; -import org.apache.eventmesh.common.protocol.SubscriptionMode; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public class AsyncSubClient { private static final Logger logger = LoggerFactory.getLogger(AsyncSubClient.class); diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/BroadCastPubClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/BroadCastPubClient.java index d85e8c364..5f3fa158b 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/BroadCastPubClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/BroadCastPubClient.java @@ -18,7 +18,6 @@ package org.apache.eventmesh.runtime.demo; import org.apache.eventmesh.common.utils.ThreadUtils; - import org.apache.eventmesh.runtime.client.common.ClientConstants; import org.apache.eventmesh.runtime.client.common.MessageUtils; import org.apache.eventmesh.runtime.client.common.UserAgentUtils; diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/BroadCastSubClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/BroadCastSubClient.java index a61c56221..8e00541dc 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/BroadCastSubClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/BroadCastSubClient.java @@ -17,21 +17,21 @@ package org.apache.eventmesh.runtime.demo; -import io.netty.channel.ChannelHandlerContext; - +import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.Command; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; import org.apache.eventmesh.common.protocol.tcp.Package; - import org.apache.eventmesh.runtime.client.common.ClientConstants; import org.apache.eventmesh.runtime.client.common.MessageUtils; import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; import org.apache.eventmesh.runtime.client.impl.SubClientImpl; -import org.apache.eventmesh.common.protocol.SubscriptionMode; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public class BroadCastSubClient { private static final Logger logger = LoggerFactory.getLogger(BroadCastSubClient.class); diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/CCSubClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/CCSubClient.java index bb96c1db8..9e60011fa 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/CCSubClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/CCSubClient.java @@ -17,20 +17,20 @@ package org.apache.eventmesh.runtime.demo; -import io.netty.channel.ChannelHandlerContext; - +import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.Command; import org.apache.eventmesh.common.protocol.tcp.Package; - import org.apache.eventmesh.runtime.client.common.MessageUtils; import org.apache.eventmesh.runtime.client.common.UserAgentUtils; import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; import org.apache.eventmesh.runtime.client.impl.SubClientImpl; -import org.apache.eventmesh.common.protocol.SubscriptionMode; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public class CCSubClient { private static final Logger logger = LoggerFactory.getLogger(CCSubClient.class); diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/CClientDemo.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/CClientDemo.java index cad2c5018..9ebaf74f2 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/CClientDemo.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/CClientDemo.java @@ -17,19 +17,19 @@ package org.apache.eventmesh.runtime.demo; -import io.netty.channel.ChannelHandlerContext; - +import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.Command; import org.apache.eventmesh.common.protocol.tcp.Package; -import org.apache.eventmesh.common.protocol.SubscriptionMode; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import org.apache.eventmesh.runtime.client.common.MessageUtils; import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; import org.apache.eventmesh.runtime.client.impl.EventMeshClientImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.netty.channel.ChannelHandlerContext; + /** * simple client usage example */ @@ -48,18 +48,18 @@ public class CClientDemo { client.justSubscribe(ASYNC_TOPIC, SubscriptionMode.CLUSTERING, SubscriptionType.ASYNC); client.justSubscribe(BROADCAST_TOPIC, SubscriptionMode.BROADCASTING, SubscriptionType.ASYNC); client.listen(); -// for (int i = 0; i < 10000; i++) { -// Package rr = null; -// AccessMessage rrMessage = null; -// try { -// rr = client.rr(MessageUtils.rrMesssage("TEST-TOPIC-TCP-SYNC"), 3000); -// Thread.sleep(100); -// //rrMessage = (AccessMessage) rr.getBody(); -// logger.error( "rr-reply-------------------------------------------------" + rr.toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } + //for (int i = 0; i < 10000; i++) { + // Package rr = null; + // AccessMessage rrMessage = null; + // try { + // rr = client.rr(MessageUtils.rrMesssage("TEST-TOPIC-TCP-SYNC"), 3000); + // Thread.sleep(100); + // //rrMessage = (AccessMessage) rr.getBody(); + // logger.error( "rr-reply-------------------------------------------------" + rr.toString()); + // } catch (Exception e) { + // e.printStackTrace(); + // } + //} client.registerSubBusiHandler(new ReceiveMsgHook() { @Override public void handle(Package msg, ChannelHandlerContext ctx) { @@ -69,15 +69,15 @@ public class CClientDemo { } }); for (int i = 0; i < 10000; i++) { -// ThreadUtil.randomSleep(0,200); + //ThreadUtil.randomSleep(0,200); //broadcast message client.broadcast(MessageUtils.broadcastMessage("TEST-TOPIC-TCP-BROADCAST", i), 5000); //asynchronous message client.publish(MessageUtils.asyncMessage(ASYNC_TOPIC, i), 5000); } -// -// Thread.sleep(10000); -// client.close(); + // + //Thread.sleep(10000); + //client.close(); } diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/SyncPubClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/SyncPubClient.java index 9694620e7..6375a3b2d 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/SyncPubClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/SyncPubClient.java @@ -19,10 +19,10 @@ package org.apache.eventmesh.runtime.demo; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; import org.apache.eventmesh.common.protocol.tcp.Package; - import org.apache.eventmesh.runtime.client.common.MessageUtils; import org.apache.eventmesh.runtime.client.common.UserAgentUtils; import org.apache.eventmesh.runtime.client.impl.PubClientImpl; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/SyncSubClient.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/SyncSubClient.java index 6921f3dd2..3e3ed201a 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/SyncSubClient.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/demo/SyncSubClient.java @@ -17,20 +17,20 @@ package org.apache.eventmesh.runtime.demo; -import io.netty.channel.ChannelHandlerContext; - +import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.Command; import org.apache.eventmesh.common.protocol.tcp.Package; - import org.apache.eventmesh.runtime.client.common.ClientConstants; import org.apache.eventmesh.runtime.client.common.MessageUtils; import org.apache.eventmesh.runtime.client.hook.ReceiveMsgHook; import org.apache.eventmesh.runtime.client.impl.SubClientImpl; -import org.apache.eventmesh.common.protocol.SubscriptionMode; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.netty.channel.ChannelHandlerContext; + public class SyncSubClient { private static final Logger logger = LoggerFactory.getLogger(SyncSubClient.class); diff --git a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/util/EventMeshUtilTest.java b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/util/EventMeshUtilTest.java index 6f55615d3..e9c4928c1 100644 --- a/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/util/EventMeshUtilTest.java +++ b/eventmesh-runtime/src/test/java/org/apache/eventmesh/runtime/util/EventMeshUtilTest.java @@ -17,11 +17,11 @@ package org.apache.eventmesh.runtime.util; +import java.util.regex.Pattern; + import org.junit.Assert; import org.junit.Test; -import java.util.regex.Pattern; - public class EventMeshUtilTest { @Test diff --git a/eventmesh-runtime/src/test/resources/log4j2.xml b/eventmesh-runtime/src/test/resources/log4j2.xml index c429b4e8e..da0a6059f 100644 --- a/eventmesh-runtime/src/test/resources/log4j2.xml +++ b/eventmesh-runtime/src/test/resources/log4j2.xml @@ -28,15 +28,18 @@ - + - + - + diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/AbstractHttpClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/AbstractHttpClient.java index bb415248a..463968cb4 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/AbstractHttpClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/AbstractHttpClient.java @@ -53,7 +53,7 @@ public abstract class AbstractHttpClient implements AutoCloseable { this.eventMeshHttpClientConfig = eventMeshHttpClientConfig; this.eventMeshServerSelector = HttpLoadBalanceUtils.createEventMeshServerLoadBalanceSelector( - eventMeshHttpClientConfig); + eventMeshHttpClientConfig); this.httpClient = setHttpClient(); } @@ -73,14 +73,14 @@ public abstract class AbstractHttpClient implements AutoCloseable { try { // todo: config in properties file? String protocol = System.getProperty("ssl.client.protocol", "TLSv1.2"); - TrustManager[] tm = new TrustManager[] {new MyX509TrustManager()}; + TrustManager[] tm = new TrustManager[]{new MyX509TrustManager()}; sslContext = SSLContext.getInstance(protocol); sslContext.init(null, tm, new SecureRandom()); // todo: custom client pool return HttpClients.custom() - .setSSLContext(sslContext) - .setSSLHostnameVerifier(new DefaultHostnameVerifier()) - .build(); + .setSSLContext(sslContext) + .setSSLHostnameVerifier(new DefaultHostnameVerifier()) + .build(); } catch (Exception e) { log.error("Error in creating HttpClient.", e); throw new EventMeshException(e); diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/EventMeshHttpConsumer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/EventMeshHttpConsumer.java index 00c544a26..a891bdf17 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/EventMeshHttpConsumer.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/EventMeshHttpConsumer.java @@ -46,10 +46,11 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import io.netty.handler.codec.http.HttpMethod; + import com.google.common.base.Preconditions; import com.google.common.util.concurrent.ThreadFactoryBuilder; -import io.netty.handler.codec.http.HttpMethod; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -66,15 +67,15 @@ public class EventMeshHttpConsumer extends AbstractHttpClient implements AutoClo } public EventMeshHttpConsumer(EventMeshHttpClientConfig eventMeshHttpClientConfig, ThreadPoolExecutor customExecutor) - throws EventMeshException { + throws EventMeshException { super(eventMeshHttpClientConfig); this.consumeExecutor = Optional.ofNullable(customExecutor).orElseGet( - () -> ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpClientConfig.getConsumeThreadCore(), - eventMeshHttpClientConfig.getConsumeThreadMax(), "EventMesh-client-consume-") + () -> ThreadPoolFactory.createThreadPoolExecutor(eventMeshHttpClientConfig.getConsumeThreadCore(), + eventMeshHttpClientConfig.getConsumeThreadMax(), "EventMesh-client-consume-") ); this.scheduler = new ScheduledThreadPoolExecutor( - Runtime.getRuntime().availableProcessors(), - new ThreadFactoryBuilder().setNameFormat("HTTPClientScheduler").setDaemon(true).build() + Runtime.getRuntime().availableProcessors(), + new ThreadFactoryBuilder().setNameFormat("HTTPClientScheduler").setDaemon(true).build() ); } @@ -89,10 +90,10 @@ public class EventMeshHttpConsumer extends AbstractHttpClient implements AutoClo Preconditions.checkNotNull(topicList, "Subscribe item cannot be null"); Preconditions.checkNotNull(subscribeUrl, "SubscribeUrl cannot be null"); RequestParam subscribeParam = buildCommonRequestParam() - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.SUBSCRIBE.getRequestCode()) - .addBody(SubscribeRequestBody.TOPIC, JsonUtils.serialize(topicList)) - .addBody(SubscribeRequestBody.CONSUMERGROUP, eventMeshHttpClientConfig.getConsumerGroup()) - .addBody(SubscribeRequestBody.URL, subscribeUrl); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.SUBSCRIBE.getRequestCode()) + .addBody(SubscribeRequestBody.TOPIC, JsonUtils.serialize(topicList)) + .addBody(SubscribeRequestBody.CONSUMERGROUP, eventMeshHttpClientConfig.getConsumerGroup()) + .addBody(SubscribeRequestBody.URL, subscribeUrl); String target = selectEventMesh(); try { @@ -114,16 +115,16 @@ public class EventMeshHttpConsumer extends AbstractHttpClient implements AutoClo scheduler.scheduleAtFixedRate(() -> { try { List heartbeatEntities = topicList.stream().map(subscriptionItem - -> { + -> { HeartbeatRequestBody.HeartbeatEntity heartbeatEntity = new HeartbeatRequestBody.HeartbeatEntity(); heartbeatEntity.topic = subscriptionItem.getTopic(); heartbeatEntity.url = subscribeUrl; return heartbeatEntity; }).collect(Collectors.toList()); RequestParam requestParam = buildCommonRequestParam() - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.HEARTBEAT.getRequestCode()) - .addBody(HeartbeatRequestBody.CLIENTTYPE, ClientType.SUB.name()) - .addBody(HeartbeatRequestBody.HEARTBEATENTITIES, JsonUtils.serialize(heartbeatEntities)); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.HEARTBEAT.getRequestCode()) + .addBody(HeartbeatRequestBody.CLIENTTYPE, ClientType.SUB.name()) + .addBody(HeartbeatRequestBody.HEARTBEATENTITIES, JsonUtils.serialize(heartbeatEntities)); String target = selectEventMesh(); String res = HttpUtils.post(httpClient, target, requestParam); EventMeshRetObj ret = JsonUtils.deserialize(res, EventMeshRetObj.class); @@ -145,9 +146,9 @@ public class EventMeshHttpConsumer extends AbstractHttpClient implements AutoClo Preconditions.checkNotNull(topicList, "Topics cannot be null"); Preconditions.checkNotNull(unSubscribeUrl, "unSubscribeUrl cannot be null"); RequestParam unSubscribeParam = buildCommonRequestParam() - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.UNSUBSCRIBE.getRequestCode()) - .addBody(UnSubscribeRequestBody.TOPIC, JsonUtils.serialize(topicList)) - .addBody(UnSubscribeRequestBody.URL, unSubscribeUrl); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.UNSUBSCRIBE.getRequestCode()) + .addBody(UnSubscribeRequestBody.TOPIC, JsonUtils.serialize(topicList)) + .addBody(UnSubscribeRequestBody.URL, unSubscribeUrl); String target = selectEventMesh(); try { String unSubRes = HttpUtils.post(httpClient, target, unSubscribeParam); @@ -176,17 +177,17 @@ public class EventMeshHttpConsumer extends AbstractHttpClient implements AutoClo private RequestParam buildCommonRequestParam() { return new RequestParam(HttpMethod.POST) - .addHeader(ProtocolKey.ClientInstanceKey.ENV, eventMeshHttpClientConfig.getEnv()) - .addHeader(ProtocolKey.ClientInstanceKey.IDC, eventMeshHttpClientConfig.getIdc()) - .addHeader(ProtocolKey.ClientInstanceKey.IP, eventMeshHttpClientConfig.getIp()) - .addHeader(ProtocolKey.ClientInstanceKey.PID, eventMeshHttpClientConfig.getPid()) - .addHeader(ProtocolKey.ClientInstanceKey.SYS, eventMeshHttpClientConfig.getSys()) - .addHeader(ProtocolKey.ClientInstanceKey.USERNAME, eventMeshHttpClientConfig.getUserName()) - .addHeader(ProtocolKey.ClientInstanceKey.PASSWD, eventMeshHttpClientConfig.getPassword()) - // add protocol version? - .addHeader(ProtocolKey.VERSION, ProtocolVersion.V1.getVersion()) - .addHeader(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) - .setTimeout(Constants.DEFAULT_HTTP_TIME_OUT) - .addBody(HeartbeatRequestBody.CONSUMERGROUP, eventMeshHttpClientConfig.getConsumerGroup()); + .addHeader(ProtocolKey.ClientInstanceKey.ENV, eventMeshHttpClientConfig.getEnv()) + .addHeader(ProtocolKey.ClientInstanceKey.IDC, eventMeshHttpClientConfig.getIdc()) + .addHeader(ProtocolKey.ClientInstanceKey.IP, eventMeshHttpClientConfig.getIp()) + .addHeader(ProtocolKey.ClientInstanceKey.PID, eventMeshHttpClientConfig.getPid()) + .addHeader(ProtocolKey.ClientInstanceKey.SYS, eventMeshHttpClientConfig.getSys()) + .addHeader(ProtocolKey.ClientInstanceKey.USERNAME, eventMeshHttpClientConfig.getUserName()) + .addHeader(ProtocolKey.ClientInstanceKey.PASSWD, eventMeshHttpClientConfig.getPassword()) + // add protocol version? + .addHeader(ProtocolKey.VERSION, ProtocolVersion.V1.getVersion()) + .addHeader(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) + .setTimeout(Constants.DEFAULT_HTTP_TIME_OUT) + .addBody(HeartbeatRequestBody.CONSUMERGROUP, eventMeshHttpClientConfig.getConsumerGroup()); } } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/context/LiteConsumeContext.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/context/LiteConsumeContext.java index cced4ccb7..63635f0d5 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/context/LiteConsumeContext.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/context/LiteConsumeContext.java @@ -17,9 +17,10 @@ package org.apache.eventmesh.client.http.consumer.context; -import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.eventmesh.common.Constants; +import org.apache.commons.lang3.time.DateFormatUtils; + public class LiteConsumeContext { private String eventMeshIp; diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/listener/LiteMessageListener.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/listener/LiteMessageListener.java index 38ac5b270..78de0225b 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/listener/LiteMessageListener.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/listener/LiteMessageListener.java @@ -22,6 +22,9 @@ import org.apache.eventmesh.client.http.consumer.HandleResult; import org.apache.eventmesh.client.http.consumer.context.LiteConsumeContext; import org.apache.eventmesh.common.EventMeshMessage; +/** + * LiteMessageListener + */ public interface LiteMessageListener { HandleResult handle(EventMeshMessage eventMeshMessage, LiteConsumeContext liteConsumeContext); diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/model/RequestParam.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/model/RequestParam.java index 2e3344428..97f4c95cb 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/model/RequestParam.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/model/RequestParam.java @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.Map; import io.netty.handler.codec.http.HttpMethod; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -80,11 +81,11 @@ public class RequestParam { for (Map.Entry query : queryParams.entrySet()) { for (String val : query.getValue()) { stringBuilder.append("&") - .append(URLEncoder.encode(query.getKey(), "UTF-8")); + .append(URLEncoder.encode(query.getKey(), "UTF-8")); if (val != null && !val.isEmpty()) { stringBuilder.append("=") - .append(URLEncoder.encode(val, "UTF-8")); + .append(URLEncoder.encode(val, "UTF-8")); } } } @@ -105,7 +106,7 @@ public class RequestParam { queryParams = new HashMap<>(); } if (!queryParams.containsKey(key)) { - queryParams.put(key, new String[] {value}); + queryParams.put(key, new String[]{value}); } else { queryParams.put(key, (String[]) Arrays.asList(queryParams.get(key), value).toArray()); } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/CloudEventProducer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/CloudEventProducer.java index 9a4ac1d98..098c8f067 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/CloudEventProducer.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/CloudEventProducer.java @@ -28,7 +28,6 @@ import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequest import org.apache.eventmesh.common.protocol.http.body.message.SendMessageResponseBody; import org.apache.eventmesh.common.protocol.http.common.EventMeshRetCode; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; -import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.utils.JsonUtils; import org.apache.eventmesh.common.utils.RandomStringUtils; @@ -36,12 +35,13 @@ import org.apache.eventmesh.common.utils.RandomStringUtils; import java.io.IOException; import java.nio.charset.StandardCharsets; -import com.google.common.base.Preconditions; - import io.cloudevents.CloudEvent; import io.cloudevents.core.builder.CloudEventBuilder; import io.cloudevents.core.provider.EventFormatProvider; import io.netty.handler.codec.http.HttpMethod; + +import com.google.common.base.Preconditions; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -61,7 +61,7 @@ class CloudEventProducer extends AbstractHttpClient implements EventMeshProtocol CloudEvent enhanceCloudEvent = enhanceCloudEvent(cloudEvent); // todo: Can put to abstract class, all protocol use the same send method? This can be a template method RequestParam requestParam = buildCommonPostParam(enhanceCloudEvent) - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_ASYNC.getRequestCode()); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_ASYNC.getRequestCode()); String target = selectEventMesh(); try { String response = HttpUtils.post(httpClient, target, requestParam); @@ -81,8 +81,8 @@ class CloudEventProducer extends AbstractHttpClient implements EventMeshProtocol validateCloudEvent(cloudEvent); CloudEvent enhanceCloudEvent = enhanceCloudEvent(cloudEvent); RequestParam requestParam = buildCommonPostParam(enhanceCloudEvent) - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) - .setTimeout(timeout); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) + .setTimeout(timeout); String target = selectEventMesh(); try { @@ -99,15 +99,15 @@ class CloudEventProducer extends AbstractHttpClient implements EventMeshProtocol @Override public void request(final CloudEvent cloudEvent, final RRCallback rrCallback, long timeout) - throws EventMeshException { + throws EventMeshException { validateCloudEvent(cloudEvent); CloudEvent enhanceCloudEvent = enhanceCloudEvent(cloudEvent); RequestParam requestParam = buildCommonPostParam(enhanceCloudEvent) - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) - .setTimeout(timeout); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) + .setTimeout(timeout); String target = selectEventMesh(); RRCallbackResponseHandlerAdapter adapter = new RRCallbackResponseHandlerAdapter<>( - enhanceCloudEvent, rrCallback, timeout); + enhanceCloudEvent, rrCallback, timeout); try { HttpUtils.post(httpClient, null, target, requestParam, adapter); } catch (IOException e) { @@ -122,47 +122,47 @@ class CloudEventProducer extends AbstractHttpClient implements EventMeshProtocol private RequestParam buildCommonPostParam(CloudEvent cloudEvent) { byte[] bodyByte = EventFormatProvider.getInstance().resolveFormat(cloudEvent.getDataContentType()) - .serialize(cloudEvent); + .serialize(cloudEvent); String content = new String(bodyByte, StandardCharsets.UTF_8); RequestParam requestParam = new RequestParam(HttpMethod.POST); requestParam - .addHeader(ProtocolKey.ClientInstanceKey.ENV, eventMeshHttpClientConfig.getEnv()) - .addHeader(ProtocolKey.ClientInstanceKey.IDC, eventMeshHttpClientConfig.getIdc()) - .addHeader(ProtocolKey.ClientInstanceKey.IP, eventMeshHttpClientConfig.getIp()) - .addHeader(ProtocolKey.ClientInstanceKey.PID, eventMeshHttpClientConfig.getPid()) - .addHeader(ProtocolKey.ClientInstanceKey.SYS, eventMeshHttpClientConfig.getSys()) - .addHeader(ProtocolKey.ClientInstanceKey.USERNAME, eventMeshHttpClientConfig.getUserName()) - .addHeader(ProtocolKey.ClientInstanceKey.PASSWD, eventMeshHttpClientConfig.getPassword()) - .addHeader(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) - .addHeader(ProtocolKey.PROTOCOL_TYPE, PROTOCOL_TYPE) - .addHeader(ProtocolKey.PROTOCOL_DESC, PROTOCOL_DESC) - .addHeader(ProtocolKey.PROTOCOL_VERSION, cloudEvent.getSpecVersion().toString()) + .addHeader(ProtocolKey.ClientInstanceKey.ENV, eventMeshHttpClientConfig.getEnv()) + .addHeader(ProtocolKey.ClientInstanceKey.IDC, eventMeshHttpClientConfig.getIdc()) + .addHeader(ProtocolKey.ClientInstanceKey.IP, eventMeshHttpClientConfig.getIp()) + .addHeader(ProtocolKey.ClientInstanceKey.PID, eventMeshHttpClientConfig.getPid()) + .addHeader(ProtocolKey.ClientInstanceKey.SYS, eventMeshHttpClientConfig.getSys()) + .addHeader(ProtocolKey.ClientInstanceKey.USERNAME, eventMeshHttpClientConfig.getUserName()) + .addHeader(ProtocolKey.ClientInstanceKey.PASSWD, eventMeshHttpClientConfig.getPassword()) + .addHeader(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) + .addHeader(ProtocolKey.PROTOCOL_TYPE, PROTOCOL_TYPE) + .addHeader(ProtocolKey.PROTOCOL_DESC, PROTOCOL_DESC) + .addHeader(ProtocolKey.PROTOCOL_VERSION, cloudEvent.getSpecVersion().toString()) - // todo: move producerGroup tp header - .addBody(SendMessageRequestBody.PRODUCERGROUP, eventMeshHttpClientConfig.getProducerGroup()) - .addBody(SendMessageRequestBody.CONTENT, content); + // todo: move producerGroup tp header + .addBody(SendMessageRequestBody.PRODUCERGROUP, eventMeshHttpClientConfig.getProducerGroup()) + .addBody(SendMessageRequestBody.CONTENT, content); return requestParam; } private CloudEvent enhanceCloudEvent(final CloudEvent cloudEvent) { return CloudEventBuilder.from(cloudEvent) - .withExtension(ProtocolKey.ClientInstanceKey.ENV, eventMeshHttpClientConfig.getEnv()) - .withExtension(ProtocolKey.ClientInstanceKey.IDC, eventMeshHttpClientConfig.getIdc()) - .withExtension(ProtocolKey.ClientInstanceKey.IP, eventMeshHttpClientConfig.getIp()) - .withExtension(ProtocolKey.ClientInstanceKey.PID, eventMeshHttpClientConfig.getPid()) - .withExtension(ProtocolKey.ClientInstanceKey.SYS, eventMeshHttpClientConfig.getSys()) - .withExtension(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) - .withExtension(ProtocolKey.PROTOCOL_DESC, cloudEvent.getSpecVersion().name()) - .withExtension(ProtocolKey.PROTOCOL_VERSION, cloudEvent.getSpecVersion().toString()) - .withExtension(ProtocolKey.ClientInstanceKey.BIZSEQNO, RandomStringUtils.generateNum(30)) - .withExtension(ProtocolKey.ClientInstanceKey.UNIQUEID, RandomStringUtils.generateNum(30)) - .build(); + .withExtension(ProtocolKey.ClientInstanceKey.ENV, eventMeshHttpClientConfig.getEnv()) + .withExtension(ProtocolKey.ClientInstanceKey.IDC, eventMeshHttpClientConfig.getIdc()) + .withExtension(ProtocolKey.ClientInstanceKey.IP, eventMeshHttpClientConfig.getIp()) + .withExtension(ProtocolKey.ClientInstanceKey.PID, eventMeshHttpClientConfig.getPid()) + .withExtension(ProtocolKey.ClientInstanceKey.SYS, eventMeshHttpClientConfig.getSys()) + .withExtension(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) + .withExtension(ProtocolKey.PROTOCOL_DESC, cloudEvent.getSpecVersion().name()) + .withExtension(ProtocolKey.PROTOCOL_VERSION, cloudEvent.getSpecVersion().toString()) + .withExtension(ProtocolKey.ClientInstanceKey.BIZSEQNO, RandomStringUtils.generateNum(30)) + .withExtension(ProtocolKey.ClientInstanceKey.UNIQUEID, RandomStringUtils.generateNum(30)) + .build(); } private CloudEvent transformMessage(EventMeshRetObj retObj) { SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.deserialize(retObj.getRetMsg(), - SendMessageResponseBody.ReplyMessage.class); + SendMessageResponseBody.ReplyMessage.class); // todo: deserialize message return null; } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshHttpProducer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshHttpProducer.java index 107742753..5b63861da 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshHttpProducer.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshHttpProducer.java @@ -23,14 +23,15 @@ import org.apache.eventmesh.common.exception.EventMeshException; import io.cloudevents.CloudEvent; import io.openmessaging.api.Message; + import lombok.extern.slf4j.Slf4j; @Slf4j public class EventMeshHttpProducer implements AutoCloseable { private final EventMeshMessageProducer eventMeshMessageProducer; - private final CloudEventProducer cloudEventProducer; - private final OpenMessageProducer openMessageProducer; + private final CloudEventProducer cloudEventProducer; + private final OpenMessageProducer openMessageProducer; public EventMeshHttpProducer(final EventMeshHttpClientConfig eventMeshHttpClientConfig) throws EventMeshException { this.cloudEventProducer = new CloudEventProducer(eventMeshHttpClientConfig); @@ -63,26 +64,26 @@ public class EventMeshHttpProducer implements AutoCloseable { } public void request(final EventMeshMessage message, final RRCallback rrCallback, final long timeout) - throws EventMeshException { + throws EventMeshException { eventMeshMessageProducer.request(message, rrCallback, timeout); } public void request(final CloudEvent cloudEvent, final RRCallback rrCallback, final long timeout) - throws EventMeshException { + throws EventMeshException { cloudEventProducer.request(cloudEvent, rrCallback, timeout); } public void request(final Message openMessage, final RRCallback rrCallback, final long timeout) - throws EventMeshException { + throws EventMeshException { openMessageProducer.request(openMessage, rrCallback, timeout); } @Override public void close() throws EventMeshException { try ( - final EventMeshMessageProducer ignored = eventMeshMessageProducer; - final OpenMessageProducer ignored1 = openMessageProducer; - final CloudEventProducer ignored2 = cloudEventProducer) { + final EventMeshMessageProducer ignored = eventMeshMessageProducer; + final OpenMessageProducer ignored1 = openMessageProducer; + final CloudEventProducer ignored2 = cloudEventProducer) { log.info("Close producer"); } } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshMessageProducer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshMessageProducer.java index 5f528a376..5092ecb03 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshMessageProducer.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshMessageProducer.java @@ -17,7 +17,6 @@ package org.apache.eventmesh.client.http.producer; -import io.cloudevents.SpecVersion; import org.apache.eventmesh.client.http.AbstractHttpClient; import org.apache.eventmesh.client.http.EventMeshRetObj; import org.apache.eventmesh.client.http.conf.EventMeshHttpClientConfig; @@ -36,9 +35,11 @@ import org.apache.eventmesh.common.utils.JsonUtils; import java.io.IOException; +import io.cloudevents.SpecVersion; +import io.netty.handler.codec.http.HttpMethod; + import com.google.common.base.Preconditions; -import io.netty.handler.codec.http.HttpMethod; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -56,7 +57,7 @@ class EventMeshMessageProducer extends AbstractHttpClient implements EventMeshPr public void publish(EventMeshMessage message) throws EventMeshException { validateEventMeshMessage(message); RequestParam requestParam = buildCommonPostParam(message) - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_ASYNC.getRequestCode()); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_ASYNC.getRequestCode()); String target = selectEventMesh(); try { @@ -75,8 +76,8 @@ class EventMeshMessageProducer extends AbstractHttpClient implements EventMeshPr public EventMeshMessage request(EventMeshMessage message, long timeout) throws EventMeshException { validateEventMeshMessage(message); RequestParam requestParam = buildCommonPostParam(message) - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) - .setTimeout(timeout); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) + .setTimeout(timeout); String target = selectEventMesh(); @@ -94,16 +95,16 @@ class EventMeshMessageProducer extends AbstractHttpClient implements EventMeshPr @Override public void request(EventMeshMessage message, RRCallback rrCallback, long timeout) - throws EventMeshException { + throws EventMeshException { validateEventMeshMessage(message); RequestParam requestParam = buildCommonPostParam(message) - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) - .setTimeout(timeout); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) + .setTimeout(timeout); String target = selectEventMesh(); RRCallbackResponseHandlerAdapter adapter = - new RRCallbackResponseHandlerAdapter<>(message, rrCallback, timeout); + new RRCallbackResponseHandlerAdapter<>(message, rrCallback, timeout); try { HttpUtils.post(httpClient, null, target, requestParam, adapter); } catch (IOException e) { @@ -120,35 +121,35 @@ class EventMeshMessageProducer extends AbstractHttpClient implements EventMeshPr private RequestParam buildCommonPostParam(EventMeshMessage message) { RequestParam requestParam = new RequestParam(HttpMethod.POST); requestParam - .addHeader(ProtocolKey.ClientInstanceKey.ENV, eventMeshHttpClientConfig.getEnv()) - .addHeader(ProtocolKey.ClientInstanceKey.IDC, eventMeshHttpClientConfig.getIdc()) - .addHeader(ProtocolKey.ClientInstanceKey.IP, eventMeshHttpClientConfig.getIp()) - .addHeader(ProtocolKey.ClientInstanceKey.PID, eventMeshHttpClientConfig.getPid()) - .addHeader(ProtocolKey.ClientInstanceKey.SYS, eventMeshHttpClientConfig.getSys()) - .addHeader(ProtocolKey.ClientInstanceKey.USERNAME, eventMeshHttpClientConfig.getUserName()) - .addHeader(ProtocolKey.ClientInstanceKey.PASSWD, eventMeshHttpClientConfig.getPassword()) - .addHeader(ProtocolKey.VERSION, ProtocolVersion.V1.getVersion()) - .addHeader(ProtocolKey.PROTOCOL_TYPE, PROTOCOL_TYPE) - .addHeader(ProtocolKey.PROTOCOL_DESC, PROTOCOL_DESC) - //default ce version is 1.0 - .addHeader(ProtocolKey.PROTOCOL_VERSION, SpecVersion.V1.toString()) - .addHeader(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) - .addBody(SendMessageRequestBody.PRODUCERGROUP, eventMeshHttpClientConfig.getProducerGroup()) - // todo: set message to content is better - .addBody(SendMessageRequestBody.TOPIC, message.getTopic()) - .addBody(SendMessageRequestBody.CONTENT, message.getContent()) - .addBody(SendMessageRequestBody.TTL, message.getProp(Constants.EVENTMESH_MESSAGE_CONST_TTL)) - .addBody(SendMessageRequestBody.BIZSEQNO, message.getBizSeqNo()) - .addBody(SendMessageRequestBody.UNIQUEID, message.getUniqueId()); + .addHeader(ProtocolKey.ClientInstanceKey.ENV, eventMeshHttpClientConfig.getEnv()) + .addHeader(ProtocolKey.ClientInstanceKey.IDC, eventMeshHttpClientConfig.getIdc()) + .addHeader(ProtocolKey.ClientInstanceKey.IP, eventMeshHttpClientConfig.getIp()) + .addHeader(ProtocolKey.ClientInstanceKey.PID, eventMeshHttpClientConfig.getPid()) + .addHeader(ProtocolKey.ClientInstanceKey.SYS, eventMeshHttpClientConfig.getSys()) + .addHeader(ProtocolKey.ClientInstanceKey.USERNAME, eventMeshHttpClientConfig.getUserName()) + .addHeader(ProtocolKey.ClientInstanceKey.PASSWD, eventMeshHttpClientConfig.getPassword()) + .addHeader(ProtocolKey.VERSION, ProtocolVersion.V1.getVersion()) + .addHeader(ProtocolKey.PROTOCOL_TYPE, PROTOCOL_TYPE) + .addHeader(ProtocolKey.PROTOCOL_DESC, PROTOCOL_DESC) + //default ce version is 1.0 + .addHeader(ProtocolKey.PROTOCOL_VERSION, SpecVersion.V1.toString()) + .addHeader(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) + .addBody(SendMessageRequestBody.PRODUCERGROUP, eventMeshHttpClientConfig.getProducerGroup()) + // todo: set message to content is better + .addBody(SendMessageRequestBody.TOPIC, message.getTopic()) + .addBody(SendMessageRequestBody.CONTENT, message.getContent()) + .addBody(SendMessageRequestBody.TTL, message.getProp(Constants.EVENTMESH_MESSAGE_CONST_TTL)) + .addBody(SendMessageRequestBody.BIZSEQNO, message.getBizSeqNo()) + .addBody(SendMessageRequestBody.UNIQUEID, message.getUniqueId()); return requestParam; } private EventMeshMessage transformMessage(EventMeshRetObj retObj) { SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.deserialize(retObj.getRetMsg(), - SendMessageResponseBody.ReplyMessage.class); + SendMessageResponseBody.ReplyMessage.class); return EventMeshMessage.builder() - .content(replyMessage.body) - .prop(replyMessage.properties) - .topic(replyMessage.topic).build(); + .content(replyMessage.body) + .prop(replyMessage.properties) + .topic(replyMessage.topic).build(); } } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshProtocolProducer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshProtocolProducer.java index 1a0001e2c..b3ad6a795 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshProtocolProducer.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshProtocolProducer.java @@ -34,6 +34,6 @@ public interface EventMeshProtocolProducer extends AutoCloseabl ProtocolMessage request(ProtocolMessage message, long timeout) throws EventMeshException; void request(ProtocolMessage message, RRCallback rrCallback, long timeout) - throws EventMeshException; + throws EventMeshException; } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/OpenMessageProducer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/OpenMessageProducer.java index c0cc127f7..eeb9602c3 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/OpenMessageProducer.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/OpenMessageProducer.java @@ -28,16 +28,16 @@ import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequest import org.apache.eventmesh.common.protocol.http.body.message.SendMessageResponseBody; import org.apache.eventmesh.common.protocol.http.common.EventMeshRetCode; import org.apache.eventmesh.common.protocol.http.common.ProtocolKey; -import org.apache.eventmesh.common.protocol.http.common.ProtocolVersion; import org.apache.eventmesh.common.protocol.http.common.RequestCode; import org.apache.eventmesh.common.utils.JsonUtils; import java.io.IOException; -import com.google.common.base.Preconditions; - import io.netty.handler.codec.http.HttpMethod; import io.openmessaging.api.Message; + +import com.google.common.base.Preconditions; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -48,7 +48,7 @@ class OpenMessageProducer extends AbstractHttpClient implements EventMeshProtoco private static final String PROTOCOL_DESC = "http"; public OpenMessageProducer(EventMeshHttpClientConfig eventMeshHttpClientConfig) - throws EventMeshException { + throws EventMeshException { super(eventMeshHttpClientConfig); } @@ -56,7 +56,7 @@ class OpenMessageProducer extends AbstractHttpClient implements EventMeshProtoco public void publish(Message openMessage) throws EventMeshException { validateOpenMessage(openMessage); RequestParam requestParam = buildCommonPostParam(openMessage) - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_ASYNC.getRequestCode()); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_ASYNC.getRequestCode()); String target = selectEventMesh(); try { String response = HttpUtils.post(httpClient, target, requestParam); @@ -74,8 +74,8 @@ class OpenMessageProducer extends AbstractHttpClient implements EventMeshProtoco public Message request(Message message, long timeout) throws EventMeshException { validateOpenMessage(message); RequestParam requestParam = buildCommonPostParam(message) - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) - .setTimeout(timeout); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) + .setTimeout(timeout); String target = selectEventMesh(); try { @@ -94,11 +94,11 @@ class OpenMessageProducer extends AbstractHttpClient implements EventMeshProtoco public void request(Message message, RRCallback rrCallback, long timeout) throws EventMeshException { validateOpenMessage(message); RequestParam requestParam = buildCommonPostParam(message) - .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) - .setTimeout(timeout); + .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.MSG_SEND_SYNC.getRequestCode()) + .setTimeout(timeout); String target = selectEventMesh(); RRCallbackResponseHandlerAdapter adapter = - new RRCallbackResponseHandlerAdapter<>(message, rrCallback, timeout); + new RRCallbackResponseHandlerAdapter<>(message, rrCallback, timeout); try { HttpUtils.post(httpClient, null, target, requestParam, adapter); } catch (IOException e) { @@ -113,20 +113,20 @@ class OpenMessageProducer extends AbstractHttpClient implements EventMeshProtoco private RequestParam buildCommonPostParam(Message openMessage) { RequestParam requestParam = new RequestParam(HttpMethod.POST); requestParam - .addHeader(ProtocolKey.ClientInstanceKey.USERNAME, eventMeshHttpClientConfig.getUserName()) - .addHeader(ProtocolKey.ClientInstanceKey.PASSWD, eventMeshHttpClientConfig.getPassword()) - .addHeader(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) - .addHeader(ProtocolKey.PROTOCOL_TYPE, PROTOCOL_TYPE) - .addHeader(ProtocolKey.PROTOCOL_DESC, PROTOCOL_DESC) - // todo: add producerGroup to header, set protocol type, protocol version - .addBody(SendMessageRequestBody.PRODUCERGROUP, eventMeshHttpClientConfig.getProducerGroup()) - .addBody(SendMessageRequestBody.CONTENT, JsonUtils.serialize(openMessage)); + .addHeader(ProtocolKey.ClientInstanceKey.USERNAME, eventMeshHttpClientConfig.getUserName()) + .addHeader(ProtocolKey.ClientInstanceKey.PASSWD, eventMeshHttpClientConfig.getPassword()) + .addHeader(ProtocolKey.LANGUAGE, Constants.LANGUAGE_JAVA) + .addHeader(ProtocolKey.PROTOCOL_TYPE, PROTOCOL_TYPE) + .addHeader(ProtocolKey.PROTOCOL_DESC, PROTOCOL_DESC) + // todo: add producerGroup to header, set protocol type, protocol version + .addBody(SendMessageRequestBody.PRODUCERGROUP, eventMeshHttpClientConfig.getProducerGroup()) + .addBody(SendMessageRequestBody.CONTENT, JsonUtils.serialize(openMessage)); return requestParam; } private Message transformMessage(EventMeshRetObj retObj) { SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.deserialize(retObj.getRetMsg(), - SendMessageResponseBody.ReplyMessage.class); + SendMessageResponseBody.ReplyMessage.class); // todo: deserialize message return null; } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/RRCallbackResponseHandlerAdapter.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/RRCallbackResponseHandlerAdapter.java index 25237da86..e861384a0 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/RRCallbackResponseHandlerAdapter.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/RRCallbackResponseHandlerAdapter.java @@ -33,10 +33,11 @@ import org.apache.http.util.EntityUtils; import java.io.IOException; import java.nio.charset.Charset; -import com.google.common.base.Preconditions; - import io.cloudevents.CloudEvent; import io.openmessaging.api.Message; + +import com.google.common.base.Preconditions; + import lombok.extern.slf4j.Slf4j; /** @@ -58,7 +59,7 @@ public class RRCallbackResponseHandlerAdapter implements Respon Preconditions.checkNotNull(rrCallback, "rrCallback invalid"); Preconditions.checkNotNull(protocolMessage, "message invalid"); if (!(protocolMessage instanceof EventMeshMessage) && !(protocolMessage instanceof CloudEvent) - && !(protocolMessage instanceof Message)) { + && !(protocolMessage instanceof Message)) { throw new IllegalArgumentException(String.format("ProtocolMessage: %s is not supported", protocolMessage)); } this.protocolMessage = protocolMessage; @@ -97,12 +98,12 @@ public class RRCallbackResponseHandlerAdapter implements Respon private ProtocolMessage transformToProtocolMessage(EventMeshRetObj ret) { // todo: constructor other protocol message, can judge by protocol type in properties SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.deserialize(ret.getRetMsg(), - SendMessageResponseBody.ReplyMessage.class); + SendMessageResponseBody.ReplyMessage.class); EventMeshMessage eventMeshMessage = EventMeshMessage.builder() - .content(replyMessage.body) - .prop(replyMessage.properties) - .topic(replyMessage.topic) - .build(); + .content(replyMessage.body) + .prop(replyMessage.properties) + .topic(replyMessage.topic) + .build(); return (ProtocolMessage) eventMeshMessage; } } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/ssl/MyX509TrustManager.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/ssl/MyX509TrustManager.java index 000f13b8f..1a50038ca 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/ssl/MyX509TrustManager.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/ssl/MyX509TrustManager.java @@ -19,10 +19,6 @@ package org.apache.eventmesh.client.http.ssl; import org.apache.commons.lang3.StringUtils; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; -import javax.net.ssl.X509TrustManager; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; @@ -31,6 +27,11 @@ import java.security.KeyStore; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; + public class MyX509TrustManager implements X509TrustManager { X509TrustManager myTrustManager; @@ -47,7 +48,7 @@ public class MyX509TrustManager implements X509TrustManager { + fileName), StandardOpenOption.READ), filePass); TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keyStore); - TrustManager trustManagers[] = trustManagerFactory.getTrustManagers(); + TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); for (TrustManager trustManager : trustManagers) { if (trustManager instanceof X509TrustManager) { myTrustManager = (X509TrustManager) trustManager; diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/util/HttpLoadBalanceUtils.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/util/HttpLoadBalanceUtils.java index d2a779e51..0b17d01ca 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/util/HttpLoadBalanceUtils.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/util/HttpLoadBalanceUtils.java @@ -17,42 +17,43 @@ package org.apache.eventmesh.client.http.util; -import com.google.common.base.Splitter; -import org.apache.commons.collections4.CollectionUtils; - import org.apache.eventmesh.client.http.conf.EventMeshHttpClientConfig; import org.apache.eventmesh.common.exception.EventMeshException; import org.apache.eventmesh.common.loadbalance.LoadBalanceSelector; import org.apache.eventmesh.common.loadbalance.RandomLoadBalanceSelector; import org.apache.eventmesh.common.loadbalance.Weight; -import org.apache.eventmesh.common.loadbalance.WeightRoundRobinLoadBalanceSelector; import org.apache.eventmesh.common.loadbalance.WeightRandomLoadBalanceSelector; +import org.apache.eventmesh.common.loadbalance.WeightRoundRobinLoadBalanceSelector; + +import org.apache.commons.collections4.CollectionUtils; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; +import com.google.common.base.Splitter; + public class HttpLoadBalanceUtils { private static final Pattern IP_PORT_PATTERN = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:\\d{4,5}"); private static final Pattern IP_PORT_WEIGHT_PATTERN = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:\\d{4,5}:\\d{1,6}"); public static LoadBalanceSelector createEventMeshServerLoadBalanceSelector( - EventMeshHttpClientConfig eventMeshHttpClientConfig) + EventMeshHttpClientConfig eventMeshHttpClientConfig) throws EventMeshException { LoadBalanceSelector eventMeshServerSelector = null; switch (eventMeshHttpClientConfig.getLoadBalanceType()) { case RANDOM: eventMeshServerSelector = new RandomLoadBalanceSelector<>(buildClusterGroupFromConfig( - eventMeshHttpClientConfig)); + eventMeshHttpClientConfig)); break; case WEIGHT_RANDOM: eventMeshServerSelector = new WeightRandomLoadBalanceSelector<>(buildWeightedClusterGroupFromConfig( - eventMeshHttpClientConfig)); + eventMeshHttpClientConfig)); break; case WEIGHT_ROUND_ROBIN: eventMeshServerSelector = new WeightRoundRobinLoadBalanceSelector<>(buildWeightedClusterGroupFromConfig( - eventMeshHttpClientConfig)); + eventMeshHttpClientConfig)); break; default: // ignore @@ -64,7 +65,7 @@ public class HttpLoadBalanceUtils { } private static List> buildWeightedClusterGroupFromConfig( - EventMeshHttpClientConfig eventMeshHttpClientConfig) + EventMeshHttpClientConfig eventMeshHttpClientConfig) throws EventMeshException { List eventMeshAddrs = Splitter.on(";").trimResults().splitToList(eventMeshHttpClientConfig.getLiteEventMeshAddr()); if (CollectionUtils.isEmpty(eventMeshAddrs)) { diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/util/HttpUtils.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/util/HttpUtils.java index ef3c5ab76..000a5c045 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/util/HttpUtils.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/util/HttpUtils.java @@ -42,9 +42,10 @@ import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import io.netty.handler.codec.http.HttpMethod; + import com.google.common.base.Preconditions; -import io.netty.handler.codec.http.HttpMethod; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -60,7 +61,7 @@ public class HttpUtils { @Override public String handleResponse(HttpResponse response) throws IOException { responseHolder.response = - EntityUtils.toString(response.getEntity(), Charset.forName(Constants.DEFAULT_CHARSET)); + EntityUtils.toString(response.getEntity(), Charset.forName(Constants.DEFAULT_CHARSET)); countDownLatch.countDown(); if (log.isDebugEnabled()) { log.debug("{}", responseHolder); @@ -72,6 +73,7 @@ public class HttpUtils { try { countDownLatch.await(requestParam.getTimeout(), TimeUnit.MILLISECONDS); } catch (InterruptedException ie) { + //ignore } return responseHolder.response; @@ -87,7 +89,7 @@ public class HttpUtils { @Override public String handleResponse(HttpResponse response) throws IOException { responseHolder.response = - EntityUtils.toString(response.getEntity(), Charset.forName(Constants.DEFAULT_CHARSET)); + EntityUtils.toString(response.getEntity(), Charset.forName(Constants.DEFAULT_CHARSET)); countDownLatch.countDown(); if (log.isDebugEnabled()) { log.debug("{}", responseHolder); @@ -137,8 +139,8 @@ public class HttpUtils { //ttl RequestConfig.Builder configBuilder = RequestConfig.custom(); configBuilder.setSocketTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))) - .setConnectTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))) - .setConnectionRequestTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))); + .setConnectTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))) + .setConnectionRequestTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))); if (forwardAgent != null) { configBuilder.setProxy(forwardAgent); @@ -180,8 +182,8 @@ public class HttpUtils { //ttl RequestConfig.Builder configBuilder = RequestConfig.custom(); configBuilder.setSocketTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))) - .setConnectTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))) - .setConnectionRequestTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))); + .setConnectTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))) + .setConnectionRequestTimeout(Integer.parseInt(String.valueOf(requestParam.getTimeout()))); if (forwardAgent != null) { configBuilder.setProxy(forwardAgent); @@ -205,7 +207,7 @@ public class HttpUtils { @Override public String handleResponse(HttpResponse response) throws IOException { responseHolder.response = - EntityUtils.toString(response.getEntity(), Charset.forName(Constants.DEFAULT_CHARSET)); + EntityUtils.toString(response.getEntity(), Charset.forName(Constants.DEFAULT_CHARSET)); countDownLatch.countDown(); if (log.isDebugEnabled()) { log.debug("{}", responseHolder); @@ -217,6 +219,7 @@ public class HttpUtils { try { countDownLatch.await(requestParam.getTimeout(), TimeUnit.MILLISECONDS); } catch (InterruptedException ie) { + //ignore } return responseHolder.response; @@ -232,7 +235,7 @@ public class HttpUtils { @Override public String handleResponse(HttpResponse response) throws IOException { responseHolder.response = - EntityUtils.toString(response.getEntity(), Charset.forName(Constants.DEFAULT_CHARSET)); + EntityUtils.toString(response.getEntity(), Charset.forName(Constants.DEFAULT_CHARSET)); countDownLatch.countDown(); if (log.isDebugEnabled()) { log.debug("{}", responseHolder); @@ -244,6 +247,7 @@ public class HttpUtils { try { countDownLatch.await(requestParam.getTimeout(), TimeUnit.MILLISECONDS); } catch (InterruptedException ie) { + //ignore } return responseHolder.response; diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPClient.java index a4a7c8d17..60c27afc0 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPClient.java @@ -46,7 +46,7 @@ public interface EventMeshTCPClient extends AutoCloseable { void listen() throws EventMeshException; void subscribe(String topic, SubscriptionMode subscriptionMode, SubscriptionType subscriptionType) - throws EventMeshException; + throws EventMeshException; void unsubscribe() throws EventMeshException; diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPClientFactory.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPClientFactory.java index 4291043db..69fd2e0a6 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPClientFactory.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPClientFactory.java @@ -23,10 +23,11 @@ import org.apache.eventmesh.client.tcp.impl.eventmeshmessage.EventMeshMessageTCP import org.apache.eventmesh.client.tcp.impl.openmessage.OpenMessageTCPClient; import org.apache.eventmesh.common.protocol.tcp.EventMeshMessage; -import com.google.common.base.Preconditions; - import io.cloudevents.CloudEvent; import io.openmessaging.api.Message; + +import com.google.common.base.Preconditions; + import lombok.experimental.UtilityClass; @UtilityClass @@ -42,7 +43,7 @@ public class EventMeshTCPClientFactory { */ @SuppressWarnings("unchecked") public static EventMeshTCPClient createEventMeshTCPClient( - EventMeshTCPClientConfig eventMeshTcpClientConfig, Class protocolMessageClass) { + EventMeshTCPClientConfig eventMeshTcpClientConfig, Class protocolMessageClass) { Preconditions.checkNotNull(protocolMessageClass, "ProtocolMessage type cannot be null"); Preconditions.checkNotNull(eventMeshTcpClientConfig, "EventMeshTcpClientConfig cannot be null"); @@ -56,6 +57,6 @@ public class EventMeshTCPClientFactory { return (EventMeshTCPClient) new OpenMessageTCPClient(eventMeshTcpClientConfig); } throw new IllegalArgumentException( - String.format("ProtocolMessageClass: %s is not supported", protocolMessageClass)); + String.format("ProtocolMessageClass: %s is not supported", protocolMessageClass)); } } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPSubClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPSubClient.java index 0cb2a03f3..8b1ec7b37 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPSubClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/EventMeshTCPSubClient.java @@ -39,7 +39,7 @@ public interface EventMeshTCPSubClient extends AutoCloseable { void reconnect() throws EventMeshException; void subscribe(String topic, SubscriptionMode subscriptionMode, SubscriptionType subscriptionType) - throws EventMeshException; + throws EventMeshException; void unsubscribe() throws EventMeshException; diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/AsyncRRCallback.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/AsyncRRCallback.java index 135e88dd8..949c0efa5 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/AsyncRRCallback.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/AsyncRRCallback.java @@ -17,6 +17,9 @@ package org.apache.eventmesh.client.tcp.common; +/** + * AsyncRRCallback + */ public interface AsyncRRCallback { void callback(Package msg); } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/MessageUtils.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/MessageUtils.java index a6c9eea24..96b6ad7ea 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/MessageUtils.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/MessageUtils.java @@ -98,7 +98,7 @@ public class MessageUtils { msg.getHeader().putProperty(Constants.PROTOCOL_VERSION, cloudEvent.getSpecVersion().toString()); msg.getHeader().putProperty(Constants.PROTOCOL_DESC, "tcp"); byte[] bodyByte = EventFormatProvider.getInstance().resolveFormat(cloudEvent.getDataContentType()) - .serialize((CloudEvent) message); + .serialize((CloudEvent) message); msg.setBody(bodyByte); } else if (message instanceof EventMeshMessage) { msg.getHeader().putProperty(Constants.PROTOCOL_TYPE, EventMeshCommon.EM_MESSAGE_PROTOCOL_NAME); @@ -140,38 +140,38 @@ public class MessageUtils { public static UserAgent generateSubClient(UserAgent agent) { return UserAgent.builder() - .env(agent.getEnv()) - .host(agent.getHost()) - .password(agent.getPassword()) - .username(agent.getUsername()) - .path(agent.getPath()) - .port(agent.getPort()) - .subsystem(agent.getSubsystem()) - .pid(agent.getPid()) - .version(agent.getVersion()) - .idc(agent.getIdc()) - .consumerGroup(agent.getConsumerGroup()) - .producerGroup(agent.getProducerGroup()) - .purpose(EventMeshCommon.USER_AGENT_PURPOSE_SUB) - .build(); + .env(agent.getEnv()) + .host(agent.getHost()) + .password(agent.getPassword()) + .username(agent.getUsername()) + .path(agent.getPath()) + .port(agent.getPort()) + .subsystem(agent.getSubsystem()) + .pid(agent.getPid()) + .version(agent.getVersion()) + .idc(agent.getIdc()) + .consumerGroup(agent.getConsumerGroup()) + .producerGroup(agent.getProducerGroup()) + .purpose(EventMeshCommon.USER_AGENT_PURPOSE_SUB) + .build(); } public static UserAgent generatePubClient(UserAgent agent) { return UserAgent.builder() - .env(agent.getEnv()) - .host(agent.getHost()) - .password(agent.getPassword()) - .username(agent.getUsername()) - .path(agent.getPath()) - .port(agent.getPort()) - .subsystem(agent.getSubsystem()) - .pid(agent.getPid()) - .version(agent.getVersion()) - .idc(agent.getIdc()) - .consumerGroup(agent.getConsumerGroup()) - .producerGroup(agent.getProducerGroup()) - .purpose(EventMeshCommon.USER_AGENT_PURPOSE_PUB) - .build(); + .env(agent.getEnv()) + .host(agent.getHost()) + .password(agent.getPassword()) + .username(agent.getUsername()) + .path(agent.getPath()) + .port(agent.getPort()) + .subsystem(agent.getSubsystem()) + .pid(agent.getPid()) + .version(agent.getVersion()) + .idc(agent.getIdc()) + .consumerGroup(agent.getConsumerGroup()) + .producerGroup(agent.getProducerGroup()) + .purpose(EventMeshCommon.USER_AGENT_PURPOSE_PUB) + .build(); } private static Subscription generateSubscription(String topic, SubscriptionMode subscriptionMode, diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/RequestContext.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/RequestContext.java index ae36e6a74..a713bd885 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/RequestContext.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/RequestContext.java @@ -17,9 +17,10 @@ package org.apache.eventmesh.client.tcp.common; +import org.apache.eventmesh.common.protocol.tcp.Package; + import java.util.concurrent.CountDownLatch; -import org.apache.eventmesh.common.protocol.tcp.Package; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -75,19 +76,19 @@ public class RequestContext { latch.countDown(); } - public static RequestContext _context(Object key, Package request, CountDownLatch latch) throws Exception { + public static RequestContext context(Object key, Package request, CountDownLatch latch) throws Exception { RequestContext c = new RequestContext(key, request, latch); logger.info("_RequestContext|create|key=" + key); return c; } - public static Object _key(Package request) { -// MessageType type = request.getHeader().getType(); -// if(MessageType.SyncRequest == type || MessageType.SyncResponse == type -// || MessageType.AsyncRequest == type || MessageType.AsyncResponse == type) { -// return request.getBody().getSysHeader().getUniqueId() ; -// } + public static Object key(Package request) { + //MessageType type = request.getHeader().getType(); + //if(MessageType.SyncRequest == type || MessageType.SyncResponse == type + // || MessageType.AsyncRequest == type || MessageType.AsyncResponse == type) { + // return request.getBody().getSysHeader().getUniqueId() ; + //} return request.getHeader().getSeq(); } } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/TcpClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/TcpClient.java index b31f87668..7f37b73a8 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/TcpClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/TcpClient.java @@ -32,9 +32,6 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.ThreadFactoryBuilder; - import io.netty.bootstrap.Bootstrap; import io.netty.buffer.PooledByteBufAllocator; import io.netty.channel.AdaptiveRecvByteBufAllocator; @@ -50,6 +47,10 @@ import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; + +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.ThreadFactoryBuilder; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -59,8 +60,8 @@ public abstract class TcpClient implements Closeable { protected final ConcurrentHashMap contexts = new ConcurrentHashMap<>(); - protected final String host; - protected final int port; + protected final String host; + protected final int port; protected final UserAgent userAgent; private final Bootstrap bootstrap = new Bootstrap(); @@ -72,8 +73,8 @@ public abstract class TcpClient implements Closeable { private ScheduledFuture heartTask; protected static final ScheduledThreadPoolExecutor scheduler = new ScheduledThreadPoolExecutor( - Runtime.getRuntime().availableProcessors(), - new ThreadFactoryBuilder().setNameFormat("TCPClientScheduler").setDaemon(true).build()); + Runtime.getRuntime().availableProcessors(), + new ThreadFactoryBuilder().setNameFormat("TCPClientScheduler").setDaemon(true).build()); public TcpClient(EventMeshTCPClientConfig eventMeshTcpClientConfig) { Preconditions.checkNotNull(eventMeshTcpClientConfig, "EventMeshTcpClientConfig cannot be null"); @@ -88,15 +89,15 @@ public abstract class TcpClient implements Closeable { bootstrap.group(workers); bootstrap.channel(NioSocketChannel.class); bootstrap.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1_000) - .option(ChannelOption.SO_KEEPALIVE, true) - .option(ChannelOption.SO_SNDBUF, 64 * 1024) - .option(ChannelOption.SO_RCVBUF, 64 * 1024) - .option(ChannelOption.RCVBUF_ALLOCATOR, new AdaptiveRecvByteBufAllocator(1024, 8192, 65536)) - .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT); + .option(ChannelOption.SO_KEEPALIVE, true) + .option(ChannelOption.SO_SNDBUF, 64 * 1024) + .option(ChannelOption.SO_RCVBUF, 64 * 1024) + .option(ChannelOption.RCVBUF_ALLOCATOR, new AdaptiveRecvByteBufAllocator(1024, 8192, 65536)) + .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT); bootstrap.handler(new ChannelInitializer() { public void initChannel(SocketChannel ch) { ch.pipeline().addLast(new Codec.Encoder(), new Codec.Decoder()) - .addLast(handler, newExceptionHandler()); + .addLast(handler, newExceptionHandler()); } }); @@ -104,8 +105,8 @@ public abstract class TcpClient implements Closeable { InetSocketAddress localAddress = (InetSocketAddress) f.channel().localAddress(); channel = f.channel(); log - .info("connected|local={}:{}|server={}", localAddress.getAddress().getHostAddress(), localAddress.getPort(), - host + ":" + port); + .info("connected|local={}:{}|server={}", localAddress.getAddress().getHostAddress(), localAddress.getPort(), + host + ":" + port); } @Override @@ -164,9 +165,9 @@ public abstract class TcpClient implements Closeable { } protected Package io(Package msg, long timeout) throws Exception { - Object key = RequestContext._key(msg); + Object key = RequestContext.key(msg); CountDownLatch latch = new CountDownLatch(1); - RequestContext c = RequestContext._context(key, msg, latch); + RequestContext c = RequestContext.context(key, msg, latch); if (!contexts.contains(c)) { contexts.put(key, c); } else { @@ -196,7 +197,7 @@ public abstract class TcpClient implements Closeable { @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { log - .info("exceptionCaught, close connection.|remote address={}", ctx.channel().remoteAddress(), cause); + .info("exceptionCaught, close connection.|remote address={}", ctx.channel().remoteAddress(), cause); ctx.close(); } }; diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/conf/EventMeshTCPClientConfig.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/conf/EventMeshTCPClientConfig.java index 56b94f5e5..e47daa924 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/conf/EventMeshTCPClientConfig.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/conf/EventMeshTCPClientConfig.java @@ -25,7 +25,7 @@ import lombok.Data; @Data @Builder public class EventMeshTCPClientConfig { - private String host; - private int port; + private String host; + private int port; private UserAgent userAgent; } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/AbstractEventMeshTCPPubHandler.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/AbstractEventMeshTCPPubHandler.java index 4eca20e98..b83865991 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/AbstractEventMeshTCPPubHandler.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/AbstractEventMeshTCPPubHandler.java @@ -24,10 +24,11 @@ import org.apache.eventmesh.common.protocol.tcp.Package; import java.util.concurrent.ConcurrentHashMap; -import com.google.common.base.Preconditions; - import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; + +import com.google.common.base.Preconditions; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -57,7 +58,7 @@ public abstract class AbstractEventMeshTCPPubHandler extends Si break; } - RequestContext context = contexts.get(RequestContext._key(msg)); + RequestContext context = contexts.get(RequestContext.key(msg)); if (context != null) { contexts.remove(context.getKey()); context.finish(msg); diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/AbstractEventMeshTCPSubHandler.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/AbstractEventMeshTCPSubHandler.java index 1149e09ad..4669244b9 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/AbstractEventMeshTCPSubHandler.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/AbstractEventMeshTCPSubHandler.java @@ -24,10 +24,11 @@ import org.apache.eventmesh.common.protocol.tcp.Package; import java.util.concurrent.ConcurrentHashMap; -import com.google.common.base.Preconditions; - import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; + +import com.google.common.base.Preconditions; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -64,7 +65,7 @@ public abstract class AbstractEventMeshTCPSubHandler extends Si default: log.error("msg ignored|{}|{}", cmd, msg); } - RequestContext context = contexts.get(RequestContext._key(msg)); + RequestContext context = contexts.get(RequestContext.key(msg)); if (context != null) { contexts.remove(context.getKey()); context.finish(msg); diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPClient.java index abe029825..d81cd84f8 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPClient.java @@ -74,7 +74,7 @@ public class CloudEventTCPClient implements EventMeshTCPClient { @Override public void subscribe(String topic, SubscriptionMode subscriptionMode, SubscriptionType subscriptionType) - throws EventMeshException { + throws EventMeshException { cloudEventTCPSubClient.subscribe(topic, subscriptionMode, subscriptionType); } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPPubClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPPubClient.java index 13262d50b..b7de41275 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPPubClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPPubClient.java @@ -33,13 +33,14 @@ import org.apache.eventmesh.common.protocol.tcp.Package; import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; -import com.google.common.base.Preconditions; - import io.cloudevents.CloudEvent; import io.cloudevents.core.format.EventFormat; import io.cloudevents.core.provider.EventFormatProvider; import io.cloudevents.jackson.JsonFormat; import io.netty.channel.ChannelHandlerContext; + +import com.google.common.base.Preconditions; + import lombok.extern.slf4j.Slf4j; /** @@ -93,7 +94,7 @@ class CloudEventTCPPubClient extends TcpClient implements EventMeshTCPPubClient< try { Package msg = MessageUtils.buildPackage(event, Command.REQUEST_TO_SERVER); super.send(msg); - this.callbackConcurrentHashMap.put((String) RequestContext._key(msg), callback); + this.callbackConcurrentHashMap.put((String) RequestContext.key(msg), callback); } catch (Exception ex) { // should trigger callback? throw new EventMeshException("asyncRR error", ex); @@ -105,7 +106,7 @@ class CloudEventTCPPubClient extends TcpClient implements EventMeshTCPPubClient< try { Package msg = MessageUtils.buildPackage(cloudEvent, Command.ASYNC_MESSAGE_TO_SERVER); log.info("SimplePubClientImpl cloud event|{}|publish|send|type={}|protocol={}|msg={}", - clientNo, msg.getHeader().getCmd(), msg.getHeader().getProperty(Constants.PROTOCOL_TYPE), msg); + clientNo, msg.getHeader().getCmd(), msg.getHeader().getProperty(Constants.PROTOCOL_TYPE), msg); return io(msg, timeout); } catch (Exception ex) { throw new EventMeshException("publish error", ex); @@ -117,7 +118,7 @@ class CloudEventTCPPubClient extends TcpClient implements EventMeshTCPPubClient< try { Package msg = MessageUtils.buildPackage(cloudEvent, Command.BROADCAST_MESSAGE_TO_SERVER); log.info("{}|publish|send|type={}|protocol={}|msg={}", clientNo, msg.getHeader().getCmd(), - msg.getHeader().getProperty(Constants.PROTOCOL_TYPE), msg); + msg.getHeader().getProperty(Constants.PROTOCOL_TYPE), msg); super.send(msg); } catch (Exception ex) { throw new EventMeshException("Broadcast message error", ex); @@ -148,7 +149,7 @@ class CloudEventTCPPubClient extends TcpClient implements EventMeshTCPPubClient< public void callback(CloudEvent cloudEvent, ChannelHandlerContext ctx) { if (callback != null) { callback.handle(cloudEvent) - .ifPresent(responseMessage -> ctx.writeAndFlush(MessageUtils.buildPackage(responseMessage, Command.RESPONSE_TO_SERVER))); + .ifPresent(responseMessage -> ctx.writeAndFlush(MessageUtils.buildPackage(responseMessage, Command.RESPONSE_TO_SERVER))); } } @@ -156,7 +157,7 @@ class CloudEventTCPPubClient extends TcpClient implements EventMeshTCPPubClient< public CloudEvent getMessage(Package tcpPackage) { EventFormat eventFormat = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE); Preconditions.checkNotNull(eventFormat, - String.format("Cannot find the cloudevent format: %s", JsonFormat.CONTENT_TYPE)); + String.format("Cannot find the cloudevent format: %s", JsonFormat.CONTENT_TYPE)); return eventFormat.deserialize(tcpPackage.getBody().toString().getBytes(StandardCharsets.UTF_8)); } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPSubClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPSubClient.java index 068e86daf..f6eee73e0 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPSubClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPSubClient.java @@ -40,13 +40,14 @@ import java.util.LinkedList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; -import com.google.common.base.Preconditions; - import io.cloudevents.CloudEvent; import io.cloudevents.core.format.EventFormat; import io.cloudevents.core.provider.EventFormatProvider; import io.cloudevents.jackson.JsonFormat; import io.netty.channel.ChannelHandlerContext; + +import com.google.common.base.Preconditions; + import lombok.extern.slf4j.Slf4j; /** @@ -55,8 +56,8 @@ import lombok.extern.slf4j.Slf4j; @Slf4j class CloudEventTCPSubClient extends TcpClient implements EventMeshTCPSubClient { - private final List subscriptionItems = Collections.synchronizedList(new LinkedList<>()); - private ReceiveMsgHook callback; + private final List subscriptionItems = Collections.synchronizedList(new LinkedList<>()); + private ReceiveMsgHook callback; public CloudEventTCPSubClient(EventMeshTCPClientConfig eventMeshTcpClientConfig) { super(eventMeshTcpClientConfig); @@ -93,7 +94,7 @@ class CloudEventTCPSubClient extends TcpClient implements EventMeshTCPSubClient< @Override public void subscribe(String topic, SubscriptionMode subscriptionMode, SubscriptionType subscriptionType) - throws EventMeshException { + throws EventMeshException { try { subscriptionItems.add(new SubscriptionItem(topic, subscriptionMode, subscriptionType)); Package request = MessageUtils.subscribe(topic, subscriptionMode, subscriptionType); @@ -141,7 +142,7 @@ class CloudEventTCPSubClient extends TcpClient implements EventMeshTCPSubClient< private class CloudEventTCPSubHandler extends AbstractEventMeshTCPSubHandler { public CloudEventTCPSubHandler( - ConcurrentHashMap contexts) { + ConcurrentHashMap contexts) { super(contexts); } @@ -149,7 +150,7 @@ class CloudEventTCPSubClient extends TcpClient implements EventMeshTCPSubClient< public CloudEvent getProtocolMessage(Package tcpPackage) { EventFormat eventFormat = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE); Preconditions.checkNotNull(eventFormat, - String.format("Cannot find the cloudevent format: %s", JsonFormat.CONTENT_TYPE)); + String.format("Cannot find the cloudevent format: %s", JsonFormat.CONTENT_TYPE)); return eventFormat.deserialize(tcpPackage.getBody().toString().getBytes(StandardCharsets.UTF_8)); } @@ -157,7 +158,7 @@ class CloudEventTCPSubClient extends TcpClient implements EventMeshTCPSubClient< public void callback(CloudEvent cloudEvent, ChannelHandlerContext ctx) { if (callback != null) { callback.handle(cloudEvent).ifPresent( - responseMessage -> ctx.writeAndFlush(MessageUtils.buildPackage(responseMessage, Command.RESPONSE_TO_SERVER)) + responseMessage -> ctx.writeAndFlush(MessageUtils.buildPackage(responseMessage, Command.RESPONSE_TO_SERVER)) ); } } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPClient.java index 6faf050c0..938345964 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPClient.java @@ -52,7 +52,7 @@ public class EventMeshMessageTCPClient implements EventMeshTCPClient ctx.writeAndFlush(MessageUtils.buildPackage(responseMessage, Command.RESPONSE_TO_SERVER)) + responseMessage -> ctx.writeAndFlush(MessageUtils.buildPackage(responseMessage, Command.RESPONSE_TO_SERVER)) ); } } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPSubClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPSubClient.java index c03894d21..5ff5587b5 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPSubClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPSubClient.java @@ -42,13 +42,14 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import io.netty.channel.ChannelHandlerContext; + import lombok.extern.slf4j.Slf4j; @Slf4j class EventMeshMessageTCPSubClient extends TcpClient implements EventMeshTCPSubClient { - private final List subscriptionItems = Collections.synchronizedList(new LinkedList<>()); - private ReceiveMsgHook callback; + private final List subscriptionItems = Collections.synchronizedList(new LinkedList<>()); + private ReceiveMsgHook callback; public EventMeshMessageTCPSubClient(EventMeshTCPClientConfig eventMeshTcpClientConfig) { super(eventMeshTcpClientConfig); @@ -85,7 +86,7 @@ class EventMeshMessageTCPSubClient extends TcpClient implements EventMeshTCPSubC @Override public void subscribe(String topic, SubscriptionMode subscriptionMode, SubscriptionType subscriptionType) - throws EventMeshException { + throws EventMeshException { try { subscriptionItems.add(new SubscriptionItem(topic, subscriptionMode, subscriptionType)); Package request = MessageUtils.subscribe(topic, subscriptionMode, subscriptionType); @@ -143,7 +144,7 @@ class EventMeshMessageTCPSubClient extends TcpClient implements EventMeshTCPSubC public void callback(EventMeshMessage eventMeshMessage, ChannelHandlerContext ctx) { if (callback != null) { callback.handle(eventMeshMessage).ifPresent( - responseMessage -> ctx.writeAndFlush(MessageUtils.buildPackage(responseMessage, Command.RESPONSE_TO_SERVER)) + responseMessage -> ctx.writeAndFlush(MessageUtils.buildPackage(responseMessage, Command.RESPONSE_TO_SERVER)) ); } } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPClient.java index 25a929e5c..e7ec849cb 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPClient.java @@ -29,6 +29,7 @@ import org.apache.eventmesh.common.protocol.SubscriptionType; import org.apache.eventmesh.common.protocol.tcp.Package; import io.openmessaging.api.Message; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -75,7 +76,7 @@ public class OpenMessageTCPClient implements EventMeshTCPClient { @Override public void subscribe(String topic, SubscriptionMode subscriptionMode, SubscriptionType subscriptionType) - throws EventMeshException { + throws EventMeshException { eventMeshTCPSubClient.subscribe(topic, subscriptionMode, subscriptionType); } diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPPubClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPPubClient.java index 3eebdd206..e24b2b5ba 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPPubClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPPubClient.java @@ -25,6 +25,7 @@ import org.apache.eventmesh.common.exception.EventMeshException; import org.apache.eventmesh.common.protocol.tcp.Package; import io.openmessaging.api.Message; + import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPSubClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPSubClient.java index 34c3ad038..b601d4970 100644 --- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPSubClient.java +++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/openmessage/OpenMessageTCPSubClient.java @@ -25,6 +25,7 @@ import org.apache.eventmesh.common.protocol.SubscriptionMode; import org.apache.eventmesh.common.protocol.SubscriptionType; import io.openmessaging.api.Message; + import lombok.extern.slf4j.Slf4j; @Slf4j @@ -48,7 +49,7 @@ class OpenMessageTCPSubClient implements EventMeshTCPSubClient { @Override public void subscribe(String topic, SubscriptionMode subscriptionMode, SubscriptionType subscriptionType) - throws EventMeshException { + throws EventMeshException { } diff --git a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/AsyncPublishInstance.java b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/AsyncPublishInstance.java index 1095de392..0e74b3030 100644 --- a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/AsyncPublishInstance.java +++ b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/AsyncPublishInstance.java @@ -36,23 +36,23 @@ public class AsyncPublishInstance { final String topic = "TEST-TOPIC-HTTP-ASYNC"; EventMeshHttpClientConfig eventMeshClientConfig = EventMeshHttpClientConfig.builder() - .liteEventMeshAddr(eventMeshIPPort) - .producerGroup("EventMeshTest-producerGroup") - .env("env") - .idc("idc") - .ip(IPUtils.getLocalAddress()) - .sys("1234") - .pid(String.valueOf(ThreadUtils.getPID())).build(); + .liteEventMeshAddr(eventMeshIPPort) + .producerGroup("EventMeshTest-producerGroup") + .env("env") + .idc("idc") + .ip(IPUtils.getLocalAddress()) + .sys("1234") + .pid(String.valueOf(ThreadUtils.getPID())).build(); EventMeshHttpProducer eventMeshHttpProducer = new EventMeshHttpProducer(eventMeshClientConfig); for (int i = 0; i < 1; i++) { EventMeshMessage eventMeshMessage = EventMeshMessage.builder() - .bizSeqNo(RandomStringUtils.generateNum(30)) - .content("testPublishMessage") - .topic(topic) - .uniqueId(RandomStringUtils.generateNum(30)) - .build() - .addProp(Constants.EVENTMESH_MESSAGE_CONST_TTL, String.valueOf(4 * 1000)); + .bizSeqNo(RandomStringUtils.generateNum(30)) + .content("testPublishMessage") + .topic(topic) + .uniqueId(RandomStringUtils.generateNum(30)) + .build() + .addProp(Constants.EVENTMESH_MESSAGE_CONST_TTL, String.valueOf(4 * 1000)); eventMeshHttpProducer.publish(eventMeshMessage); Thread.sleep(1000); diff --git a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/AsyncSyncRequestInstance.java b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/AsyncSyncRequestInstance.java index 28fe47cca..9f84cb6ae 100644 --- a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/AsyncSyncRequestInstance.java +++ b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/AsyncSyncRequestInstance.java @@ -39,9 +39,9 @@ public class AsyncSyncRequestInstance { EventMeshHttpProducer eventMeshHttpProducer = null; try { -// String eventMeshIPPort = args[0]; + //String eventMeshIPPort = args[0]; String eventMeshIPPort = ""; -// final String topic = args[1]; + //final String topic = args[1]; final String topic = "TEST-TOPIC-HTTP-ASYNC"; if (StringUtils.isBlank(eventMeshIPPort)) { // if has multi value, can config as: 127.0.0.1:10105;127.0.0.2:10105 @@ -49,28 +49,28 @@ public class AsyncSyncRequestInstance { } EventMeshHttpClientConfig eventMeshClientConfig = EventMeshHttpClientConfig.builder() - .liteEventMeshAddr(eventMeshIPPort) - .producerGroup("EventMeshTest-producerGroup") - .env("env") - .idc("idc") - .ip(IPUtils.getLocalAddress()) - .sys("1234") - .pid(String.valueOf(ThreadUtils.getPID())).build(); + .liteEventMeshAddr(eventMeshIPPort) + .producerGroup("EventMeshTest-producerGroup") + .env("env") + .idc("idc") + .ip(IPUtils.getLocalAddress()) + .sys("1234") + .pid(String.valueOf(ThreadUtils.getPID())).build(); eventMeshHttpProducer = new EventMeshHttpProducer(eventMeshClientConfig); final long startTime = System.currentTimeMillis(); final EventMeshMessage eventMeshMessage = EventMeshMessage.builder() - .bizSeqNo(RandomStringUtils.generateNum(30)) - .content("testAsyncMessage") - .topic(topic) - .uniqueId(RandomStringUtils.generateNum(30)).build(); + .bizSeqNo(RandomStringUtils.generateNum(30)) + .content("testAsyncMessage") + .topic(topic) + .uniqueId(RandomStringUtils.generateNum(30)).build(); eventMeshHttpProducer.request(eventMeshMessage, new RRCallback() { @Override public void onSuccess(EventMeshMessage o) { logger.debug("sendmsg : {}, return : {}, cost:{}ms", eventMeshMessage.getContent(), o.getContent(), - System.currentTimeMillis() - startTime); + System.currentTimeMillis() - startTime); } @Override diff --git a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/SyncRequestInstance.java b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/SyncRequestInstance.java index 30e7142eb..6096438a9 100644 --- a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/SyncRequestInstance.java +++ b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/demo/SyncRequestInstance.java @@ -47,34 +47,34 @@ public class SyncRequestInstance { } EventMeshHttpClientConfig eventMeshClientConfig = EventMeshHttpClientConfig.builder() - .liteEventMeshAddr(eventMeshIPPort) - .producerGroup("EventMeshTest-producerGroup") - .env("env") - .idc("idc") - .ip(IPUtils.getLocalAddress()) - .sys("1234") - .pid(String.valueOf(ThreadUtils.getPID())).build(); + .liteEventMeshAddr(eventMeshIPPort) + .producerGroup("EventMeshTest-producerGroup") + .env("env") + .idc("idc") + .ip(IPUtils.getLocalAddress()) + .sys("1234") + .pid(String.valueOf(ThreadUtils.getPID())).build(); eventMeshHttpProducer = new EventMeshHttpProducer(eventMeshClientConfig); long startTime = System.currentTimeMillis(); EventMeshMessage eventMeshMessage = EventMeshMessage.builder() - .bizSeqNo(RandomStringUtils.generateNum(30)) - .content("contentStr with special protocal") - .topic(topic) - .uniqueId(RandomStringUtils.generateNum(30)).build(); + .bizSeqNo(RandomStringUtils.generateNum(30)) + .content("contentStr with special protocal") + .topic(topic) + .uniqueId(RandomStringUtils.generateNum(30)).build(); EventMeshMessage rsp = eventMeshHttpProducer.request(eventMeshMessage, 10000); if (logger.isDebugEnabled()) { logger.debug("sendmsg : {}, return : {}, cost:{}ms", eventMeshMessage.getContent(), rsp.getContent(), - System.currentTimeMillis() - startTime); + System.currentTimeMillis() - startTime); } } catch (Exception e) { logger.warn("send msg failed", e); } Thread.sleep(30000); - try (final EventMeshHttpProducer closed = eventMeshHttpProducer){ + try (final EventMeshHttpProducer closed = eventMeshHttpProducer) { // close producer } catch (Exception e1) { logger.warn("producer shutdown exception", e1); diff --git a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/util/HttpLoadBalanceUtilsTest.java b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/util/HttpLoadBalanceUtilsTest.java index aabafb1d6..f97c2d81e 100644 --- a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/util/HttpLoadBalanceUtilsTest.java +++ b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/http/util/HttpLoadBalanceUtilsTest.java @@ -21,6 +21,7 @@ import org.apache.eventmesh.client.http.conf.EventMeshHttpClientConfig; import org.apache.eventmesh.common.exception.EventMeshException; import org.apache.eventmesh.common.loadbalance.LoadBalanceSelector; import org.apache.eventmesh.common.loadbalance.LoadBalanceType; + import org.junit.Assert; import org.junit.Test; @@ -29,8 +30,8 @@ public class HttpLoadBalanceUtilsTest { @Test public void testCreateRandomSelector() throws EventMeshException { EventMeshHttpClientConfig eventMeshHttpClientConfig = EventMeshHttpClientConfig.builder() - .liteEventMeshAddr("127.0.0.1:1001;127.0.0.2:1002") - .build(); + .liteEventMeshAddr("127.0.0.1:1001;127.0.0.2:1002") + .build(); LoadBalanceSelector randomSelector = HttpLoadBalanceUtils .createEventMeshServerLoadBalanceSelector(eventMeshHttpClientConfig); Assert.assertEquals(LoadBalanceType.RANDOM, randomSelector.getType()); diff --git a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/tcp/common/EventMeshTestUtils.java b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/tcp/common/EventMeshTestUtils.java index f90a2d25e..94d273b0d 100644 --- a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/tcp/common/EventMeshTestUtils.java +++ b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/tcp/common/EventMeshTestUtils.java @@ -35,33 +35,33 @@ public class EventMeshTestUtils { public static UserAgent generateClient1() { return UserAgent.builder() - .host("127.0.0.1") - .password(generateRandomString(8)) - .username("PU4283") - .consumerGroup("EventmeshTest-ConsumerGroup") - .producerGroup("EventmeshTest-ProducerGroup") - .path("/data/app/umg_proxy") - .port(8362) - .subsystem("5023") - .pid(32893) - .version("2.0.11") - .idc("FT") - .build(); + .host("127.0.0.1") + .password(generateRandomString(8)) + .username("PU4283") + .consumerGroup("EventmeshTest-ConsumerGroup") + .producerGroup("EventmeshTest-ProducerGroup") + .path("/data/app/umg_proxy") + .port(8362) + .subsystem("5023") + .pid(32893) + .version("2.0.11") + .idc("FT") + .build(); } public static UserAgent generateClient2() { return UserAgent.builder() - .host("127.0.0.1") - .password(generateRandomString(8)) - .username("PU4283") - .consumerGroup("EventmeshTest-ConsumerGroup") - .producerGroup("EventmeshTest-ProducerGroup") - .path("/data/app/umg_proxy") - .port(9362) - .subsystem("5017") - .pid(42893) - .version("2.0.11") - .idc("FT").build(); + .host("127.0.0.1") + .password(generateRandomString(8)) + .username("PU4283") + .consumerGroup("EventmeshTest-ConsumerGroup") + .producerGroup("EventmeshTest-ProducerGroup") + .path("/data/app/umg_proxy") + .port(9362) + .subsystem("5017") + .pid(42893) + .version("2.0.11") + .idc("FT").build(); } public static Package syncRR() { diff --git a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/tcp/impl/EventMeshTCPClientFactoryTest.java b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/tcp/impl/EventMeshTCPClientFactoryTest.java index 7e3943105..3467a9e42 100644 --- a/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/tcp/impl/EventMeshTCPClientFactoryTest.java +++ b/eventmesh-sdk-java/src/test/java/org/apache/eventmesh/client/tcp/impl/EventMeshTCPClientFactoryTest.java @@ -36,19 +36,21 @@ public class EventMeshTCPClientFactoryTest { @Test public void createEventMeshTCPClient() { EventMeshTCPClientConfig meshTCPClientConfig = EventMeshTCPClientConfig.builder() - .host("localhost") - .port(1234) - .build(); + .host("localhost") + .port(1234) + .build(); + + EventMeshTCPClient eventMeshMessageTCPClient = - EventMeshTCPClientFactory.createEventMeshTCPClient(meshTCPClientConfig, EventMeshMessage.class); + EventMeshTCPClientFactory.createEventMeshTCPClient(meshTCPClientConfig, EventMeshMessage.class); Assert.assertEquals(EventMeshMessageTCPClient.class, eventMeshMessageTCPClient.getClass()); EventMeshTCPClient cloudEventTCPClient = - EventMeshTCPClientFactory.createEventMeshTCPClient(meshTCPClientConfig, CloudEvent.class); + EventMeshTCPClientFactory.createEventMeshTCPClient(meshTCPClientConfig, CloudEvent.class); Assert.assertEquals(CloudEventTCPClient.class, cloudEventTCPClient.getClass()); EventMeshTCPClient openMessageTCPClient = - EventMeshTCPClientFactory.createEventMeshTCPClient(meshTCPClientConfig, Message.class); + EventMeshTCPClientFactory.createEventMeshTCPClient(meshTCPClientConfig, Message.class); Assert.assertEquals(OpenMessageTCPClient.class, openMessageTCPClient.getClass()); } } \ No newline at end of file diff --git a/eventmesh-security-plugin/eventmesh-security-api/src/main/java/org/apache/eventmesh/api/acl/AclService.java b/eventmesh-security-plugin/eventmesh-security-api/src/main/java/org/apache/eventmesh/api/acl/AclService.java index 38b2f1a86..8387de290 100644 --- a/eventmesh-security-plugin/eventmesh-security-api/src/main/java/org/apache/eventmesh/api/acl/AclService.java +++ b/eventmesh-security-plugin/eventmesh-security-api/src/main/java/org/apache/eventmesh/api/acl/AclService.java @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.api.acl; import org.apache.eventmesh.api.exception.AclException; @@ -22,6 +23,9 @@ import org.apache.eventmesh.spi.EventMeshSPI; import java.util.Properties; +/** + * AclService + */ @EventMeshSPI(isSingleton = true, eventMeshExtensionType = EventMeshExtensionType.SECURITY) public interface AclService { void init() throws AclException; diff --git a/eventmesh-security-plugin/eventmesh-security-api/src/main/java/org/apache/eventmesh/api/exception/AclException.java b/eventmesh-security-plugin/eventmesh-security-api/src/main/java/org/apache/eventmesh/api/exception/AclException.java index 389bf8a23..115be40be 100644 --- a/eventmesh-security-plugin/eventmesh-security-api/src/main/java/org/apache/eventmesh/api/exception/AclException.java +++ b/eventmesh-security-plugin/eventmesh-security-api/src/main/java/org/apache/eventmesh/api/exception/AclException.java @@ -14,8 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.eventmesh.api.exception; +/** + * AclException + */ public class AclException extends RuntimeException { public AclException(String message) { diff --git a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/EventMeshExtensionFactory.java b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/EventMeshExtensionFactory.java index a096f1793..eaf73ff6d 100644 --- a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/EventMeshExtensionFactory.java +++ b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/EventMeshExtensionFactory.java @@ -17,18 +17,20 @@ package org.apache.eventmesh.spi; -import org.apache.commons.lang3.StringUtils; import org.apache.eventmesh.spi.loader.ExtensionClassLoader; import org.apache.eventmesh.spi.loader.JarExtensionClassLoader; import org.apache.eventmesh.spi.loader.MetaInfExtensionClassLoader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * The extension fetching factory, all extension plugins should be fetched by this factory. * And all the extension plugins defined in eventmesh should have {@link EventMeshSPI} annotation. diff --git a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/EventMeshSPI.java b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/EventMeshSPI.java index 364d197c9..a0ae5ecd3 100644 --- a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/EventMeshSPI.java +++ b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/EventMeshSPI.java @@ -38,6 +38,7 @@ public @interface EventMeshSPI { /** * {@link EventMeshExtensionType} + * * @return extension type */ EventMeshExtensionType eventMeshExtensionType(); diff --git a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/EventMeshUrlClassLoader.java b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/EventMeshUrlClassLoader.java index c53543b6d..9a27d495e 100644 --- a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/EventMeshUrlClassLoader.java +++ b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/EventMeshUrlClassLoader.java @@ -37,6 +37,7 @@ public class EventMeshUrlClassLoader extends URLClassLoader { * method has no effect. *

* More detail see {@link URLClassLoader#addURL(URL)} + * * @param urls */ public void addUrls(List urls) { diff --git a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/JarExtensionClassLoader.java b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/JarExtensionClassLoader.java index 197e213db..77d147488 100644 --- a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/JarExtensionClassLoader.java +++ b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/JarExtensionClassLoader.java @@ -49,11 +49,11 @@ public class JarExtensionClassLoader implements ExtensionClassLoader { private static final Logger logger = LoggerFactory.getLogger(JarExtensionClassLoader.class); private static final ConcurrentHashMap, Map>> EXTENSION_CLASS_CACHE = - new ConcurrentHashMap<>(16); + new ConcurrentHashMap<>(16); private static final String EVENTMESH_EXTENSION_PLUGIN_DIR = - System.getProperty("eventMeshPluginDir", - Joiner.on(File.separator).join(Lists.newArrayList(".", "plugin"))); + System.getProperty("eventMeshPluginDir", + Joiner.on(File.separator).join(Lists.newArrayList(".", "plugin"))); // META-INF/eventmesh private static final String EVENTMESH_EXTENSION_META_DIR = "META-INF/eventmesh/"; @@ -62,7 +62,7 @@ public class JarExtensionClassLoader implements ExtensionClassLoader { public Map> loadExtensionClass(Class extensionType, String extensionInstanceName) { return EXTENSION_CLASS_CACHE - .computeIfAbsent(extensionType, t -> doLoadExtensionClass(t, extensionInstanceName)); + .computeIfAbsent(extensionType, t -> doLoadExtensionClass(t, extensionInstanceName)); } private Map> doLoadExtensionClass(Class extensionType, @@ -71,13 +71,13 @@ public class JarExtensionClassLoader implements ExtensionClassLoader { EventMeshSPI eventMeshSpiAnnotation = extensionType.getAnnotation(EventMeshSPI.class); String pluginDir = Paths.get( - EVENTMESH_EXTENSION_PLUGIN_DIR, - eventMeshSpiAnnotation.eventMeshExtensionType().getExtensionTypeName(), - extensionInstanceName + EVENTMESH_EXTENSION_PLUGIN_DIR, + eventMeshSpiAnnotation.eventMeshExtensionType().getExtensionTypeName(), + extensionInstanceName ).toString(); String extensionFileName = - EVENTMESH_EXTENSION_META_DIR + extensionType.getName(); + EVENTMESH_EXTENSION_META_DIR + extensionType.getName(); EventMeshUrlClassLoader urlClassLoader = EventMeshUrlClassLoader.getInstance(); urlClassLoader.addUrls(loadJarPathFromResource(pluginDir)); try { @@ -122,7 +122,7 @@ public class JarExtensionClassLoader implements ExtensionClassLoader { private static Map> loadResources(URLClassLoader urlClassLoader, URL url, Class extensionType) - throws IOException { + throws IOException { Map> extensionMap = new HashMap<>(); try (InputStream inputStream = url.openStream()) { Properties properties = new Properties(); @@ -133,12 +133,12 @@ public class JarExtensionClassLoader implements ExtensionClassLoader { try { Class targetClass = urlClassLoader.loadClass(extensionClassStr); logger - .info("load extension class success, extensionType: {}, extensionClass: {}", - extensionType, targetClass); + .info("load extension class success, extensionType: {}, extensionClass: {}", + extensionType, targetClass); if (!extensionType.isAssignableFrom(targetClass)) { throw new ExtensionException( - String.format("class: %s is not subClass of %s", targetClass, - extensionType)); + String.format("class: %s is not subClass of %s", targetClass, + extensionType)); } extensionMap.put(extensionNameStr, targetClass); } catch (ClassNotFoundException e) { diff --git a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/MetaInfExtensionClassLoader.java b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/MetaInfExtensionClassLoader.java index ec07f4ea6..4a98bc10a 100644 --- a/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/MetaInfExtensionClassLoader.java +++ b/eventmesh-spi/src/main/java/org/apache/eventmesh/spi/loader/MetaInfExtensionClassLoader.java @@ -18,8 +18,6 @@ package org.apache.eventmesh.spi.loader; import org.apache.eventmesh.spi.ExtensionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; @@ -30,6 +28,9 @@ import java.util.Map; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Load extension from classpath */ diff --git a/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/EventMeshExtensionFactoryTest.java b/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/EventMeshExtensionFactoryTest.java index dc75e24d8..5dc24c592 100644 --- a/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/EventMeshExtensionFactoryTest.java +++ b/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/EventMeshExtensionFactoryTest.java @@ -19,6 +19,7 @@ package org.apache.eventmesh.spi; import org.apache.eventmesh.spi.example.TestPrototypeExtension; import org.apache.eventmesh.spi.example.TestSingletonExtension; + import org.junit.Assert; import org.junit.Test; diff --git a/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/example/TestPrototypeExtension.java b/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/example/TestPrototypeExtension.java index 06e4549f5..8117ae8c8 100644 --- a/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/example/TestPrototypeExtension.java +++ b/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/example/TestPrototypeExtension.java @@ -20,6 +20,9 @@ package org.apache.eventmesh.spi.example; import org.apache.eventmesh.spi.EventMeshExtensionType; import org.apache.eventmesh.spi.EventMeshSPI; +/** + * TestPrototypeExtension + */ @EventMeshSPI(isSingleton = false, eventMeshExtensionType = EventMeshExtensionType.UNKNOWN) public interface TestPrototypeExtension { diff --git a/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/example/TestSingletonExtension.java b/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/example/TestSingletonExtension.java index b78744d2e..9b67793e1 100644 --- a/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/example/TestSingletonExtension.java +++ b/eventmesh-spi/src/test/java/org/apache/eventmesh/spi/example/TestSingletonExtension.java @@ -20,6 +20,9 @@ package org.apache.eventmesh.spi.example; import org.apache.eventmesh.spi.EventMeshExtensionType; import org.apache.eventmesh.spi.EventMeshSPI; +/** + * TestSingletonExtension + */ @EventMeshSPI(isSingleton = true, eventMeshExtensionType = EventMeshExtensionType.UNKNOWN) public interface TestSingletonExtension { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..69a971507 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 7b957476e..744e882ed 100755 --- a/gradlew +++ b/gradlew @@ -1,21 +1,19 @@ #!/usr/bin/env sh + # -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at +# Copyright 2015 the original author or authors. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # ############################################################################## @@ -74,7 +72,7 @@ case "`uname`" in Darwin* ) darwin=true ;; - MINGW* ) + MSYS* | MINGW* ) msys=true ;; NONSTOP* ) @@ -132,7 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/gradlew.bat b/gradlew.bat index 192f88477..107acd32c 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,20 +1,17 @@ @rem -@rem Licensed to the Apache Software Foundation (ASF) under one -@rem or more contributor license agreements. See the NOTICE file -@rem distributed with this work for additional information -@rem regarding copyright ownership. The ASF licenses this file -@rem to you under the Apache License, Version 2.0 (the -@rem "License"); you may not use this file except in compliance -@rem with the License. You may obtain a copy of the License at +@rem Copyright 2015 the original author or authors. @rem -@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at @rem -@rem Unless required by applicable law or agreed to in writing, -@rem software distributed under the License is distributed on an -@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@rem KIND, either express or implied. See the License for the -@rem specific language governing permissions and limitations -@rem under the License. +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. @rem @if "%DEBUG%" == "" @echo off @@ -43,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -57,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -67,21 +64,6 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line @@ -89,7 +71,7 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/style/checkStyle.xml b/style/checkStyle.xml index f3fe5630d..546777c7c 100644 --- a/style/checkStyle.xml +++ b/style/checkStyle.xml @@ -74,9 +74,9 @@ - + - + @@ -183,7 +183,7 @@ - + @@ -225,7 +225,8 @@ value="Pattern variable name ''{0}'' must match pattern ''{1}''."/> - + + @@ -235,17 +236,20 @@ value="Record component name ''{0}'' must match pattern ''{1}''."/> - + + - + + - + + @@ -269,7 +273,7 @@ - +