This is an automated email from the ASF dual-hosted git repository.
chenguangsheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/eventmesh.git
The following commit(s) were added to refs/heads/master by this push:
new 1e59cdf5c [ISSUE #4369] Move Pravega plugin into Connector from
Storage plugin moudle (#4408)
1e59cdf5c is described below
commit 1e59cdf5c1c3bd7ed97297c942e4ce90f6bffafe
Author: Fabian Bao <[email protected]>
AuthorDate: Mon Aug 28 19:09:25 2023 +0800
[ISSUE #4369] Move Pravega plugin into Connector from Storage plugin
moudle (#4408)
* feat: refactor with pravega plugin.
* feat: refactor with pravega plugin.
* feat: refactor with pravega plugin.
* feat: refactor with pravega plugin.
* feat: refactor with pravega plugin.
* feat: fix redis admin spi.
* feat: refactor with pravega plugin.
* feat: refactor with pravega plugin.
* feat: refactor with pravega plugin.
---
.../eventmesh-connector-pravega/build.gradle | 33 ++++
.../eventmesh-connector-pravega/gradle.properties | 20 ++
.../pravega/client/PravegaCloudEventWriter.java | 73 +++++++
.../connector/pravega/client/PravegaEvent.java | 66 +++++++
.../pravega/config/PravegaServerConfig.java | 32 +++
.../exception/PravegaConnectorException.java | 29 +++
.../pravega/server/PravegaConnectServer.java | 46 +++++
.../pravega/sink/config/PravegaSinkConfig.java | 31 +++
.../pravega/sink/config/SinkConnectorConfig.java | 46 +++++
.../sink/connector/PravegaSinkConnector.java | 158 +++++++++++++++
.../pravega/source/config/PravegaSourceConfig.java | 31 +++
.../source/config/SourceConnectorConfig.java | 47 +++++
.../source/connector/PravegaSourceConnector.java | 215 +++++++++++++++++++++
.../src/main/resources/server-config.yml | 19 ++
.../src/main/resources/sink-config.yml | 37 ++++
.../src/main/resources/source-config.yml | 46 +++++
.../source/connector/RabbitMQSourceConnector.java | 4 +-
settings.gradle | 24 ++-
18 files changed, 945 insertions(+), 12 deletions(-)
diff --git a/eventmesh-connectors/eventmesh-connector-pravega/build.gradle
b/eventmesh-connectors/eventmesh-connector-pravega/build.gradle
new file mode 100644
index 000000000..036533431
--- /dev/null
+++ b/eventmesh-connectors/eventmesh-connector-pravega/build.gradle
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+configurations {
+ implementation.exclude group: 'ch.qos.logback', module: 'logback-classic'
+ implementation.exclude group: 'log4j', module: 'log4j'
+}
+
+dependencies {
+ api project(":eventmesh-openconnect:eventmesh-openconnect-java")
+ implementation project(":eventmesh-common")
+
+ implementation("io.pravega:pravega-client:$pravega_version")
+
+ implementation 'io.cloudevents:cloudevents-json-jackson'
+
+ compileOnly 'org.projectlombok:lombok'
+ annotationProcessor 'org.projectlombok:lombok'
+}
diff --git a/eventmesh-connectors/eventmesh-connector-pravega/gradle.properties
b/eventmesh-connectors/eventmesh-connector-pravega/gradle.properties
new file mode 100644
index 000000000..a5ea881f6
--- /dev/null
+++ b/eventmesh-connectors/eventmesh-connector-pravega/gradle.properties
@@ -0,0 +1,20 @@
+# 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.
+#
+
+pravega_version=0.11.0
+
+pluginType=connector
+pluginName=pravega
\ No newline at end of file
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaCloudEventWriter.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaCloudEventWriter.java
new file mode 100644
index 000000000..e8f6e5cba
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaCloudEventWriter.java
@@ -0,0 +1,73 @@
+/*
+ * 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.connector.pravega.client;
+
+import java.nio.charset.StandardCharsets;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import io.cloudevents.CloudEventData;
+import io.cloudevents.SpecVersion;
+import io.cloudevents.core.format.EventFormat;
+import io.cloudevents.core.message.MessageWriter;
+import io.cloudevents.rw.CloudEventContextWriter;
+import io.cloudevents.rw.CloudEventRWException;
+import io.cloudevents.rw.CloudEventWriter;
+
+public class PravegaCloudEventWriter
+ implements MessageWriter<CloudEventWriter<PravegaEvent>, PravegaEvent>,
CloudEventWriter<PravegaEvent> {
+
+ private final PravegaEvent pravegaEvent;
+
+ public PravegaCloudEventWriter(String topic) {
+ pravegaEvent = new PravegaEvent();
+ pravegaEvent.setTopic(topic);
+ pravegaEvent.setCreateTimestamp(System.currentTimeMillis());
+ }
+
+ @Override
+ public PravegaEvent setEvent(@Nullable EventFormat format, @Nonnull byte[]
value) throws CloudEventRWException {
+ pravegaEvent.setData(new String(value, StandardCharsets.UTF_8));
+ return pravegaEvent;
+ }
+
+ @Override
+ public PravegaEvent end(CloudEventData data) throws CloudEventRWException {
+ pravegaEvent.setData(new String(data.toBytes(),
StandardCharsets.UTF_8));
+ return pravegaEvent;
+ }
+
+ @Override
+ public PravegaEvent end() throws CloudEventRWException {
+ pravegaEvent.setData("");
+ return pravegaEvent;
+ }
+
+ @Override
+ public CloudEventContextWriter withContextAttribute(@Nonnull String name,
@Nonnull String value) throws CloudEventRWException {
+ pravegaEvent.getExtensions().put(name, value);
+ return this;
+ }
+
+ @Override
+ public CloudEventWriter<PravegaEvent> create(SpecVersion version) throws
CloudEventRWException {
+ pravegaEvent.setVersion(version);
+ return this;
+ }
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaEvent.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaEvent.java
new file mode 100644
index 000000000..ce06e482e
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaEvent.java
@@ -0,0 +1,66 @@
+/*
+ * 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.connector.pravega.client;
+
+import org.apache.eventmesh.common.utils.JsonUtils;
+
+import java.io.Serializable;
+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;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class PravegaEvent implements Serializable {
+
+ private static final long serialVersionUID = 0L;
+
+ private SpecVersion version;
+ private String topic;
+ private String data;
+ private Map<String, String> extensions = new HashMap<>();
+ private long createTimestamp;
+
+ public static byte[] toByteArray(PravegaEvent pravegaEvent) {
+ return
JsonUtils.toJSONString(pravegaEvent).getBytes(StandardCharsets.UTF_8);
+ }
+
+ public static PravegaEvent getFromByteArray(byte[] body) {
+ return JsonUtils.parseObject(new String(body, StandardCharsets.UTF_8),
PravegaEvent.class);
+ }
+
+ public CloudEvent convertToCloudEvent() {
+ CloudEventBuilder builder = CloudEventBuilder.fromSpecVersion(version);
+ builder.withData(data.getBytes(StandardCharsets.UTF_8))
+ .withId(extensions.remove("id"))
+ .withSource(URI.create(extensions.remove("source")))
+ .withType(extensions.remove("type"))
+ .withDataContentType(extensions.remove("datacontenttype"))
+ .withSubject(extensions.remove("subject"));
+ extensions.forEach(builder::withExtension);
+ return builder.build();
+ }
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/config/PravegaServerConfig.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/config/PravegaServerConfig.java
new file mode 100644
index 000000000..bf5d9a4fb
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/config/PravegaServerConfig.java
@@ -0,0 +1,32 @@
+/*
+ * 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.connector.pravega.config;
+
+import org.apache.eventmesh.openconnect.api.config.Config;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PravegaServerConfig extends Config {
+
+ private boolean sourceEnable;
+
+ private boolean sinkEnable;
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/exception/PravegaConnectorException.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/exception/PravegaConnectorException.java
new file mode 100644
index 000000000..5a94f3a87
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/exception/PravegaConnectorException.java
@@ -0,0 +1,29 @@
+/*
+ * 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.connector.pravega.exception;
+
+public class PravegaConnectorException extends Exception {
+
+ public PravegaConnectorException(String message) {
+ super(message);
+ }
+
+ public PravegaConnectorException(Throwable throwable) {
+ super(throwable);
+ }
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/server/PravegaConnectServer.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/server/PravegaConnectServer.java
new file mode 100644
index 000000000..750139616
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/server/PravegaConnectServer.java
@@ -0,0 +1,46 @@
+/*
+ * 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.connector.pravega.server;
+
+import org.apache.eventmesh.connector.pravega.config.PravegaServerConfig;
+import
org.apache.eventmesh.connector.pravega.sink.connector.PravegaSinkConnector;
+import
org.apache.eventmesh.connector.pravega.source.connector.PravegaSourceConnector;
+import org.apache.eventmesh.openconnect.Application;
+import org.apache.eventmesh.openconnect.util.ConfigUtil;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class PravegaConnectServer {
+
+ public static void main(String[] args) throws Exception {
+
+ PravegaServerConfig serverConfig =
ConfigUtil.parse(PravegaServerConfig.class, "server-config.yml");
+
+ if (serverConfig.isSourceEnable()) {
+ Application pravegaSourceApp = new Application();
+ pravegaSourceApp.run(PravegaSourceConnector.class);
+ }
+
+ if (serverConfig.isSinkEnable()) {
+ Application pravegaSinkApp = new Application();
+ pravegaSinkApp.run(PravegaSinkConnector.class);
+ }
+
+ }
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/PravegaSinkConfig.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/PravegaSinkConfig.java
new file mode 100644
index 000000000..739c6539b
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/PravegaSinkConfig.java
@@ -0,0 +1,31 @@
+/*
+ * 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.connector.pravega.sink.config;
+
+import org.apache.eventmesh.openconnect.api.config.SinkConfig;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PravegaSinkConfig extends SinkConfig {
+
+ public SinkConnectorConfig connectorConfig;
+
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/SinkConnectorConfig.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/SinkConnectorConfig.java
new file mode 100644
index 000000000..c254dee3b
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/config/SinkConnectorConfig.java
@@ -0,0 +1,46 @@
+/*
+ * 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.connector.pravega.sink.config;
+
+import java.net.URI;
+
+import lombok.Data;
+
+@Data
+public class SinkConnectorConfig {
+
+ private String connectorName;
+
+ private URI controllerURI;
+
+ private String scope;
+
+ private int clientPoolSize;
+
+ private int queueSize;
+
+ private boolean authEnabled;
+
+ private String username;
+
+ private String password;
+
+ private boolean tlsEnable;
+
+ private String truststore;
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/connector/PravegaSinkConnector.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/connector/PravegaSinkConnector.java
new file mode 100644
index 000000000..7ad7cd19f
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/sink/connector/PravegaSinkConnector.java
@@ -0,0 +1,158 @@
+/*
+ * 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.connector.pravega.sink.connector;
+
+import org.apache.eventmesh.connector.pravega.client.PravegaCloudEventWriter;
+import org.apache.eventmesh.connector.pravega.client.PravegaEvent;
+import
org.apache.eventmesh.connector.pravega.exception.PravegaConnectorException;
+import org.apache.eventmesh.connector.pravega.sink.config.PravegaSinkConfig;
+import org.apache.eventmesh.openconnect.api.config.Config;
+import org.apache.eventmesh.openconnect.api.connector.ConnectorContext;
+import org.apache.eventmesh.openconnect.api.connector.SinkConnectorContext;
+import org.apache.eventmesh.openconnect.api.sink.Sink;
+import org.apache.eventmesh.openconnect.offsetmgmt.api.data.ConnectRecord;
+import org.apache.eventmesh.openconnect.util.CloudEventUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import io.cloudevents.CloudEvent;
+import io.pravega.client.ClientConfig;
+import io.pravega.client.EventStreamClientFactory;
+import io.pravega.client.admin.StreamManager;
+import io.pravega.client.stream.EventStreamWriter;
+import io.pravega.client.stream.EventWriterConfig;
+import io.pravega.client.stream.StreamConfiguration;
+import io.pravega.client.stream.impl.ByteArraySerializer;
+import io.pravega.shared.security.auth.DefaultCredentials;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class PravegaSinkConnector implements Sink {
+
+ private PravegaSinkConfig sinkConfig;
+ private StreamManager streamManager;
+ private EventStreamClientFactory clientFactory;
+ private final Map<String, EventStreamWriter<byte[]>> writerMap = new
ConcurrentHashMap<>();
+
+ private static final AtomicBoolean started = new AtomicBoolean(false);
+
+ @Override
+ public Class<? extends Config> configClass() {
+ return PravegaSinkConfig.class;
+ }
+
+ @Override
+ public void init(Config config) throws Exception {
+ }
+
+ @Override
+ public void init(ConnectorContext connectorContext) throws Exception {
+ SinkConnectorContext sinkConnectorContext = (SinkConnectorContext)
connectorContext;
+ this.sinkConfig = (PravegaSinkConfig)
sinkConnectorContext.getSinkConfig();
+
+ streamManager =
StreamManager.create(sinkConfig.getConnectorConfig().getControllerURI());
+
+ if
(!streamManager.checkScopeExists(sinkConfig.getConnectorConfig().getScope())) {
+
streamManager.createScope(sinkConfig.getConnectorConfig().getScope());
+ log.debug("scope[{}] is just created.",
sinkConfig.getConnectorConfig().getScope());
+ }
+
+ ClientConfig.ClientConfigBuilder clientConfigBuilder =
+
ClientConfig.builder().controllerURI(sinkConfig.getConnectorConfig().getControllerURI());
+ if (sinkConfig.getConnectorConfig().isAuthEnabled()) {
+ clientConfigBuilder.credentials(
+ new DefaultCredentials(
+ sinkConfig.getConnectorConfig().getPassword(),
+ sinkConfig.getConnectorConfig().getUsername()));
+ }
+ if (sinkConfig.getConnectorConfig().isTlsEnable()) {
+
clientConfigBuilder.trustStore(sinkConfig.getConnectorConfig().getTruststore()).validateHostName(false);
+ }
+ ClientConfig clientConfig = clientConfigBuilder.build();
+ clientFactory =
EventStreamClientFactory.withScope(sinkConfig.getConnectorConfig().getScope(),
clientConfig);
+ }
+
+ @Override
+ public void start() throws Exception {
+ started.compareAndSet(false, true);
+ }
+
+ @Override
+ public void commit(ConnectRecord record) {
+
+ }
+
+ @Override
+ public String name() {
+ return this.sinkConfig.getConnectorConfig().getConnectorName();
+ }
+
+ @Override
+ public void stop() {
+ writerMap.forEach((topic, writer) -> writer.close());
+ writerMap.clear();
+ clientFactory.close();
+ streamManager.close();
+ started.compareAndSet(true, false);
+ }
+
+ @Override
+ public void put(List<ConnectRecord> sinkRecords) {
+ for (ConnectRecord connectRecord : sinkRecords) {
+ CloudEvent cloudEvent =
CloudEventUtil.convertRecordToEvent(connectRecord);
+ try {
+ publish(cloudEvent.getSubject(), cloudEvent);
+ } catch (InterruptedException e) {
+ Thread currentThread = Thread.currentThread();
+ log.warn("[PravegaSinkConnector] Interrupting thread {} due to
exception {}", currentThread.getName(), e.getMessage());
+ currentThread.interrupt();
+ } catch (Exception e) {
+ log.error("[PravegaSinkConnector] sendResult has error : ", e);
+ }
+ }
+ }
+
+ private void publish(String topic, CloudEvent cloudEvent) throws Exception
{
+ if (!createStream(topic)) {
+ log.debug("stream[{}] has already been created.", topic);
+ }
+
+ try (EventStreamWriter<byte[]> writer =
writerMap.computeIfAbsent(topic, k ->
+ clientFactory.createEventWriter(topic, new
ByteArraySerializer(), EventWriterConfig.builder().build()))) {
+ PravegaCloudEventWriter cloudEventWriter = new
PravegaCloudEventWriter(topic);
+ PravegaEvent pravegaEvent =
cloudEventWriter.writeBinary(cloudEvent);
+ writer.writeEvent(PravegaEvent.toByteArray(pravegaEvent)).get(5,
TimeUnit.SECONDS);
+ } catch (ExecutionException | InterruptedException | TimeoutException
e) {
+ log.error(String.format("Write topic[%s] fail.", topic), e);
+ throw new PravegaConnectorException(String.format("Write topic[%s]
fail.", topic));
+ }
+ }
+
+ private boolean createStream(String topic) {
+ StreamConfiguration streamConfiguration =
StreamConfiguration.builder().build();
+ return
streamManager.createStream(sinkConfig.getConnectorConfig().getScope(), topic,
streamConfiguration);
+ }
+
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/PravegaSourceConfig.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/PravegaSourceConfig.java
new file mode 100644
index 000000000..87fbd3d57
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/PravegaSourceConfig.java
@@ -0,0 +1,31 @@
+/*
+ * 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.connector.pravega.source.config;
+
+import org.apache.eventmesh.openconnect.api.config.SourceConfig;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PravegaSourceConfig extends SourceConfig {
+
+ public SourceConnectorConfig connectorConfig;
+
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/SourceConnectorConfig.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/SourceConnectorConfig.java
new file mode 100644
index 000000000..1ff54d1c1
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/config/SourceConnectorConfig.java
@@ -0,0 +1,47 @@
+/*
+ * 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.connector.pravega.source.config;
+
+import java.net.URI;
+
+import lombok.Data;
+
+@Data
+public class SourceConnectorConfig {
+
+ private String connectorName;
+
+ private URI controllerURI;
+
+ private String scope;
+
+ private int clientPoolSize;
+
+ private int queueSize;
+
+ private boolean authEnabled;
+
+ private String username;
+
+ private String password;
+
+ private boolean tlsEnable;
+
+ private String truststore;
+
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/connector/PravegaSourceConnector.java
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/connector/PravegaSourceConnector.java
new file mode 100644
index 000000000..b0f872854
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/source/connector/PravegaSourceConnector.java
@@ -0,0 +1,215 @@
+/*
+ * 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.connector.pravega.source.connector;
+
+import org.apache.eventmesh.common.ThreadPoolFactory;
+import org.apache.eventmesh.connector.pravega.client.PravegaEvent;
+import
org.apache.eventmesh.connector.pravega.source.config.PravegaSourceConfig;
+import org.apache.eventmesh.openconnect.api.config.Config;
+import org.apache.eventmesh.openconnect.api.connector.ConnectorContext;
+import org.apache.eventmesh.openconnect.api.connector.SourceConnectorContext;
+import org.apache.eventmesh.openconnect.api.source.Source;
+import org.apache.eventmesh.openconnect.offsetmgmt.api.data.ConnectRecord;
+import org.apache.eventmesh.openconnect.util.CloudEventUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import io.cloudevents.CloudEvent;
+import io.pravega.client.ClientConfig;
+import io.pravega.client.EventStreamClientFactory;
+import io.pravega.client.admin.ReaderGroupManager;
+import io.pravega.client.admin.StreamManager;
+import io.pravega.client.stream.EventRead;
+import io.pravega.client.stream.EventStreamReader;
+import io.pravega.client.stream.ReaderConfig;
+import io.pravega.client.stream.ReaderGroupConfig;
+import io.pravega.client.stream.impl.ByteArraySerializer;
+import io.pravega.shared.NameUtils;
+import io.pravega.shared.security.auth.DefaultCredentials;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class PravegaSourceConnector implements Source {
+
+ private static final AtomicBoolean started = new AtomicBoolean(false);
+
+ private static final int DEFAULT_BATCH_SIZE = 10;
+
+ private PravegaSourceConfig sourceConfig;
+
+ private StreamManager streamManager;
+
+ private EventStreamClientFactory clientFactory;
+
+ private ReaderGroupManager readerGroupManager;
+
+ private final Map<String, PravegaSourceHandler> sourceHandlerMap = new
ConcurrentHashMap<>();
+
+ private BlockingQueue<CloudEvent> queue;
+
+ private final ThreadPoolExecutor executor =
ThreadPoolFactory.createThreadPoolExecutor(
+ Runtime.getRuntime().availableProcessors() * 2,
+ Runtime.getRuntime().availableProcessors() * 2,
+ "EventMesh-RabbitMQSourceConnector-");
+
+ @Override
+ public Class<? extends Config> configClass() {
+ return PravegaSourceConfig.class;
+ }
+
+ @Override
+ public void init(Config config) throws Exception {
+ }
+
+ @Override
+ public void init(ConnectorContext connectorContext) throws Exception {
+ SourceConnectorContext sourceConnectorContext =
(SourceConnectorContext) connectorContext;
+ this.sourceConfig = (PravegaSourceConfig)
sourceConnectorContext.getSourceConfig();
+ this.queue = new LinkedBlockingQueue<>(1000);
+
+ streamManager =
StreamManager.create(sourceConfig.getConnectorConfig().getControllerURI());
+ ClientConfig.ClientConfigBuilder clientConfigBuilder =
+
ClientConfig.builder().controllerURI(sourceConfig.getConnectorConfig().getControllerURI());
+ if (sourceConfig.getConnectorConfig().isAuthEnabled()) {
+ clientConfigBuilder.credentials(
+ new DefaultCredentials(
+ sourceConfig.getConnectorConfig().getPassword(),
+ sourceConfig.getConnectorConfig().getUsername()));
+ }
+ if (sourceConfig.getConnectorConfig().isTlsEnable()) {
+
clientConfigBuilder.trustStore(sourceConfig.getConnectorConfig().getTruststore()).validateHostName(false);
+ }
+ ClientConfig clientConfig = clientConfigBuilder.build();
+ clientFactory =
EventStreamClientFactory.withScope(sourceConfig.getConnectorConfig().getScope(),
clientConfig);
+ readerGroupManager =
ReaderGroupManager.withScope(sourceConfig.getConnectorConfig().getScope(),
clientConfig);
+
+ initReaders();
+ }
+
+ private void initReaders() {
+ streamManager.listStreams(sourceConfig.getConnectorConfig().getScope())
+ .forEachRemaining(stream -> {
+ if (stream.getStreamName().startsWith("_")) {
+ return;
+ }
+ ReaderGroupConfig readerGroupConfig =
+ ReaderGroupConfig.builder()
+
.stream(NameUtils.getScopedStreamName(sourceConfig.getConnectorConfig().getScope(),
stream.getStreamName()))
+
.retentionType(ReaderGroupConfig.StreamDataRetention.AUTOMATIC_RELEASE_AT_LAST_CHECKPOINT)
+ .build();
+
readerGroupManager.createReaderGroup(stream.getStreamName(), readerGroupConfig);
+
+ EventStreamReader<byte[]> reader =
clientFactory.createReader(
+ "PravegaSourceConnector-reader",
+ stream.getStreamName(),
+ new ByteArraySerializer(),
+ ReaderConfig.builder().build());
+ this.sourceHandlerMap.put(stream.getStreamName(), new
PravegaSourceHandler(reader));
+ });
+
+ }
+
+ @Override
+ public void start() throws Exception {
+ sourceHandlerMap.forEach((topic, handler) ->
executor.execute(handler));
+ started.compareAndSet(false, true);
+ }
+
+ @Override
+ public void commit(ConnectRecord record) {
+ }
+
+ @Override
+ public String name() {
+ return this.sourceConfig.getConnectorConfig().getConnectorName();
+ }
+
+ @Override
+ public void stop() {
+ sourceHandlerMap.forEach((topic, handler) -> {
+ readerGroupManager.deleteReaderGroup(topic);
+ handler.stop();
+ });
+ sourceHandlerMap.clear();
+ readerGroupManager.close();
+ clientFactory.close();
+ streamManager.close();
+ started.compareAndSet(true, false);
+ }
+
+ @Override
+ public List<ConnectRecord> poll() {
+ List<ConnectRecord> connectRecords = new
ArrayList<>(DEFAULT_BATCH_SIZE);
+ for (int count = 0; count < DEFAULT_BATCH_SIZE; ++count) {
+ try {
+ CloudEvent event = queue.poll(3, TimeUnit.SECONDS);
+ if (event == null) {
+ break;
+ }
+
+ connectRecords.add(CloudEventUtil.convertEventToRecord(event));
+ } catch (InterruptedException e) {
+ break;
+ }
+ }
+ return connectRecords;
+ }
+
+ public class PravegaSourceHandler implements Runnable {
+
+ private final EventStreamReader<byte[]> reader;
+
+ private final AtomicBoolean running = new AtomicBoolean(true);
+
+ public PravegaSourceHandler(EventStreamReader<byte[]> reader) {
+ this.reader = reader;
+ }
+
+ @Override
+ public void run() {
+ while (running.get()) {
+ try {
+ EventRead<byte[]> event = reader.readNextEvent(2000);
+
+ byte[] eventByteArray = event.getEvent();
+ if (eventByteArray == null) {
+ continue;
+ }
+ PravegaEvent pravegaEvent =
PravegaEvent.getFromByteArray(eventByteArray);
+ CloudEvent cloudEvent = pravegaEvent.convertToCloudEvent();
+ queue.add(cloudEvent);
+ } catch (Exception ex) {
+ log.error("[PravegaSourceHandler] thread run happen
exception.", ex);
+ }
+ }
+ }
+
+ public void stop() {
+ running.compareAndSet(true, false);
+ }
+ }
+}
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/resources/server-config.yml
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/resources/server-config.yml
new file mode 100644
index 000000000..5f66dd0f6
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/resources/server-config.yml
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
+sourceEnable: true
+sinkEnable: true
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/resources/sink-config.yml
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/resources/sink-config.yml
new file mode 100644
index 000000000..99bad3386
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/resources/sink-config.yml
@@ -0,0 +1,37 @@
+#
+# 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.
+#
+
+pubSubConfig:
+ meshAddress: 127.0.0.1:10000
+ subject: TopicTest
+ idc: FT
+ env: PRD
+ group: pravegaSink
+ appId: 5031
+ userName: pravegaSinkUser
+ passWord: pravegaPassWord
+connectorConfig:
+ connectorName: pravegaSink
+ controllerURI: tcp://127.0.0.1:9090
+ scope: eventmesh-pravega
+ authEnabled: false
+ username:
+ password:
+ tlsEnabled: false
+ truststore:
+ clientPoolSize: 8
+ queueSize: 512
diff --git
a/eventmesh-connectors/eventmesh-connector-pravega/src/main/resources/source-config.yml
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/resources/source-config.yml
new file mode 100644
index 000000000..fe9fb81dc
--- /dev/null
+++
b/eventmesh-connectors/eventmesh-connector-pravega/src/main/resources/source-config.yml
@@ -0,0 +1,46 @@
+#
+# 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.
+#
+
+pubSubConfig:
+ meshAddress: 127.0.0.1:10000
+ subject: TopicTest
+ idc: FT
+ env: PRD
+ group: pravegaSource
+ appId: 5032
+ userName: pravegaSourceUser
+ passWord: pravegaPassWord
+connectorConfig:
+ connectorName: pravegaSource
+ controllerURI: tcp://127.0.0.1:9090
+ scope: eventmesh-pravega
+ authEnabled: false
+ username:
+ password:
+ tlsEnabled: false
+ truststore:
+ clientPoolSize: 8
+ queueSize: 512
+offsetStorageConfig:
+ offsetStorageType: nacos
+ offsetStorageAddr: 127.0.0.1:8848
+ extensions: {
+ #same with connectorName
+ dataId: pravegaSource,
+ #same with group
+ group: pravegaSource
+ }
diff --git
a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/connector/RabbitMQSourceConnector.java
b/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/connector/RabbitMQSourceConnector.java
index 720003641..24cac9bfa 100644
---
a/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/connector/RabbitMQSourceConnector.java
+++
b/eventmesh-connectors/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/source/connector/RabbitMQSourceConnector.java
@@ -176,13 +176,13 @@ public class RabbitMQSourceConnector implements Source {
}
}
} catch (Exception ex) {
- log.error("[RabbitMQSinkHandler] thread run happen
exception.", ex);
+ log.error("[RabbitMQSourceHandler] thread run happen
exception.", ex);
}
}
}
public void stop() {
- stop.set(true);
+ stop.compareAndSet(false, true);
}
}
}
diff --git a/settings.gradle b/settings.gradle
index 5b7c0ea8c..4df089780 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -23,10 +23,11 @@ include 'eventmesh-common'
include 'eventmesh-starter'
include 'eventmesh-examples'
include 'eventmesh-spi'
+
include 'eventmesh-openconnect:eventmesh-openconnect-java'
include
'eventmesh-openconnect:eventmesh-openconnect-offsetmgmt-plugin:eventmesh-openconnect-offsetmgmt-api'
include
'eventmesh-openconnect:eventmesh-openconnect-offsetmgmt-plugin:eventmesh-openconnect-offsetmgmt-nacos'
-include 'eventmesh-openconnect:eventmesh-openconnect-java'
+
include 'eventmesh-connectors:eventmesh-connector-rocketmq'
include 'eventmesh-connectors:eventmesh-connector-rabbitmq'
include 'eventmesh-connectors:eventmesh-connector-redis'
@@ -34,6 +35,9 @@ include 'eventmesh-connectors:eventmesh-connector-mongodb'
include 'eventmesh-connectors:eventmesh-connector-openfunction'
include 'eventmesh-connectors:eventmesh-connector-pulsar'
include 'eventmesh-connectors:eventmesh-connector-kafka'
+include 'eventmesh-connectors:eventmesh-connector-s3'
+include 'eventmesh-connectors:eventmesh-connector-pravega'
+
include 'eventmesh-storage-plugin:eventmesh-storage-api'
include 'eventmesh-storage-plugin:eventmesh-storage-standalone'
include 'eventmesh-storage-plugin:eventmesh-storage-kafka'
@@ -44,14 +48,22 @@ include 'eventmesh-storage-plugin:eventmesh-storage-pravega'
include 'eventmesh-storage-plugin:eventmesh-storage-redis'
include 'eventmesh-storage-plugin:eventmesh-storage-rocketmq'
include 'eventmesh-storage-plugin:eventmesh-storage-rabbitmq'
+
+include 'eventmesh-security-plugin'
include 'eventmesh-security-plugin:eventmesh-security-api'
include 'eventmesh-security-plugin:eventmesh-security-acl'
+include 'eventmesh-security-plugin:eventmesh-security-auth-http-basic'
+include 'eventmesh-security-plugin:eventmesh-security-auth-token'
+
include 'eventmesh-registry-plugin:eventmesh-registry-api'
include 'eventmesh-registry-plugin:eventmesh-registry-nacos'
include 'eventmesh-registry-plugin:eventmesh-registry-etcd'
include 'eventmesh-registry-plugin:eventmesh-registry-consul'
include 'eventmesh-registry-plugin:eventmesh-registry-zookeeper'
+
include 'eventmesh-admin'
+include 'eventmesh-admin:eventmesh-admin-rocketmq'
+
include 'eventmesh-protocol-plugin'
include 'eventmesh-protocol-plugin:eventmesh-protocol-api'
include 'eventmesh-protocol-plugin:eventmesh-protocol-openmessage'
@@ -59,28 +71,20 @@ include
'eventmesh-protocol-plugin:eventmesh-protocol-cloudevents'
include 'eventmesh-protocol-plugin:eventmesh-protocol-meshmessage'
include 'eventmesh-protocol-plugin:eventmesh-protocol-http'
include 'eventmesh-protocol-plugin:eventmesh-protocol-webhook'
-include 'eventmesh-admin:eventmesh-admin-rocketmq'
include 'eventmesh-protocol-plugin:eventmesh-protocol-grpc'
include 'eventmesh-protocol-plugin:eventmesh-protocol-grpcmessage'
+
include 'eventmesh-metrics-plugin'
include 'eventmesh-metrics-plugin:eventmesh-metrics-api'
include 'eventmesh-metrics-plugin:eventmesh-metrics-prometheus'
-include 'eventmesh-security-plugin:eventmesh-security-auth-http-basic'
-include 'eventmesh-security-plugin:eventmesh-security-auth-token'
-
include 'eventmesh-trace-plugin'
include 'eventmesh-trace-plugin:eventmesh-trace-api'
include 'eventmesh-trace-plugin:eventmesh-trace-zipkin'
include 'eventmesh-trace-plugin:eventmesh-trace-pinpoint'
include 'eventmesh-trace-plugin:eventmesh-trace-jaeger'
-
include 'eventmesh-webhook'
include 'eventmesh-webhook:eventmesh-webhook-api'
include 'eventmesh-webhook:eventmesh-webhook-admin'
include 'eventmesh-webhook:eventmesh-webhook-receive'
-include 'eventmesh-security-plugin'
-include 'eventmesh-security-plugin:eventmesh-security-api'
-include 'eventmesh-security-plugin:eventmesh-security-auth-token'
-include 'eventmesh-connectors:eventmesh-connector-s3'
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]