diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a0e1a0b4aa..38cfc331f5 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: "16" + node-version: "18" - name: Install Dependencies run: | diff --git a/docs/design-document/02-observability/04-zipkin.md b/docs/design-document/02-observability/04-zipkin.md index f4d07252d7..07b130c6c7 100644 --- a/docs/design-document/02-observability/04-zipkin.md +++ b/docs/design-document/02-observability/04-zipkin.md @@ -10,7 +10,7 @@ Distributed tracing is a method used to profile and monitor applications built w To enable the trace exporter of EventMesh Runtime, set the `eventMesh.server.trace.enabled` field in the `conf/eventmesh.properties` file to `true`. -```conf +```properties # Trace plugin eventMesh.server.trace.enabled=true eventMesh.trace.plugin=zipkin @@ -18,7 +18,7 @@ eventMesh.trace.plugin=zipkin To customize the behavior of the trace exporter such as timeout or export interval, edit the `exporter.properties` file. -```conf +```properties # Set the maximum batch size to use eventmesh.trace.max.export.size=512 # Set the queue size. This must be >= the export batch size @@ -31,7 +31,7 @@ eventmesh.trace.export.interval=5 To send the exported trace data to Zipkin, edit the `eventmesh.trace.zipkin.ip` and `eventmesh.trace.zipkin.port` fields in the `conf/zipkin.properties` file to match the configuration of the Zipkin server. -```conf +```properties # Zipkin's IP and Port eventmesh.trace.zipkin.ip=localhost eventmesh.trace.zipkin.port=9411 diff --git a/docs/design-document/02-observability/05-jaeger.md b/docs/design-document/02-observability/05-jaeger.md index e9452c3554..74066310cf 100644 --- a/docs/design-document/02-observability/05-jaeger.md +++ b/docs/design-document/02-observability/05-jaeger.md @@ -10,7 +10,7 @@ For the installation of Jaeger, you can refer to the [official documentation](ht To enable the trace exporter of EventMesh Runtime, set the `eventMesh.server.trace.enabled` field in the `conf/eventmesh.properties` file to `true`. -```conf +```properties # Trace plugin eventMesh.server.trace.enabled=true eventMesh.trace.plugin=jaeger @@ -18,7 +18,7 @@ eventMesh.trace.plugin=jaeger To customize the behavior of the trace exporter such as timeout or export interval, edit the `exporter.properties` file. -```conf +```properties # Set the maximum batch size to use eventmesh.trace.max.export.size=512 # Set the queue size. This must be >= the export batch size @@ -31,7 +31,7 @@ eventmesh.trace.export.interval=5 To send the exported trace data to Jaeger, edit the `eventmesh.trace.jaeger.ip` and `eventmesh.trace.jaeger.port` fields in the `conf/jaeger.properties` file to match the configuration of the Jaeger server. -```conf +```properties # Jaeger's IP and Port eventmesh.trace.jaeger.ip=localhost eventmesh.trace.jaeger.port=14250 diff --git a/docs/design-document/03-connect/00-connectors.md b/docs/design-document/03-connect/00-connectors.md index fe0bedfc1f..d89b04a716 100644 --- a/docs/design-document/03-connect/00-connectors.md +++ b/docs/design-document/03-connect/00-connectors.md @@ -4,6 +4,8 @@ A connector is an image or instance that interacts with a specific external service or underlying data source (e.g., Databases) on behalf of user applications. A connector is either a Source or a Sink. +Connector runs as a standalone service by `main()`. + ## Source A source connector obtains data from an underlying data producer, and delivers it to targets after original data has been transformed into CloudEvents. It doesn't limit the way how a source retrieves data. (e.g., A source may pull data from a message queue or act as an HTTP server waiting for data sent to it). @@ -23,16 +25,18 @@ Add a new connector by implementing the source/sink interface using [eventmesh-o ## Technical Solution ### Structure and process + ![source-sink connector architecture](../../../static/images/design-document/connector-architecture.png) ### Design Detail + ![eventmesh-connect-detail](../../../static/images/design-document/connector-design-detail.png) -### Describe +### Description #### Worker -Worker is divided into Source Worker and Sink Worker, which are triggered by the `Application` class and implement the methods of the `ConnectorWorker` interface respectively, which include the worker's running life cycle, and the worker carries the running of the connector. Workers can be lightweight and independent through mirroring Running, the eventmesh-sdk-java module is integrated internally, and the cloudevents protocol is used to interact with eventmesh. Currently, the tcp client is used by default. In the future, support for dynamic configuration can be considered +Worker is divided into Source Worker and Sink Worker, which are triggered by the `Application` class and implement the methods of the `ConnectorWorker` interface respectively, which include the worker's running life cycle, and the worker carries the running of the connector. Workers can be lightweight and independent through mirroring Running, the eventmesh-sdk-java module is integrated internally, and the CloudEvents protocol is used to interact with EventMesh. Currently, the TCP client is used by default. In the future, support for dynamic configuration can be considered. #### Connector @@ -40,38 +44,8 @@ Connectors are divided into Source Connector and Sink Connector. Connectors have #### ConnectorRecord with CloudEvents -`ConnectorRecord` is a connector layer data protocol. When workers interact with eventmesh, a protocol adapter needs to be developed to convert `ConnectorRecord` to CloudEvents protocol. +`ConnectorRecord` is a connector layer data protocol. When workers interact with EventMesh, a protocol adapter needs to be developed to convert `ConnectorRecord` to CloudEvents protocol. #### Registry The Registry module is responsible for storing the synchronization progress of synchronizing data of different Connector instances, ensuring high availability between multiple Connector images or instances. - -## Connector Status - -| Connector Name | Source | Sink | -|:------------------------------------------------:|:-----------:|:-------:| -| [RocketMQ](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-rocketmq) | ✅ | ✅ | -| ChatGPT | ⬜ | ⬜ | -| ClickHouse | ⬜ | ⬜ | -| [DingTalk](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-dingtalk) | ⬜ | ✅ | -| Email | ⬜ | ⬜ | -| [Feishu/Lark](./lark-connector) | ⬜ | ✅ | -| [File](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-file) | ✅ | ✅ | -| GitHub | ⬜ | ⬜ | -| [HTTP](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-http) | ✅ | ⬜ | -| [Jdbc](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-jdbc) | ⬜ | ✅ | -| [Kafka](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-kafka) | ✅ | ✅ | -| [Knative](./knative-connector) | ✅ | ✅ | -| [MongoDB](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-mongodb) | ✅ | ✅ | -| [OpenFunction](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-openfunction) | ✅ | ✅ | -| [Pravega](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pravega) | ✅ | ✅ | -| [Prometheus](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-prometheus) | ✅ | ⬜ | -| [Pulsar](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pulsar) | ✅ | ✅ | -| [RabbitMQ](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-rabbitmq) | ✅ | ✅ | -| [Redis](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-redis) | ✅ | ✅ | -| [S3 File](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-s3) | ⬜ | ✅ | -| [Slack](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-slack) | ⬜ | ✅ | -| [Spring](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-spring) | ✅ | ✅ | -| [WeCom](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-wecom) | ⬜ | ✅ | -| [WeChat](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-wechat) | ⬜ | ✅ | -| More connectors will be added... | N/A | N/A | diff --git a/docs/design-document/03-connect/03-rabbitmq-connector.md b/docs/design-document/03-connect/01-rabbitmq-connector.md similarity index 51% rename from docs/design-document/03-connect/03-rabbitmq-connector.md rename to docs/design-document/03-connect/01-rabbitmq-connector.md index 4705e6897a..09d6643b37 100644 --- a/docs/design-document/03-connect/03-rabbitmq-connector.md +++ b/docs/design-document/03-connect/01-rabbitmq-connector.md @@ -1,13 +1,15 @@ # RabbitMQ -## RabbitMQSinkConnector: from eventmesh to rabbitmq. +## RabbitMQSinkConnector: From EventMesh to RabbitMQ -1. launch your rabbitmq server and eventmesh-runtime. +1. launch your RabbitMQ server and EventMesh Runtime. 2. enable sinkConnector and check `sink-config.yml`. -3. send a message to eventmesh with the topic defined in `pubSubConfig.subject` +3. start your `RabbitMQConnectorServer`, it will subscribe to the topic defined in `pubSubConfig.subject` of EventMesh Runtime and send data to `connectorConfig.queueName` in your RabbitMQ. +4. send a message to EventMesh with the topic defined in `pubSubConfig.subject` and then you will receive the message in RabbitMQ. + ```yaml pubSubConfig: - # default port is 10000 + # default port 10000 meshAddress: your.eventmesh.server:10000 subject: TopicTest idc: FT @@ -32,8 +34,9 @@ connectorConfig: autoAck: true ``` -## RabbitMQSourceConnector: from rabbitmq to eventmesh. -1. launch your rabbitmq server and eventmesh-runtime. +## RabbitMQSourceConnector: From RabbitMQ to EventMesh + +1. launch your RabbitMQ server and EventMesh Runtime. 2. enable sourceConnector and check `source-config.yml` (Basically the same as `sink-config.yml`) -3. start your `RabbitMQConnectorServer` and you will find the channel in rabbitmq server. -4. send a cloudevent message to the queue and then you will receive the message in eventmesh. \ No newline at end of file +3. start your `RabbitMQConnectorServer`, it will subscribe to the queue defined in `connectorConfig.queueName` in your RabbitMQ and send data to `pubSubConfig.subject` of EventMesh Runtime. +4. send a CloudEvent message to the queue and then you will receive the message in EventMesh. \ No newline at end of file diff --git a/docs/design-document/03-connect/04-http-connector.md b/docs/design-document/03-connect/02-http-connector.md similarity index 100% rename from docs/design-document/03-connect/04-http-connector.md rename to docs/design-document/03-connect/02-http-connector.md diff --git a/docs/design-document/03-connect/03-redis-connector.md b/docs/design-document/03-connect/03-redis-connector.md new file mode 100644 index 0000000000..10aab6d33e --- /dev/null +++ b/docs/design-document/03-connect/03-redis-connector.md @@ -0,0 +1,33 @@ +# Redis + +## RedisSinkConnector: From EventMesh to Redis topic queue + +1. start your Redis instance if needed and EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. start your `RedisConnectServer`, it will subscribe to the topic defined in `pubSubConfig.subject` of EventMesh Runtime and send data to `connectorConfig.topic` in your Redis. +4. send a message to EventMesh with the topic defined in `pubSubConfig.subject` and then you will receive the message in Redis. + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: redisSink + appId: 5031 + userName: redisSinkUser + passWord: redisPassWord +connectorConfig: + connectorName: redisSink + server: redis://127.0.0.1:6379 + # the topic in redis + topic: SinkTopic +``` + +## RedisSourceConnector: From Redis topic queue to EventMesh + +1. start your Redis instance if needed and EventMesh Runtime. +2. enable sourceConnector and check `source-config.yml` (Basically the same as `sink-config.yml`) +3. start your `RedisConnectServer`, it will subscribe to the topic defined in `connectorConfig.topic` in your Redis and send data to `pubSubConfig.subject` of EventMesh Runtime. +4. send a CloudEvent message to the topic in Redis, and you will receive the message in EventMesh. \ No newline at end of file diff --git a/docs/design-document/03-connect/04-mongodb-connector.md b/docs/design-document/03-connect/04-mongodb-connector.md new file mode 100644 index 0000000000..4c4f8ac95c --- /dev/null +++ b/docs/design-document/03-connect/04-mongodb-connector.md @@ -0,0 +1,36 @@ +# MongoDB + +## MongoDBSinkConnector: From EventMesh to MongoDB + +1. launch your MongoDB server and EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. start your MongoDBConnectorServer, it will subscribe to the topic defined in `pubSubConfig.subject` of EventMesh Runtime and send data to `connectorConfig.collection` in your MongoDB. +4. send a message to EventMesh with the topic defined in `pubSubConfig.subject` and then you will receive the message in MongoDB. + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: mongodbSink + appId: 5031 + userName: mongodbSinkUser + passWord: mongodbPassWord +connectorConfig: + connectorName: mongodbSink + # REPLICA_SET or STANDALONE is supported + connectorType: STANDALONE + # mongodb://root:root@127.0.0.1:27018,127.0.0.1:27019 + url: mongodb://127.0.0.1:27018 + database: yourDB + collection: yourCol +``` + +## MongoDBSourceConnector: From MongoDB to EventMesh + +1. launch your MongoDB server and EventMesh Runtime. +2. enable sourceConnector and check `source-config.yml` (Basically the same as `sink-config.yml`) +3. start your `MongoDBSourceConnector`, it will subscribe to the collection defined in `connectorConfig.collection` in your MongoDB and send data to `pubSubConfig.subject` of EventMesh Runtime. +4. write a CloudEvent message to `yourCol` at `yourDB` in your MongoDB and then you will receive the message in EventMesh. \ No newline at end of file diff --git a/docs/design-document/03-connect/02-knative-connector.md b/docs/design-document/03-connect/05-knative-connector.md similarity index 100% rename from docs/design-document/03-connect/02-knative-connector.md rename to docs/design-document/03-connect/05-knative-connector.md diff --git a/docs/design-document/03-connect/01-lark-connector.md b/docs/design-document/03-connect/06-lark-connector.md similarity index 100% rename from docs/design-document/03-connect/01-lark-connector.md rename to docs/design-document/03-connect/06-lark-connector.md diff --git a/docs/design-document/03-connect/07-dingtalk-connector.md b/docs/design-document/03-connect/07-dingtalk-connector.md new file mode 100644 index 0000000000..4e3b729a11 --- /dev/null +++ b/docs/design-document/03-connect/07-dingtalk-connector.md @@ -0,0 +1,34 @@ +# DingTalk + +## DingtalkSinkConnector: From EventMesh to DingTalk + +1. launch your EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. send a message to EventMesh with the topic defined in `pubSubConfig.subject` + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-DINGTALK + idc: FT + env: PRD + group: dingTalkSink + appId: 5034 + userName: dingTalkSinkUser + passWord: dingTalkPassWord +sinkConnectorConfig: + connectorName: dingTalkSink + # Please refer to: https://open.dingtalk.com/document/orgapp/the-robot-sends-a-group-message + appKey: dingTalkAppKey + appSecret: dingTalkAppSecret + openConversationId: dingTalkOpenConversationId + robotCode: dingTalkRobotCode +``` + +### CloudEvent Attributes + +When using the eventmesh-connector-dingtalk sinking event, you need to add the corresponding extension filed in CloudEvent: + +- When key=`dingtalktemplatetype`, value=`text`/`markdown`, indicating the text type of the event. +- When text type is markdown, you can add extension: key=`dingtalkmarkdownmessagetitle`, value indicates the title of the event. \ No newline at end of file diff --git a/docs/design-document/03-connect/08-wecom-connector.md b/docs/design-document/03-connect/08-wecom-connector.md new file mode 100644 index 0000000000..62e834ef0d --- /dev/null +++ b/docs/design-document/03-connect/08-wecom-connector.md @@ -0,0 +1,30 @@ +# WeCom + +## WecomSinkConnector: From EventMesh to WeCom + +1. launch your EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. send a message to EventMesh with the topic defined in `pubSubConfig.subject` + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-WECOM + idc: FT + env: PRD + group: weComSink + appId: 5034 + userName: weComSinkUser + passWord: weComPassWord +sinkConnectorConfig: + connectorName: weComSink + # Please refer to: https://developer.work.weixin.qq.com/document/path/90236 + robotWebhookKey: weComRobotWebhookKey +``` + +### CloudEvent Attributes + +When using the eventmesh-connector-wecom sinking event, you need to add the corresponding extension filed in CloudEvent: + +- When key=`wecomtemplatetype`, value=`text`/`markdown`, indicating the text type of the event. \ No newline at end of file diff --git a/docs/design-document/03-connect/09-slack-connector.md b/docs/design-document/03-connect/09-slack-connector.md new file mode 100644 index 0000000000..cee677985b --- /dev/null +++ b/docs/design-document/03-connect/09-slack-connector.md @@ -0,0 +1,25 @@ +# Slack + +## SlackSinkConnector: From EventMesh to Slack + +1. launch your EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. send a message to EventMesh with the topic defined in `pubSubConfig.subject` + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-SLACK + idc: FT + env: PRD + group: slackSink + appId: 5034 + userName: slackSinkUser + passWord: slackPassWord +sinkConnectorConfig: + connectorName: slackSink + # Please refer to: https://api.slack.com/messaging/sending + appToken: slackAppToken + channelId: slackChannelId +``` \ No newline at end of file diff --git a/docs/instruction/00-eclipse.md b/docs/instruction/00-eclipse.md deleted file mode 100644 index 7ef27d5358..0000000000 --- a/docs/instruction/00-eclipse.md +++ /dev/null @@ -1,42 +0,0 @@ -# Import EventMesh into eclipse - -We recommend using `Intellij IDEA` for development, if you wish to use `Eclipse`, you can refer to the following steps to import the project. - -### 1. Dependencies - -``` -64-bit JDK 1.8+. -Gradle is at least 7.0, 7.0.* recommended; -eclipse installed gradle plugin or eclipse comes with gradle plugin; -``` - -### 2. Download source code - -```shell -git@github.com:apache/eventmesh.git -``` - -### 3. Project compile eclipse environment - -Open a command line terminal and run `gradlew cleanEclipse eclipse` - -### 4. Configuration changes - -Modify the project name to match the `settings.gradle` configuration file parameter `rootProject.name`. - -### 5. Modify `eclipse.init` configuration file, configure lombok to 1.18.8 version for example - -``` --javaagent:lombok-1.18.8.jar --XBootclasspath/a:lombok-1.18.8.jar -``` - -### 6. 202106 version, `eclipse.init` add configuration parameters - -``` ---illegal-access=permit -``` - -### 7. Import projetc - -Open eclipse, import gradle project to IDE. \ No newline at end of file diff --git a/docs/instruction/01-store.md b/docs/instruction/01-store.md index 010d151e7e..ab06d8c613 100644 --- a/docs/instruction/01-store.md +++ b/docs/instruction/01-store.md @@ -1,33 +1,33 @@ # Event Store -## 1 Dependencies +## 1. Prerequisites - 64-bit OS, we recommend Linux/Unix. -- 64-bit JDK 1.8 or JDK 11 - -- Gradle 7.0+, The recommended version can be found in the `gradle/wrapper/gradle-wrapper.properties` file. +- 64-bit JDK 8 or JDK 11 - 4GB+ available disk to deploy Event Store -If you choose standalone mode, you could skip this file and go to the next step: Start EventMesh Runtime; if not, you could choose RocketMQ as the store layer. +This document provides an example of deploying it with RocketMQ as Event Store, but you can also choose another [Event Store supported by EventMesh](../roadmap.md#event-store-implementation-status). If you choose default standalone mode, you could skip this file and go to the next step: Deploy EventMesh Runtime; if not, you could choose RocketMQ as the store layer. + +In a production environment, you should use an Event Store other than standalone to support greater throughput and higher availability. -## 2 Download +## 2. Download Download the Binary code (recommended: 4.9.*) from [RocketMQ Official](https://rocketmq.apache.org/download/). Here we take 4.9.4 as an example. -``` +```shell unzip rocketmq-all-4.9.4-bin-release.zip cd rocketmq-4.9.4/ ``` ![rocketmq_1](/images/install/rocketmq_1.png) -## 3 Start +## 3. Start Start Name Server: -```console +```shell nohup sh bin/mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log ``` @@ -36,7 +36,7 @@ tail -f ~/logs/rocketmqlogs/namesrv.log Start Broker: -```console +```shell nohup sh bin/mqbroker -n localhost:9876 & tail -f ~/logs/rocketmqlogs/broker.log ``` @@ -45,4 +45,4 @@ The deployment of Event Store has finished, please go to the next step: [Start E ## Reference -For more details about RocketMQ, please refer to \ No newline at end of file +For more details about RocketMQ, please refer to https://rocketmq.apache.org/docs/quick-start/. \ No newline at end of file diff --git a/docs/instruction/02-store-with-docker.md b/docs/instruction/02-store-with-docker.md index 707cd7cd82..ebcee611bb 100644 --- a/docs/instruction/02-store-with-docker.md +++ b/docs/instruction/02-store-with-docker.md @@ -1,16 +1,13 @@ # Event Store with Docker -## 1. Dependencies +## 1. Prerequisites - 64-bit OS, we recommend Linux/Unix. - -- 64-bit JDK 1.8 or JDK 11 - -- Gradle 7.0+, The recommended version can be found in the `gradle/wrapper/gradle-wrapper.properties` file. - - 4GB+ available disk to deploy Event Store -If you choose standalone mode, you could skip this file and go to the next step: Start EventMesh Runtime; if not, you could choose RocketMQ as the store layer. +This document provides an example of deploying it with RocketMQ as Event Store, but you can also choose another [Event Store supported by EventMesh](../roadmap.md#event-store-implementation-status). If you choose default standalone mode, you could skip this file and go to the next step: Deploy EventMesh Runtime; if not, you could choose RocketMQ as the store layer. + +In a production environment, you should use an Event Store other than standalone to support greater throughput and higher availability. ## 2. Deploy @@ -69,6 +66,6 @@ sudo docker run -d -p 10911:10911 -p 10909:10909 \ ![rocketmq_docker_2](/images/install/rocketmq_docker_2.png) -Please note that the **rocketmq-broker ip** is **pod ip**. If you want to modify this ip, you can set it your custom value in **broker.conf**。 +Please note that the `rocketmq-broker ip` is `pod ip`. If you want to modify this ip, you can set it your custom value in `broker.conf`。 By now, the deployment of Event Store has finished, please go to the next step: [Start EventMesh Runtime Using Docker](./04-runtime-with-docker.md) diff --git a/docs/instruction/03-runtime.md b/docs/instruction/03-runtime.md index f74b8a7d5a..d54961b0f9 100644 --- a/docs/instruction/03-runtime.md +++ b/docs/instruction/03-runtime.md @@ -1,215 +1,271 @@ # EventMesh Runtime Quick Start -The EventMesh Runtime is a stateful mesh node in an EventMesh cluster that is responsible for event transfer between the Source Connector and the Sink Connector, and can use Event Store as a storage queue for events. +EventMesh Runtime is a stateful Mesh node in the EventMesh cluster, responsible for event transmission between Source Connectors and Sink Connectors. It uses Event Store as a storage queue for events. -![EventMesh Runtime](/images/design-document/runtime.png) +![EventMesh Runtime](../../static/images/design-document/runtime.png) -## 1 Run on your local machine +## 1. Binary Distribution Deployment -### 1.1 Run from source code +### 1.1 Environment -#### 1.1.1 Dependencies +- Recommended to use 64-bit Linux/Unix systems +- 64-bit JDK 8 or JDK 11 -- 64-bit OS, we recommend Linux/Unix. +### 1.2 Download -- 64-bit JDK 1.8 or JDK 11 +Download the latest version of the Binary Distribution from the [EventMesh Download](https://eventmesh.apache.org/download) page and extract it: -- Gradle 7.0+, The recommended version can be found in the `gradle/wrapper/gradle-wrapper.properties` file. +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-bin.tar.gz +tar -xvzf apache-eventmesh-1.10.0-bin.tar.gz +cd apache-eventmesh-1.10.0 +``` -#### 1.1.2 Download source code +### 1.3 Configuration -Download and extract the source code of the latest release from [EventMesh download](https://eventmesh.apache.org/download). For example, with the current latest version, you will get `apache-eventmesh-1.9.0-source.tar.gz`. +This document provides an example of deploying it with RocketMQ as Event Store, but you can also choose another [Event Store supported by EventMesh](../roadmap.md#event-store-implementation-status). If you choose a non-standalone mode, ensure that [RocketMQ is successfully started](https://rocketmq.apache.org/docs/quick-start/) and accessible via IP address. If you stick to the default standalone mode, RocketMQ doesn't need to be started. -#### 1.1.3 Run form local +#### 1.3.1 EventMesh Runtime Configuration -**1.1.3.1 Description of the project structure:** +This configuration file includes settings for the EventMesh Runtime environment and integrated plugins. -- eventmesh-common : EventMesh public classes and methods module -- eventmesh-connector-api : EventMesh Connector plugin interface definition module -- eventmesh-connector-plugin : EventMesh Connector plugin module -- eventmesh-runtime : EventMesh Runtime module -- eventmesh-sdk-java : EventMesh Java client SDK -- eventmesh-starter : EventMesh Runtime local startup and project portal -- eventmesh-spi : EventMesh SPI loader module +```shell +vim conf/eventmesh.properties +``` -> Note: Plugin modules follow the SPI specification defined by eventmesh, custom SPI interfaces need to be marked with the annotation `@EventMeshSPI`. -> -> Plugin instances need to be configured in the corresponding module under `/main/resources/META-INF/eventmesh` with a mapping file of the relevant interfaces to their implementation classes, with the name of the file being the full class name of the SPI interface. -> -> The content of the file is the mapping from the plugin instance name to the plugin instance, see eventmesh-connector-rocketmq plugin module for details. +Specify RocketMQ as Event Store: -**1.1.3.2 Plugin Description** +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq +``` -***1.1.3.2.1 Installing the plugin*** +Check if the default ports in the configuration file are occupied. If occupied, modify them to unused ports: -There are two ways to install the plugin +| Property | Default | Remarks | +| ---------------------------------- | ------- | ------------------- | +| eventMesh.server.tcp.port | 10000 | TCP listening port | +| eventMesh.server.http.port | 10105 | HTTP listening port | +| eventMesh.server.grpc.port | 10205 | gRPC listening port | +| eventMesh.server.admin.http.port | 10106 | HTTP management port | -- classpath loading: Local developers can install the plugin by declaring it in the eventmesh-starter module build.gradle, e.g., declare that it uses the rocketmq plugin +#### 1.3.2 Event Store Configuration -```gradle - implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") -``` +In the case of RocketMQ, the configuration file includes parameters required to connect to the RocketMQ namesrv. -- File loading: By installing the plugin to the plugin directory, EventMesh will automatically load the plugins in the plugin directory according to the conditions at runtime, you can install the plugin by executing the following command +Edit `rocketmq-client.properties`: ```shell -. /gradlew clean jar dist && . /gradlew installPlugin +vim conf/rocketmq-client.properties ``` -***1.1.3.2.2 Using Plugins *** +If the namesrv address you are running is different from the default value in the configuration file, modify it to the actual running namesrv address. -EventMesh will load plugins in the `dist/plugin` directory by default, you can change the plugin directory with `-DeventMeshPluginDir=your_plugin_directory`. Examples of plugins to be used at runtime can be found in the -`confPath` directory under `eventmesh.properties`. For example declare the use of the rocketmq plugin at runtime with the following settings. +| Property | Default | Remarks | +| ----------------------------------------- | ------------------------------ | ----------------------------------- | +| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv address | -```properties -#connector plugin -eventMesh.connector.plugin.type=rocketmq -``` +### 1.4 Start -**1.1.3.3 Configuring the VM startup parameters** +Execute the `start.sh` script to start EventMesh Runtime: -```properties --Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml --Deventmesh.log.home=eventmesh-runtime/logs --Deventmesh.home=eventmesh-runtime --DconfPath=eventmesh-runtime/conf +```shell +bash bin/start.sh ``` -> Note: If your operating system is Windows, you may need to replace the file separator with '\'. - -**1.1.3.4 Getting up and running** +If the script only prints the following three lines without any other error messages, it means the script has executed successfully: +```shell +EventMesh using Java version: 8, path: /usr/local/openjdk-8/bin/java +EVENTMESH_HOME : /data/app/eventmesh +EVENTMESH_LOG_HOME : /data/app/eventmesh/logs ``` -Run org.apache.eventmesh.starter. + +Next, view the logs output by EventMesh to check its runtime status: + +```shell +tail -n 50 -f logs/eventmesh.out ``` -### 1.2 Run form local binary +When the log output shows `server state:RUNNING`, it means EventMesh Runtime has started successfully. -#### 1.1.1 Dependencies +Stop EventMesh Runtime: -- 64-bit OS, we recommend Linux/Unix. +```shell +bash bin/stop.sh +``` -- 64-bit JDK 1.8 or JDK 11 +When the script prints `shutdown server ok!`, it means EventMesh Runtime has stopped. -- Gradle 7.0+, The current recommended version can be found in the `gradle/wrapper/gradle-wrapper.properties` file. +## 2. Build Binary Distribution -Gradle is the build automation tool used by Apache EventMesh. Please refer to the [offical guide](https://docs.gradle.org/current/userguide/installation.html) to install the latest release of Gradle. +### 2.1 Environment -### 1.1.2 Download Source Code +- Recommended to use 64-bit Linux/Unix systems +- 64-bit JDK 8 or JDK 11 +- [Gradle](https://docs.gradle.org/current/userguide/installation.html) 7.0+ (optional), the build commands provided in this document use the Gradle Wrapper, and you don't need to configure the Gradle environment yourself. You can also check the recommended Gradle version for your EventMesh version in the `gradle/wrapper/gradle-wrapper.properties` file and use your local Gradle version for compilation. + +### 2.2 Download -Download and extract the source code of the latest release from [EventMesh download](https://eventmesh.apache.org/download). For example, with the current latest version, you will get `apache-eventmesh-1.9.0-source.tar.gz`. +Download the Source Code from [EventMesh Download](https://eventmesh.apache.org/download) and extract it: -```console -tar -xvzf apache-eventmesh-1.9.0-source.tar.gz -cd apache-eventmesh-1.9.0-src/ +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-source.tar.gz +tar -xvzf apache-eventmesh-1.10.0-source.tar.gz +cd apache-eventmesh-1.10.0-src/ ``` -Build the source code with Gradle. +You can also choose to clone the code from GitHub: -```console -gradle clean dist +```shell +git clone https://github.com/apache/eventmesh.git +cd eventmesh/ ``` -![runtime_2](/images/install/runtime_2.png) +### 2.3 Build -Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. +EventMesh is developed based on JDK8, and the binary distribution is also built based on JDK8. It is recommended to run EventMesh Runtime in a JDK8 environment. -```console -cd dist -vim conf/eventmesh.properties -``` +#### Run in a JDK8 Environment -### 1.1.3 Build and Load Plugins +Some source code needs to be generated under JDK11: -Apache EventMesh introduces the SPI (Service Provider Interface) mechanism, which enables EventMesh to discover and load the plugins at runtime. The plugins could be installed with these methods: +```shell +./gradlew clean generateGrammarSource --parallel --daemon +``` -- Gradle Dependencies: Declare the plugins as the build dependencies in `eventmesh-starter/build.gradle`. +The `generateGrammarSource` task will generate the source code required for `ANTLR` under the `org.apache.eventmesh.connector.jdbc.antlr4.autogeneration` package. -```gradle -dependencies { - implementation project(":eventmesh-runtime") +Next, build EventMesh Runtime under JDK8: - // Example: Load the RocketMQ plugin - implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") -} +```shell +./gradlew clean dist -x spotlessJava -x generateGrammarSource --parallel --daemon ``` -- Plugin directory: EventMesh loads the plugins in the `dist/plugin` directory based on `eventmesh.properties`. The `installPlugin` task of Gradle builds and moves the plugins into the `dist/plugin` directory. +After the build is complete, proceed to [2.4 Package Plugins](#24-package-plugins). -```console -gradle installPlugin -``` +> You can switch between JDK versions using `update-alternatives` or `JAVA_HOME` and check the current JDK version with `java -version`. -### 1.1.4 启动 Runtime +#### Run in a JDK11 Environment -Execute the `start.sh` script to start the EventMesh Runtime server. +If you want to use JDK11 as the runtime environment for EventMesh, execute: -```console -bash bin/start.sh +```shell +./gradlew clean dist --parallel --daemon ``` -![runtime_4](/images/install/runtime_4.png) +After the build is complete, proceed to [2.4 Package Plugins](#24-package-plugins). -View the output log: +### 2.4 Package Plugins -```console -tail -f logs/eventmesh.out +The `installPlugin` task will copy the built plugins to the `dist` directory: + +```shell +./gradlew installPlugin ``` -![runtime_3](/images/install/runtime_3.png) +EventMesh will load the plugins from the `plugin` directory based on the configuration in `eventmesh.properties`. -## 2 Remote deployment +After a successful build, the `dist` directory in the project root contains the binary files for EventMesh. For configuration and startup, refer to [Binary Distribution Deployment](#1-binary-distribution-deployment). -### 2.1 Dependencies +## 3. Start from Source Code -- 64-bit OS, we recommend Linux/Unix. +### 3.1 Dependencies -- 64-bit JDK 1.8 or JDK 11 +- Recommended to use 64-bit Linux/Unix systems +- 64-bit JDK 8 or JDK 11 +- [Gradle](https://docs.gradle.org/current/userguide/installation.html) 7.0+ (optional), the build commands provided in this document use the Gradle Wrapper, and you don't need to configure the Gradle environment yourself. You can also check the recommended Gradle version for your EventMesh version in the `gradle/wrapper/gradle-wrapper.properties` file and use your local Gradle version for compilation. +- It is recommended to use an IDE (Integrated Development Environment) to import EventMesh. `Intellij IDEA` is recommended as the IDE. -- Gradle 7.0+, The current recommended version can be found in the `gradle/wrapper/gradle-wrapper.properties` file. +### 3.2 Download -### 2.2 Download +Clone the code from GitHub: -Download and extract the executable binaries of the latest release from [EventMesh download](https://eventmesh.apache.org/download).For example, with the current latest version, you will get `apache-eventmesh-1.9.0.tar.gz`. +```shell +git clone https://github.com/apache/eventmesh.git +cd eventmesh/ +``` -```console -tar -xvzf apache-eventmesh-1.9.0-bin.tar.gz -cd apache-eventmesh-1.9.0 +You can also download the Source Code release from [EventMesh Download](https://eventmesh.apache.org/download) and extract it: + +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-source.tar.gz +tar -xvzf apache-eventmesh-1.10.0-source.tar.gz +cd apache-eventmesh-1.10.0-src/ ``` -### 2.3 Deploy +### 3.3 Project Structure Explanation -Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. The executable binaries contain all plugins in the bundle, thus there's no need to build them from source code. +| Main Module | Description | +| ------------------------ | ------------------------------------------------------------ | +| eventmesh-starter | Entry point for running EventMesh locally | +| eventmesh-runtime | EventMesh Runtime, the runtime module | +| eventmesh-connectors | [Connectors](../design-document/03-connect/00-connectors.md) for connecting event sources and sinks, supporting [various services and platforms](../roadmap.md#connector-implementation-status) | +| eventmesh-storage-plugin | [Event Store](../roadmap.md#event-store-implementation-status) plugin for EventMesh Runtime | +| eventmesh-sdks | Multi-language client SDKs for EventMesh, including Java, Go, C and Rust | +| eventmesh-examples | Examples of SDK usage | +| eventmesh-spi | Module for loading EventMesh SPI | +| eventmesh-common | Module for common classes and methods | -```console -vim conf/eventmesh.properties -``` +> Plugin modules follow the SPI specification defined by EventMesh, and custom SPI interfaces need to be annotated with `@EventMeshSPI`. +> +> Plugin instances need to be configured in the corresponding module under the `/main/resources/META-INF/eventmesh` directory with a mapping file for interface and implementation classes. The file name is the fully qualified class name of the SPI interface. +> +> The content of the file is the mapping from the plugin instance name to the plugin instance. For details, refer to the `eventmesh-storage-rocketmq` plugin module. -Execute the `start.sh` script to start the EventMesh Runtime server. +### 3.4 Plugin Explanation -```console -bash bin/start.sh +#### 3.4.1 Install Plugins + +EventMesh has an SPI mechanism that allows EventMesh to discover and load plugins. There are two ways to install plugins: + +- Classpath loading: During local development, you can add dependencies in the `build.gradle` of the `eventmesh-starter` module. For example, to add the Kafka Storage Plugin: + +```gradle +dependencies { + implementation project(":eventmesh-runtime") + // Example: Add the Kafka Storage Plugin + implementation project(":eventmesh-storage-plugin:eventmesh-storage-kafka") +} ``` -If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. +- File loading: By installing the plugin to the plugin directory, EventMesh will automatically load the plugins in the plugin directory based on certain conditions during runtime. Please refer to [2.3 Build](#23-build) and [2.4 Package Plugins](#24-package-plugins). -![runtime_6](/images/install/runtime_6.png) +>When you make changes to the source code, it is recommended to add the `build` task to the command provided in [2.3 Build](#23-build) to recompile and run unit tests. For example: +> +>```shell +>./gradlew clean build dist -x spotlessJava -x generateGrammarSource --parallel --daemon +>``` -View the output log: +#### 3.4.2 Use Plugins -```console -cd /root/apache-eventmesh-1.9.0/logs -tail -f eventmesh.out -``` +EventMesh will load the plugins by default from the `dist/plugin` directory. You can change the plugin directory using `-DeventMeshPluginDir=your_plugin_directory`. The plugin instances needed at runtime can be configured in the `confPath` directory in the `eventmesh.properties` file. For example, by setting the following, you declare the use of the RocketMQ as Event Store: -![runtime_7](/images/install/runtime_7.png) +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq +``` -You can stop the run with the following command: +### 3.5 Configure VM Options -```console -bash bin/stop.sh +```properties +-Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml +-Deventmesh.log.home=eventmesh-runtime/logs +-Deventmesh.home=eventmesh-runtime +-DconfPath=eventmesh-runtime/conf ``` -![runtime_8](/images/install/runtime_8.png) +If the operating system is Windows, replace the forward slash with a backslash `\`. + +### 3.6 Start + +Run the `main()` method of the `org.apache.eventmesh.starter.StartUp` class in the `eventmesh-starter` module to start EventMesh Runtime. + +### 3.7 Stop + +When the following logs are printed to the console, EventMesh Runtime has stopped. -![runtime_9](/images/install/runtime_9.png) \ No newline at end of file +```log +DEBUG StatusConsoleListener Shutdown hook enabled. Registering a new one. +WARN StatusConsoleListener Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger +``` \ No newline at end of file diff --git a/docs/instruction/04-runtime-with-docker.md b/docs/instruction/04-runtime-with-docker.md index 7a067cb80a..9a2a87dc57 100644 --- a/docs/instruction/04-runtime-with-docker.md +++ b/docs/instruction/04-runtime-with-docker.md @@ -1,127 +1,168 @@ # EventMesh Runtime with Docker -The documentation introduces the steps to install the latest release of EventMesh Runtime with Docker and connect to Apache RocketMQ. It's recommended to use a Linux-based system with [Docker Engine](https://docs.docker.com/engine/install/). Please follow the [Docker tutorial](https://docs.docker.com/get-started/) to get familiar with the basic concepts (registry, volume, etc.) and commands of Docker. +You can deploy EventMesh Runtime using Docker. This document provides an example of deploying it with RocketMQ as Event Store, but you can also choose another [Event Store supported by EventMesh](../roadmap.md#event-store-implementation-status). -## 1. Dependencies +## 1. Prerequisites -- 64-bit OS, we recommend Linux/Unix. +1. It is recommended to use a 64-bit Linux system. +2. Ensure Docker Engine is installed. Refer to the [official Docker documentation](https://docs.docker.com/engine/install/) for the installation process. +3. Familiarity with basic Docker concepts and command-line operations (e.g., registry, mounting) is recommended but not mandatory, as the required commands are provided. +4. If you choose a non-standalone mode, ensure that [RocketMQ is successfully started](https://rocketmq.apache.org/docs/quick-start/) and accessible via IP address. If you stick to the default standalone mode, RocketMQ doesn't need to be deployed. -- 64-bit JDK 1.8 or JDK 11 +## 2. Pull the EventMesh Runtime Image -- Gradle 7.0+, The recommended version can be found in the `gradle/wrapper/gradle-wrapper.properties` file. +First, open a command line and use the following `pull` command to download the [latest version of EventMesh](https://eventmesh.apache.org/events/release-notes/) from [Docker Hub](https://hub.docker.com/r/apache/eventmesh/tags). -## 2. Pull EventMesh Image +```shell +sudo docker pull apache/eventmesh:latest +``` -Download the pre-built image of [`eventmesh`](https://hub.docker.com/r/eventmesh/eventmesh) from Docker Hub with `docker pull`: +You can use the following command to list and view the locally available images. -```console -sudo docker pull eventmesh/eventmesh:v1.4.0 +```shell +sudo docker images ``` -To verify that the `eventmesh/eventmesh` image is successfully installed, list the downloaded images with `docker images`: +If the terminal displays image information similar to the following, it indicates that the EventMesh image has been successfully downloaded locally. -```console +```shell $ sudo docker images -REPOSITORY TAG IMAGE ID CREATED SIZE -eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB +REPOSITORY TAG IMAGE ID CREATED SIZE +apache/eventmesh latest f32f9e5e4694 2 days ago 917MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) +## 3. Mount Configuration Files -## 3. Edit Configuration +If you are starting EventMesh Runtime in standalone mode and haven't customized the configuration, you can proceed to the next step. -Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. +First, create the EventMesh configuration file directory on the host machine. This directory can be freely specified: ```shell -sudo mkdir -p /data/eventmesh/rocketmq/conf -cd /data/eventmesh/rocketmq/conf -sudo touch eventmesh.properties -sudo touch rocketmq-client.properties +sudo mkdir -p /data/eventmesh/conf +cd /data/eventmesh/conf ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) +### 3.1 EventMesh Runtime Configuration -### 4. Configure `eventmesh.properties` +This configuration file includes parameters required for the EventMesh Runtime environment and integration with other plugins. -The `eventmesh.properties` file contains the properties of EventMesh Runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. +Download the configuration file (replace `1.10.0` in the download link with the version you are using): ```shell -sudo vim eventmesh.properties +sudo wget https://raw.githubusercontent.com/apache/eventmesh/1.10.0-prepare/eventmesh-runtime/conf/eventmesh.properties ``` -| Configuration Key | Default Value | Description | -|-|-|-| -| `eventMesh.server.http.port` | 10105 | EventMesh HTTP server port | -| `eventMesh.server.tcp.port` | 10000 | EventMesh TCP server port | -| `eventMesh.server.grpc.port` | 10205 | EventMesh gRPC server port | +Edit `eventmesh.properties`: -### 5. Configure `rocketmq-client.properties` +```shell +sudo vim eventmesh.properties +``` -The `rocketmq-client.properties` file contains the properties of the Apache RocketMQ nameserver. +Specify RocketMQ as Event Store: -```shell -sudo vim rocketmq-client.properties +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq ``` -Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/1.3.0/eventmesh-runtime/conf/rocketmq-client.properties) and change the value of `eventMesh.server.rocketmq.namesrvAddr` to the nameserver address of RocketMQ. +Check if the default ports in the configuration file are occupied. If occupied, modify them to unused ports: + +| Property | Default | Remarks | +| ---------------------------------- | ------- | ------------------- | +| eventMesh.server.tcp.port | 10000 | TCP listening port | +| eventMesh.server.http.port | 10105 | HTTP listening port | +| eventMesh.server.grpc.port | 10205 | gRPC listening port | +| eventMesh.server.admin.http.port | 10106 | HTTP management port | + +### 3.2 Event Store Configuration -| Configuration Key | Default Value | Description | -|-|-|-| -| `eventMesh.server.rocketmq.namesrvAddr` | `127.0.0.1:9876;127.0.0.1:9876` | The address of RocketMQ nameserver | +In the case of RocketMQ, the configuration file includes parameters required to connect to the RocketMQ namesrv. -## 6. Run and Manage EventMesh Container +Download the configuration file (replace `1.10.0` in the download link with the version you are using): -Run an EventMesh container from the `eventmesh/eventmesh` image with the `docker run` command. The `-p` option of the command binds the container port with the host machine port. The `-v` option of the command mounts the configuration files from files in the host machine. +```shell +sudo wget https://raw.githubusercontent.com/apache/eventmesh/1.10.0-prepare/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/resources/rocketmq-client.properties +``` + +Edit `rocketmq-client.properties`: ```shell -sudo docker run -d -p 10000:10000 -p 10105:10105 \ --v `pwd`/data/eventmesh/rocketmq/conf/eventmesh.properties:/data/app/eventmesh/conf/eventmesh.properties \ --v `pwd`/data/eventmesh/rocketmq/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties \ -eventmesh/eventmesh:v1.4.0 +sudo vim rocketmq-client.properties ``` -The `docker ps` command lists the details (id, name, status, etc.) of the running containers. The container id is the unique identifier of the container. +If the namesrv address you are running is different from the default value in the configuration file, modify it to the actual running namesrv address. + +| Property | Default | Remarks | +| ----------------------------------------- | ------------------------------ | ----------------------------------- | +| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv address | + +>If you are unable to download the configuration files using the provided links, you can find all the configuration files in the `conf` path of the EventMesh binary distribution. + +## 4. Run the EventMesh Runtime Container + +Use the following command to start the EventMesh container: ```shell -$ sudo docker ps -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll +sudo docker run -d --name eventmesh -p 10000:10000 -p 10105:10105 -p 10205:10205 -p 10106:10106 -v /data/eventmesh/conf/eventmesh.properties:/data/app/eventmesh/conf/eventmesh.properties -v /data/eventmesh/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties -t apache/eventmesh:latest ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) +Explanation of `docker run` command parameters: -As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. +- `-p :`: Bind the container port to the host port. If you modified the default ports in EventMesh Runtime configuration or if the host's ports are already occupied, modify them accordingly. +- `-v :`: Mount the configuration files from the host to the container. If the path where you store EventMesh configuration files is not `/data/eventmesh/conf`, modify the host path accordingly. If you haven't customized the configuration files, please remove this parameter. +- `--name eventmesh`: Custom name for the container. This name must be unique. +- `-t apache/eventmesh:latest`: Image used by the container. -## 7. Managing EventMesh Containers +After executing the `docker run` command, the container ID will be returned. Use the following command to view the status of all running containers: -After successfully running an EventMesh container, you can manage the container by entering it, viewing logs, deleting it, and so on. +```shell +sudo docker ps +``` -To connect to the EventMesh container: +It will print: ```shell -sudo docker exec -it [container id or name] /bin/bash +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +b7a1546ee96a apache/eventmesh:latest "bash bin/start.sh" 10 seconds ago Up 8 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105-10106->10105-10106/tcp, :::10105-10106->10105-10106/tcp, 0.0.0.0:10205->10205/tcp, :::10205->10205/tcp eventmesh ``` -To read the log of the EventMesh container: +If the EventMesh Runtime container is not in the list printed by this command, it means the container failed to start. You can use the following command to view the logs at the time of startup (replace `eventmesh` with the container name or ID you specified): ```shell -tail -f ../logs/eventmesh.out +sudo docker logs eventmesh ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) +## 5. View EventMesh Logs -To stop or remove the container: +After successfully starting the EventMesh container, you can follow these steps to view the logs output by EventMesh and check the runtime status. + +Enter the container (replace `eventmesh` with the container name or ID you specified): ```shell -sudo docker stop [container id or name] +sudo docker exec -it eventmesh /bin/bash +``` -sudo docker rm -f [container id or name] +View the logs: + +```shell +cd logs +tail -n 50 -f eventmesh.out ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) +When the log output shows `server state:RUNNING`, it means EventMesh Runtime has started successfully. + +## 6. Build EventMesh Runtime Image (Optional) + +EventMesh is developed based on JDK8. The binary distribution and container image are built based on JDK8 and are also compatible with JDK11. -## 8. Explore more +To run the container in a JDK8 environment, execute the following command in the root directory of the EventMesh source code: -Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. +```shell +sudo docker build -t yourname/eventmesh:yourtag -f docker/Dockerfile_jdk8 . +``` -I hope you enjoy the process and get more out of it! \ No newline at end of file +If you want to use JDK11 as the container's runtime environment, execute: + +```shell +sudo docker build -t yourname/eventmesh:yourtag -f docker/Dockerfile_jdk11 . +``` \ No newline at end of file diff --git a/docs/instruction/05-demo.md b/docs/instruction/05-demo.md index 4853d9bc02..c2fe031c96 100644 --- a/docs/instruction/05-demo.md +++ b/docs/instruction/05-demo.md @@ -128,13 +128,13 @@ gradle: ```shell cd apache-eventmesh-1.9.0-src/eventmesh-examples gradle clean dist - -cd ./dist/bin +cd dist/bin ``` ![demo_1](/images/install/demo_1.png) ### 4.1 TCP + #### TCP Sub ```shell @@ -142,7 +142,8 @@ bash tcp_eventmeshmessage_sub.sh ``` Open the corresponding log file to view the log: -``` + +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_pub.out ``` @@ -171,7 +172,8 @@ sh tcp_sub_eventmeshmessage_broadcast.sh ``` Open the corresponding log file to view the log: -``` + +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_sub_broadcast.out ``` @@ -185,7 +187,8 @@ sh tcp_pub_eventmeshmessage_broadcast.sh ``` Open the corresponding log file to view the log: -``` + +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_pub_broadcast.out ``` @@ -201,7 +204,8 @@ sh http_sub.sh ``` Open the corresponding log file to view the log: -``` + +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_http_sub.out ``` @@ -215,7 +219,8 @@ sh http_pub_eventmeshmessage.sh ``` Open the corresponding log file to view the log: -``` + +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_http_pub.out ``` diff --git a/docs/instruction/06-operator.md b/docs/instruction/06-operator.md index 6df99ca1b3..2b98a69af5 100644 --- a/docs/instruction/06-operator.md +++ b/docs/instruction/06-operator.md @@ -1,4 +1,4 @@ -# EventMesh integrate with K8S +# Integrate EventMesh with K8S ### 1. Dependencies @@ -6,35 +6,38 @@ docker golang (version 1.19) kubernetes (kubectl) -There is some compatibility between kubernetes an docker, please check the version compatibility between them and download the corresponding version to ensure that they work properly together. +There is some compatibility between kubernetes an docker, please check the version compatibility between them and download the corresponding version to ensure that they work properly together. ``` -### 2. Start +### 2. Start Go to the eventmesh-operator directory. -``` + +```shell cd eventmesh-operator ``` Install CRD into the specified k8s cluster. -``` + +```shell make install # Uninstall CRDs from the K8s cluster make uninstall ``` -If you get error eventmesh-operator/bin/controller-gen: No such file or directory -Run the following command: -``` +If you get error `eventmesh-operator/bin/controller-gen: No such file or directory`, Run the following command: + +```shell # download controller-gen locally if necessary. make controller-gen # download kustomize locally if necessary. make kustomize ``` -View crds information: -``` +View crds information: + +```shell # run the following command to view crds information: kubectl get crds NAME CREATED AT @@ -42,10 +45,13 @@ connectors.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z runtimes.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z ``` -Create and delete CRs: -Custom resource objects are located at: /config/samples +Create and delete CRs: + +Custom resource objects are located at: /config/samples + When deleting CR, simply replace create with delete. -``` + +```shell # Create CR for eventmesh-runtime、eventmesh-connector-rocketmq,Creating a clusterIP lets eventmesh-runtime communicate with other components. make create @@ -65,9 +71,9 @@ runtime-cluster-service ClusterIP 10.109.209.72 10000/TCP make delete ``` -Run eventmesh-operator create pods +Run eventmesh-operator create pods. -``` +```shell # run controller make run # log diff --git a/docs/instruction/07-faq.md b/docs/instruction/07-faq.md new file mode 100644 index 0000000000..c5aa893527 --- /dev/null +++ b/docs/instruction/07-faq.md @@ -0,0 +1,42 @@ +# Frequently Asked Questions + +## Importing into Eclipse + +We recommend using `Intellij IDEA` for development. If you prefer to use `Eclipse`, you can follow the steps below to import the project. + +### Prerequisites + +- 64-bit JDK 1.8+ +- Gradle 7.0+ +- Eclipse with Gradle plugin installed + +### Download + +```shell +git clone https://github.com/apache/eventmesh.git +``` + +### Project Compilation for Eclipse Environment + +Open the command-line terminal and run `./gradlew cleanEclipse eclipse`. + +### Configuration Modifications + +Modify the project name to match the parameters in the `settings.gradle` configuration file, specifically the `rootProject.name` parameter. + +### Modify the `eclipse.init` Configuration File + +Configure Lombok, using version 1.18.8 as an example: + +``` +-javaagent:lombok-1.18.8.jar +-XBootclasspath/a:lombok-1.18.8.jar +``` + +### Eclipse Configuration for Version 202106 + +Add the configuration parameter to `eclipse.init`: `--illegal-access=permit` + +### Import + +Open Eclipse and import the EventMesh project into the IDE. \ No newline at end of file diff --git a/docs/roadmap.md b/docs/roadmap.md index 4ce525df63..6fb92e3345 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -48,3 +48,49 @@ The development roadmap of Apache EventMesh is an overview of the planned featur | Planned | Provide PHP SDK | [GitHub Issue](https://github.com/apache/eventmesh/3) | | Planned | Event Query Language (EQL) | [GitHub Issue](https://github.com/apache/eventmesh/) | | Planned | WebAssembly Runtime | [GitHub Issue](https://github.com/apache/eventmesh/) | + +## Connector Implementation Status + +| Service / Middleware | Source | Sink | +|:------------------------------------------:|:------:|:------:| +| [RocketMQ](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-rocketmq) | ✅ | ✅ | +| [Kafka](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-kafka) | ✅ | ✅ | +| [Pulsar](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pulsar) | ✅ | ✅ | +| [RabbitMQ](./design-document/connect/rabbitmq-connector) | ✅ | ✅ | +| [HTTP](./design-document/connect/http-connector) | ✅ | ⬜ | +| [JDBC](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-jdbc) | ⬜ | ✅ | +| [Spring](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-spring) | ✅ | ✅ | +| [OpenFunction](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-openfunction) | ✅ | ✅ | +| [File](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-file) | ✅ | ✅ | +| Email | ⬜ | ⬜ | +| [Redis](./design-document/connect/redis-connector) | ✅ | ✅ | +| [S3 File](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-s3) | ⬜ | ✅ | +| ClickHouse | ⬜ | ⬜ | +| [MongoDB](./design-document/connect/mongodb-connector) | ✅ | ✅ | +| [Prometheus](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-prometheus) | ✅ | ⬜ | +| [Knative](./design-document/connect/knative-connector) | ✅ | ✅ | +| [Pravega](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pravega) | ✅ | ✅ | +| More connectors will be added... | N/A | N/A | + +| Platform / Product | Source | Sink | +|:------------------------------------------:|:------:|:------:| +| [Feishu/Lark](./design-document/connect/lark-connector) | ⬜ | ✅ | +| [DingTalk](./design-document/connect/dingtalk-connector) | ⬜ | ✅ | +| [WeCom](./design-document/connect/wecom-connector) | ⬜ | ✅ | +| [WeChat](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-wechat) | ⬜ | ✅ | +| GitHub | ⬜ | ⬜ | +| ChatGPT | ⬜ | ⬜ | +| [Slack](./design-document/connect/slack-connector) | ⬜ | ✅ | +| More connectors will be added... | N/A | N/A | + +## Event Store Implementation Status + +| Service / Middleware | Ingress | Topic Management | +|:------------------------:|:------:|:------:| +| RocketMQ | ✅ | ✅ | +| Kafka | ✅ | ✅ | +| Standalone | ✅ | ✅ | +| Pulsar | ✅ | ⬜ | +| RabbitMQ | ✅ | ⬜ | +| Redis | ✅ | ⬜ | +| Support for more Event Stores... | N/A | N/A | \ No newline at end of file diff --git a/docs/sdk-java/01-intro.md b/docs/sdk-java/01-intro.md index cc8faaabc0..aefd8108ec 100644 --- a/docs/sdk-java/01-intro.md +++ b/docs/sdk-java/01-intro.md @@ -12,9 +12,9 @@ EventMesh SDK for Java is a collection of Java libraries to integrate EventMesh ​ To install EventMesh SDK for Java with Gradle, declare `org.apache.eventmesh:eventmesh-sdk-java` as `implementation` in the dependencies block of the module's `build.gradle` file. -```groovy +```gradle dependencies { - implementation 'org.apache.eventmesh:eventmesh-sdk-java:1.9.0' + implementation 'org.apache.eventmesh:eventmesh-sdk-java:1.10.0' } ``` @@ -30,7 +30,7 @@ To install EventMesh SDK for Java with Maven, declare `org.apache.eventmesh:even org.apache.eventmesh eventmesh-sdk-java - 1.9.0 + 1.10.0 ``` diff --git a/docusaurus.config.js b/docusaurus.config.js index ff77e1454a..d9e7917268 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -180,7 +180,19 @@ module.exports = { prism: { theme: lightCodeTheme, darkTheme: darkCodeTheme, - additionalLanguages: ['java'], + additionalLanguages: [ + 'bash', + 'java', + 'gradle', + 'groovy', + 'properties', + 'json', + 'protobuf', + 'sql', + 'antlr4', + 'log', + 'rust' + ], }, }, i18n: { diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/01-event-handling-and-integration/01-runtime-protocol.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/01-event-handling-and-integration/01-runtime-protocol.md index ce0e6ac800..73165ff9df 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/01-event-handling-and-integration/01-runtime-protocol.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/01-event-handling-and-integration/01-runtime-protocol.md @@ -270,7 +270,7 @@ public class EventMeshMessage { 以下消息数据模型用于 `publish()`, `requestReply()` 和 `broadcast()` APIs. -``` +```protobuf message RequestHeader { string env = 1; string region = 2; @@ -326,7 +326,7 @@ message Response { 以下订阅数据模型用于 `subscribe()` 和 `unsubscribe()` APIs. -``` +```protobuf message Subscription { RequestHeader header = 1; string consumerGroup = 2; @@ -356,7 +356,7 @@ message Subscription { 以下心跳数据模型用于 `heartbeat()` API. -``` +```protobuf message Heartbeat { enum ClientType { PUB = 0; @@ -381,7 +381,7 @@ message Heartbeat { + 事件生产端服务 APIs -``` +```protobuf service PublisherService { # 异步事件生产 rpc publish(SimpleMessage) returns (Response); @@ -396,7 +396,7 @@ service PublisherService { + 事件消费端服务 APIs -``` +```protobuf service ConsumerService { # 所消费事件通过 HTTP Webhook 推送事件 rpc subscribe(Subscription) returns (Response); @@ -410,7 +410,7 @@ service ConsumerService { + 客户端心跳服务 API -``` +```protobuf service HeartbeatService { rpc heartbeat(Heartbeat) returns (Response); } diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/02-observability/05-jaeger.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/02-observability/05-jaeger.md index 8185427685..3edd5e710a 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/02-observability/05-jaeger.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/02-observability/05-jaeger.md @@ -10,7 +10,7 @@ Jaeger 的安装可以参考 [官方文档](https://www.jaegertracing.io/docs/la 为了启用 EventMesh Runtime 的 trace exporter,请将 `conf/eventmesh.properties` 文件中的 `eventMesh.server.trace.enabled` 字段设置为 true。 -```conf +```properties # Trace plugin eventMesh.server.trace.enabled=true eventMesh.trace.plugin=jaeger @@ -18,7 +18,7 @@ eventMesh.trace.plugin=jaeger 为了定义 trace exporter 的行为,如超时时间或导出间隔,请编辑 `exporter.properties` 文件。 -```conf +```properties # Set the maximum batch size to use eventmesh.trace.max.export.size=512 # Set the queue size. This must be >= the export batch size @@ -31,7 +31,7 @@ eventmesh.trace.export.interval=5 为了将导出的 trace 数据发送到 Jaeger,请编辑 `conf/jaeger.properties` 文件中的 `eventmesh.trace.jaeger.ip` 和 `eventmesh.trace.jaeger.port` 字段,来匹配 Jaeger 服务器的配置。 -```conf +```properties # Jaeger's IP and Port eventmesh.trace.jaeger.ip=localhost eventmesh.trace.jaeger.port=14250 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/00-connectors.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/00-connectors.md index 20befef47f..50e393a558 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/00-connectors.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/00-connectors.md @@ -4,6 +4,8 @@ 连接器是代表用户应用程序与特定外部服务或底层数据源(例如数据库)交互的镜像或实例。连接器的类型可以是源(Source)或汇(Sink)。 +连接器通过 `main()` 作为一个独立服务运行。 + ## 数据源(Source 端) 源连接器从底层数据生产者获取数据,并在原始数据被转换为 CloudEvents 后将其传递给目标。源连接器不限制源如何检索数据(例如,源可以从消息队列中获取数据,也可以充当等待接收数据的 HTTP 服务器)。 @@ -21,56 +23,29 @@ CloudEvents 是一种以通用格式描述事件数据的规范,以提供服 使用 [eventmesh-openconnect-java](https://github.com/apache/eventmesh/tree/master/eventmesh-openconnect/eventmesh-openconnect-java) 实现 Source/Sink 接口即可添加新的连接器。 ## 技术方案 + ### 结构与处理流程 + ![source-sink connector architecture](../../../../../../static/images/design-document/connector-architecture.png) ### 详细设计 + ![eventmesh-connect-detail](../../../../../../static/images/design-document/connector-design-detail.png) ### 描述 #### Worker -Worker分为Source Worker与Sink Worker,由`Application`类进行触发运行,分别实现了`ConnectorWorker`接口的方法,其中包含了worker的运行生命周期,worker承载了connector的运行。Worker可以通过镜像的方式轻量的独立运行,内部集成了eventmesh-sdk-java模块,采用cloudevents协议与eventmesh进行交互,目前默认采用tcp客户端,后续可以考虑支持动态可配 +Worker 分为 Source Worker 与 Sink Worker,由`Application`类进行触发运行,分别实现了`ConnectorWorker`接口的方法,其中包含了 worker 的运行生命周期,worker 承载了 connector 的运行。Worker 可以通过镜像的方式轻量的独立运行,内部集成了 eventmesh-sdk-java 模块,采用 CloudEvents 协议与 EventMesh 进行交互,目前默认采用 TCP 客户端,后续可以考虑支持动态可配。 #### Connector -Connector分为Source Connector与Sink Connector,connector有各自的配置文件,以及独立运行的方式,通过worker进行反射加载与配置解析,完成Connector的初始化以及后续运行工作,其中Source Connector实现poll方法,Sink Connector实现put方法,统一使用`ConnectorRecord`承载数据。Source Connector与Sink Connector均可独立运行。 +Connector 分为 Source Connector 与 Sink Connector,connector 有各自的配置文件,以及独立运行的方式,通过 worker 进行反射加载与配置解析,完成 Connector 的初始化以及后续运行工作,其中 Source Connector 实现 poll 方法,Sink Connector 实现 put 方法,统一使用`ConnectorRecord`承载数据。Source Connector 与 Sink Connector 均可独立运行。 #### ConnectorRecord with CloudEvents -`ConnectorRecord`为connector层数据协议,当worker与eventmesh进行交互时需开发协议适配器进行`ConnectorRecord`到CloudEvents的协议转换。 +`ConnectorRecord`为 connector 层数据协议,当 worker 与 EventMesh 进行交互时需开发协议适配器进行`ConnectorRecord`到 CloudEvents 的协议转换。 #### Registry -`Registry`模块负责存储同步不同Connector实例的数据的同步进度,确保多个Connector镜像或实例之间的高可用。 - -## 连接器实现状态 - -| 连接器名称 | 源 | 汇 | -|:------------------------------------------:|:------:|:------:| -| [RocketMQ](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-rocketmq) | ✅ | ✅ | -| ChatGPT | ⬜ | ⬜ | -| ClickHouse | ⬜ | ⬜ | -| [钉钉](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-dingtalk) | ⬜ | ✅ | -| 邮件 | ⬜ | ⬜ | -| [飞书/Lark](./lark-connector) | ⬜ | ✅ | -| [文件](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-file) | ✅ | ✅ | -| GitHub | ⬜ | ⬜ | -| [HTTP](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-http) | ✅ | ⬜ | -| [Jdbc](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-jdbc) | ⬜ | ✅ | -| [Kafka](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-kafka) | ✅ | ✅ | -| [Knative](./knative-connector) | ✅ | ✅ | -| [MongoDB](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-mongodb) | ✅ | ✅ | -| [OpenFunction](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-openfunction) | ✅ | ✅ | -| [Pravega](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pravega) | ✅ | ✅ | -| [Prometheus](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-prometheus) | ✅ | ⬜ | -| [Pulsar](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pulsar) | ✅ | ✅ | -| [RabbitMQ](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-rabbitmq) | ✅ | ✅ | -| [Redis](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-redis) | ✅ | ✅ | -| [S3 存储](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-s3) | ⬜ | ✅ | -| [Slack](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-slack) | ⬜ | ✅ | -| [Spring](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-spring) | ✅ | ✅ | -| [企业微信](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-wecom) | ⬜ | ✅ | -| [微信](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-wechat) | ⬜ | ✅ | -| 更多连接器正在计划中... | N/A | N/A | +`Registry`模块负责存储同步不同 Connector 实例的数据的同步进度,确保多个 Connector 镜像或实例之间的高可用。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/01-rabbitmq-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/01-rabbitmq-connector.md new file mode 100644 index 0000000000..b2c46aa68c --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/01-rabbitmq-connector.md @@ -0,0 +1,42 @@ +# RabbitMQ + +## RabbitMQSinkConnector:从 EventMesh 到 RabbitMQ + +1. 启动你的 RabbitMQ 和 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 启动你的 RabbitMQConnectorServer,它将订阅到 EventMesh Runtime 中 `pubSubConfig.subject` 中定义的主题,并将数据发送到 RabbitMQ 中的 `connectorConfig.queueName`。 +4. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息,然后你将在 RabbitMQ 中接收到该消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: rabbitmqSink + appId: 5031 + userName: rabbitmqSinkUser + passWord: rabbitmqPassWord +connectorConfig: + connectorName: rabbitmqSink + host: your.rabbitmq.server + port: 5672 + username: coyrqpyz + passwd: passwd + virtualHost: coyrqpyz + exchangeType: TOPIC + # 使用内置的 exchangeName 或在连接到 RabbitMQ 后创建新的 exchangeName。 + exchangeName: amq.topic + # 如果在连接之前不存在,RabbitMQ 将自动创建 routingKey 和 queueName。 + routingKey: eventmesh + queueName: eventmesh + autoAck: true +``` + +## RabbitMQSourceConnector:从 RabbitMQ 到 EventMesh + +1. 启动你的 RabbitMQ 和 EventMesh Runtime。 +2. 启用 sourceConnector 并检查 `source-config.yml`(与 sink-config.yml 基本相同)。 +3. 启动你的 RabbitMQConnectorServer,它将订阅到 RabbitMQ 中的 `connectorConfig.queueName`,并将数据发送到 EventMesh Runtime 中的 `pubSubConfig.subject`。 +4. 向队列发送一个 CloudEvent 消息,然后你将在 EventMesh 中接收到该消息。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/04-http-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/02-http-connector.md similarity index 100% rename from i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/04-http-connector.md rename to i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/02-http-connector.md diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/03-rabbitmq-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/03-rabbitmq-connector.md deleted file mode 100644 index 963ee30803..0000000000 --- a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/03-rabbitmq-connector.md +++ /dev/null @@ -1,40 +0,0 @@ -# RabbitMQ - -## RabbitMQSinkConnector:从 eventmesh 到 rabbitmq。 - -1. 启动你的 rabbitmq 服务和 eventmesh-runtime。 -2. 启用 sinkConnector 并检查 `sink-config.yml`。 -3. 向 eventmesh 发送带有在 `pubSubConfig.subject` 中定义的主题消息。 -```yaml -pubSubConfig: - # 默认端口 10000 - meshAddress: your.eventmesh.server:10000 - subject: TopicTest - idc: FT - env: PRD - group: rabbitmqSink - appId: 5031 - userName: rabbitmqSinkUser - passWord: rabbitmqPassWord -connectorConfig: - connectorName: rabbitmqSink - host: your.rabbitmq.server - port: 5672 - username: coyrqpyz - passwd: passwd - virtualHost: coyrqpyz - exchangeType: TOPIC - # 使用内置的 exchangeName 或在连接到 rabbitmq 服务后创建新的 exchangeName。 - exchangeName: amq.topic - # 如果在连接之前不存在,rabbitmq 服务将自动创建 routingKey 和 queueName。 - routingKey: eventmesh - queueName: eventmesh - autoAck: true -``` - -## RabbitMQSourceConnector:从 rabbitmq 到 eventmesh。 - -1. 启动你的 rabbitmq 服务器和 eventmesh-runtime。 -2. 启用 sourceConnector 并检查 `source-config.yml`(与 sink-config.yml 基本相同)。 -3. 启动你的 RabbitMQConnectorServer,你会在 rabbitmq 服务中找到该channel。 -4. 向队列发送一个 cloudevent 消息,然后你将在 eventmesh 中接收到该消息。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/03-redis-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/03-redis-connector.md new file mode 100644 index 0000000000..cf56c33b64 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/03-redis-connector.md @@ -0,0 +1,33 @@ +# Redis + +## RedisSinkConnector:从 EventMesh 到 Redis 的消息队列 + +1. 启动你的 Redis 实例和 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 启动你的 `RedisConnectServer`,它将订阅到 EventMesh Runtime 中 `pubSubConfig.subject` 中定义的主题,并将数据发送到 Redis 中的 `connectorConfig.topic`。 +4. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息,然后你将在 Redis 中接收到该消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: redisSink + appId: 5031 + userName: redisSinkUser + passWord: redisPassWord +connectorConfig: + connectorName: redisSink + server: redis://127.0.0.1:6379 + # Redis 中的主题 + topic: SinkTopic +``` + +## RedisSourceConnector:从 Redis 的消息队列 到 EventMesh + +1. 启动你的 Redis 实例和 EventMesh Runtime。 +2. 启用 sourceConnector 并检查 `source-config.yml`(与 sink-config.yml 基本相同)。 +3. 启动你的 RedisConnectServer,它将订阅到 Redis 中的 `connectorConfig.topic`,并将数据发送到 EventMesh Runtime 中的 `pubSubConfig.subject` +4. 向 Redis 的主题发送一个 CloudEvent 消息,然后你将在 EventMesh 中接收到该消息。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/04-mongodb-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/04-mongodb-connector.md new file mode 100644 index 0000000000..028fea6ba0 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/04-mongodb-connector.md @@ -0,0 +1,36 @@ +# MongoDB + +## MongoDBSinkConnector:从 EventMesh 到 MongoDB + +1. 启动你的 MongoDB 服务和 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 启动你的 MongoDBConnectorServer,它将订阅到 EventMesh Runtime 中 `pubSubConfig.subject` 中定义的主题,并将数据发送到 MongoDB 中的 `connectorConfig.collection`。 +4. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息,然后你将在 MongoDB 中接收到该消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: rabbitmqSink + appId: 5031 + userName: rabbitmqSinkUser + passWord: rabbitmqPassWord +connectorConfig: + connectorName: mongodbSink + # 支持 REPLICA_SET 和 STANDALONE + connectorType: STANDALONE + # mongodb://root:root@127.0.0.1:27018,127.0.0.1:27019 + url: mongodb://127.0.0.1:27018 + database: yourDB + collection: yourCol +``` + +## MongoDBSourceConnector:从 MongoDB 到 EventMesh + +1. 启动你的 MongoDB 服务和 EventMesh Runtime。 +2. 启用 sourceConnector 并检查 `source-config.yml`(与 sink-config.yml 基本相同)。 +3. 启动你的 MongoDBSourceConnector,它将订阅到 MongoDB 中的 `connectorConfig.collection`,并将数据发送到 EventMesh Runtime 中的 `pubSubConfig.subject`。 +4. 向 MongoDB 中 `yourDB` 的 `yourCol` 写入一个 CloudEvent 消息,然后你将在 EventMesh 中接收到该消息。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/02-knative-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/05-knative-connector.md similarity index 100% rename from i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/02-knative-connector.md rename to i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/05-knative-connector.md diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/01-lark-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/06-lark-connector.md similarity index 100% rename from i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/01-lark-connector.md rename to i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/06-lark-connector.md diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/07-dingtalk-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/07-dingtalk-connector.md new file mode 100644 index 0000000000..1228a9ea29 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/07-dingtalk-connector.md @@ -0,0 +1,34 @@ +# 钉钉 + +## DingtalkSinkConnector:从 EventMesh 到钉钉 + +1. 启动你的 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-DINGTALK + idc: FT + env: PRD + group: dingTalkSink + appId: 5034 + userName: dingTalkSinkUser + passWord: dingTalkPassWord +sinkConnectorConfig: + connectorName: dingTalkSink + # 以下配置参考 https://open.dingtalk.com/document/orgapp/the-robot-sends-a-group-message + appKey: dingTalkAppKey + appSecret: dingTalkAppSecret + openConversationId: dingTalkOpenConversationId + robotCode: dingTalkRobotCode +``` + +### CloudEvent 属性 + +使用 eventmesh-connector-dingtalk 下沉事件时,需要在 CloudEvent 中添加对应的 extension filed: + +- 当 key=`dingtalktemplatetype`时,value=`text`/`markdown`,表明该事件的文本类型。 +- 当文本类型 `dingtalktemplatetype` 为 markdown 时,可以为文本设置标题。添加 extension:key=`dingtalkmarkdownmessagetitle`,value 为该事件的标题。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/08-wecom-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/08-wecom-connector.md new file mode 100644 index 0000000000..334a51eaad --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/08-wecom-connector.md @@ -0,0 +1,30 @@ +# 企业微信 + +## WecomSinkConnector:从 EventMesh 到企业微信 + +1. 启动你的 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-WECOM + idc: FT + env: PRD + group: weComSink + appId: 5034 + userName: weComSinkUser + passWord: weComPassWord +sinkConnectorConfig: + connectorName: weComSink + # 以下配置请参考文档:https://developer.work.weixin.qq.com/document/path/90236 + robotWebhookKey: weComRobotWebhookKey +``` + +### CloudEvent 属性 + +使用 eventmesh-connector-wecom 下沉事件时,需要在 CloudEvent 中添加对应的 extension filed: + +- 当 key=`wecomtemplatetype`时,value=`text`/`markdown`,表明该事件的文本类型。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/09-slack-connector.md b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/09-slack-connector.md new file mode 100644 index 0000000000..ede3d66b03 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/design-document/03-connect/09-slack-connector.md @@ -0,0 +1,25 @@ +# Slack + +## SlackSinkConnector:从 EventMesh 到 Slack + +1. 启动你的 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-SLACK + idc: FT + env: PRD + group: slackSink + appId: 5034 + userName: slackSinkUser + passWord: slackPassWord +sinkConnectorConfig: + connectorName: slackSink + # 以下配置请参考文档:https://api.slack.com/messaging/sending + appToken: slackAppToken + channelId: slackChannelId +``` \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/00-eclipse.md b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/00-eclipse.md deleted file mode 100644 index b23d06ee2a..0000000000 --- a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/00-eclipse.md +++ /dev/null @@ -1,38 +0,0 @@ -# 导入 Eclipse 快速入门说明 - -我们推荐使用 `Intellij IDEA` 进行开发,如果您希望使用 `Eclipse`,可以参考下面的步骤导入项目。 - -### 依赖 - -``` -64 位 JDK 1.8+; -Gradle 至少为 7.0, 推荐 7.0.* -eclipse 已安装 gradle 插件或者 eclipse 自带 gradle 插件 -``` - -### 下载源码 - -git init - -git clone - -### 项目编译 eclipse 环境 - -打开命令行终端,运行 gradlew cleanEclipse eclipse - -### 配置修改 - -修改工程名称和 settings.gradle 配置文件参数 rootProject.name 参数一致 - -### 修改 eclipse.init 配置文件,配置 lombok 以 1.18.8 版本为例 - --javaagent:lombok-1.18.8.jar --XBootclasspath/a:lombok-1.18.8.jar - -### 202106 版本 eclipse,eclipse.init 增加配置参数 - ---illegal-access=permit - -### 导入 gradle - -打开 eclipse,导入 gradle 项目到 IDE 里 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/01-store.md b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/01-store.md index 35ced408ec..6a9a3894d2 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/01-store.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/01-store.md @@ -1,20 +1,20 @@ -# 部署 EventMesh 的事件存储 +# Event Store 事件存储 -## 1 依赖 - -- 建议使用 64 位操作系统,建议使用 Linux / Unix。 - -- 64 位 JDK 1.8 或 JDK 11 +## 1 前提 +- 建议使用 64 位的 Linux / Unix 系统 +- 64 位 JDK 8 或 JDK 11 - 4GB+ 可用磁盘,用于 Event Store 服务器。 -EventMesh 在非 standalone 模式下,依赖 RocketMQ 作为存储层;若采用 standalone 模式,则可跳过该步,直接进行 EventMesh Runtime 的部署。 +本文将以 RocketMQ 事件存储为例,您也可以选择其它 [EventMesh 支持的事件存储](../roadmap.md#事件存储实现状态)。EventMesh 在非 standalone 模式下,依赖 RocketMQ 作为存储层。若您保持默认的 standalone 模式,则可跳过该步,直接进行 EventMesh Runtime 的部署。 + +在生产环境应使用 standalone 之外的事件存储,以支持更大的吞吐量和更高的可用性。 ## 2 下载 -从 [RocketMQ 官方网站](https://rocketmq.apache.org/download/) 下载 Binary 代码(推荐使用 4.9.*版本),这里以 4.9.4 为例: +从 [RocketMQ 官方网站](https://rocketmq.apache.org/download/) 下载 Binary 代码(推荐使用 4.9.* 版本),这里以 4.9.4 为例: -``` +```shell unzip rocketmq-all-4.9.4-bin-release.zip cd rocketmq-all-4.9.4-bin-release/ ``` @@ -25,7 +25,7 @@ cd rocketmq-all-4.9.4-bin-release/ 启动 Name Server: -``` +```shell nohup sh bin/mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log ``` @@ -35,7 +35,7 @@ nohup sh bin/mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log 启动 Broker: -``` +```shell nohup sh bin/mqbroker -n localhost:9876 & tail -f ~/logs/rocketmqlogs/broker.log ``` @@ -46,4 +46,4 @@ tail -f ~/logs/rocketmqlogs/broker.log ## 参考 -关于 RocketMQ 的其他更多资料,请参考 +关于 RocketMQ 的其他更多资料,请参考 https://rocketmq.apache.org/docs/quick-start/. diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/02-store-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/02-store-with-docker.md index 1bd3f58f15..bc1c450e04 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/02-store-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/02-store-with-docker.md @@ -1,14 +1,13 @@ -# 部署 EventMesh 的事件存储(使用 Docker) +# Event Store Docker 部署 -## 1. 依赖 - -- 建议使用 64 位操作系统,建议使用 Linux / Unix。 - -- 64 位 JDK 1.8 或 JDK 11 +## 1. 前提 +- 建议使用 64 位的 Linux / Unix 系统 - 4GB+ 可用磁盘,用于 Event Store 服务器。 -EventMesh 在非 standalone 模式下,依赖 RocketMQ 作为存储层;若采用 standalone 模式,则可跳过该步,直接进行 EventMesh Runtime 的部署。 +本文将以 RocketMQ 事件存储为例,您也可以选择其它 [EventMesh 支持的事件存储](../roadmap.md#事件存储实现状态)。EventMesh 在非 standalone 模式下,依赖 RocketMQ 作为存储层。若您保持默认的 standalone 模式,则可跳过该步,直接进行 EventMesh Runtime 的部署。 + +在生产环境应使用 standalone 之外的事件存储,以支持更大的吞吐量和更高的可用性。 ## 2. Docker 部署 @@ -65,6 +64,6 @@ sudo docker run -d -p 10911:10911 -p 10909:10909 \ ![rocketmq_docker_2](/images/install/rocketmq_docker_2.png) -请注意 **rocketmq-broker ip** 是 **pod ip**, 如果你想修改这个 ip, 可以通过挂载容器中 **broker.conf** 文件的方式并修改文件中的 **brokerIP1** 配置项为自定义值。 +请注意 `rocketmq-broker ip` 是 `pod ip`, 如果你想修改这个 ip, 可以通过挂载容器中 `broker.conf` 文件的方式并修改文件中的 `brokerIP1` 配置项为自定义值。 至此 Event Store 的部署已完成,请转至下一步完成 [EventMesh Runtime](04-runtime-with-docker.md) 的部署。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/03-runtime.md index e70436d529..c169458182 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/03-runtime.md @@ -1,216 +1,272 @@ -# EventMesh Runtime 快速入门说明 +# EventMesh Runtime 快速开始 EventMesh Runtime 是 EventMesh 集群中有状态的 Mesh 节点,负责 Source Connector 与 Sink Connector 之间的事件传输,并可以使用 Event Store 作为事件的存储队列。 -![EventMesh Runtime](/images/design-document/runtime.png) +![EventMesh Runtime](../../../../../static/images/design-document/runtime.png) -## 1 本地构建运行 +## 1. 部署二进制发行版 -### 1.1 源码启动 +### 1.1 环境 -#### 1.1.1 依赖 +- 建议使用 64 位的 Linux / Unix 系统 +- 64 位 JDK 8 或 JDK 11 -- 建议使用 64 位操作系统,建议使用 Linux / Unix。 +### 1.2 下载 -- 64 位 JDK 1.8 或 JDK 11 +从 [EventMesh Download](https://eventmesh.apache.org/download) 页面下载最新版本的 Binary Distribution 发行版并解压: -- Gradle 7.0+, 可于 `gradle/wrapper/gradle-wrapper.properties` 文件中查看推荐版本。 +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-bin.tar.gz +tar -xvzf apache-eventmesh-1.10.0-bin.tar.gz +cd apache-eventmesh-1.10.0 +``` -#### 1.1.2 下载源码 +### 1.3 配置 -从 [EventMesh download](https://eventmesh.apache.org/download) 下载并提取最新版本的源代码。比如目前最新版,您将获得`apache-eventmesh-1.9.0-source.tar.gz`。 +本文将以 RocketMQ 事件存储为例,您也可以选择其它 [EventMesh 支持的事件存储](../roadmap.md#事件存储实现状态)。若您选择非 standalone 模式,请确保 [RocketMQ 已成功启动](https://rocketmq.apache.org/docs/quick-start/) 并且可以使用 IP 地址访问到;若您保持默认的 standalone 模式,则无需启动 RocketMQ。 -#### 1.1.3 本地启动 +#### 1.3.1 EventMesh Runtime 配置 -**1.1.3.1 项目结构说明:** +此配置文件中包含 EventMesh Runtime 环境和集成的插件的配置。 -- eventmesh-common : EventMesh 公共类与方法模块 -- eventmesh-connector-api : EventMesh Connector 插件接口定义模块 -- eventmesh-connector-plugin : EventMesh Connector 插件模块 -- eventmesh-runtime : EventMesh 运行时模块 -- eventmesh-sdk-java : EventMesh Java 客户端 SDK -- eventmesh-starter : EventMesh 本地启动运行项目入口 -- eventmesh-spi : EventMesh SPI 加载模块 +```shell +vim conf/eventmesh.properties +``` -> 注:插件模块遵循 EventMesh 定义的 SPI 规范,自定义的 SPI 接口需要使用注解 `@EventMeshSPI` 标识。 -> -> 插件实例需要在对应模块中的 `/main/resources/META-INF/eventmesh` 下配置相关接口与实现类的映射文件,文件名为 SPI 接口全类名。 -> -> 文件内容为插件实例名到插件实例的映射,具体可以参考 eventmesh-connector-rocketmq 插件模块。 +指定事件存储为 RocketMQ: -**1.1.3.2 插件说明** +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq +``` -***1.1.3.2.1 安装插件*** +请检查配置文件里的默认端口是否已被占用,如果被占用,请修改为未被占用的端口: -有两种方式安装插件 +| 属性 | 默认值 | 备注 | +| -------------------------------- | ------ | ------------- | +| eventMesh.server.tcp.port | 10000 | TCP 监听接口 | +| eventMesh.server.http.port | 10105 | HTTP 监听接口 | +| eventMesh.server.grpc.port | 10205 | gRPC 监听接口 | +| eventMesh.server.admin.http.port | 10106 | HTTP 管理接口 | -- classpath 加载:本地开发可以通过在 eventmesh-starter 模块 build.gradle 中进行声明,例如声明使用 rocketmq 插件 +#### 1.3.2 事件存储配置 -```gradle - implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") -``` +以 RocketMQ 为例,配置文件中包含连接 RocketMQ namesrv 所需的参数。 -- 文件加载:通过将插件安装到插件目录,EventMesh 在运行时会根据条件自动加载插件目录下的插件,可以通过执行以下命令安装插件 +编辑 `rocketmq-client.properties`: ```shell -./gradlew clean jar dist && ./gradlew installPlugin +vim conf/rocketmq-client.properties ``` -***1.1.3.2.2 使用插件*** +如果您正在运行的 namesrv 地址不是配置文件中的默认值,请将其修改为实际正在运行的 namesrv 地址。 -EventMesh 会默认加载 `dist/plugin` 目录下的插件,可以通过`-DeventMeshPluginDir=your_plugin_directory`来改变插件目录。运行时需要使用的插件实例可以在 -`confPath`目录下面的`eventmesh.properties`中进行配置。例如通过以下设置声明在运行时使用 rocketmq 插件。 +| 属性 | 默认值 | 备注 | +| ------------------------------------- | ----------------------------- | ------------------------ | +| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv address | -```properties -#connector plugin -eventMesh.connector.plugin.type=rocketmq -``` +### 1.4 启动 -**1.1.3.3 配置 VM 启动参数** +执行 `start.sh` 脚本启动 EventMesh Runtime: -```properties --Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml --Deventmesh.log.home=eventmesh-runtime/logs --Deventmesh.home=eventmesh-runtime --DconfPath=eventmesh-runtime/conf +```shell +bash bin/start.sh ``` -> 注:如果操作系统为 Windows, 可能需要将文件分隔符换成'\' - -**1.1.3.4 启动运行** +若脚本仅打印以下三行,未输出其它错误信息,则代表脚本执行成功: +```shell +EventMesh using Java version: 8, path: /usr/local/openjdk-8/bin/java +EVENTMESH_HOME : /data/app/eventmesh +EVENTMESH_LOG_HOME : /data/app/eventmesh/logs ``` -运行 org.apache.eventmesh.starter.StartUp 的 main 方法 + +接着,查看 EventMesh Runtime 输出的日志,检查 EventMesh 的运行状态: + +```shell +tail -n 50 -f logs/eventmesh.out ``` -### 1.2 本地二进制构建 +当日志输出`server state:RUNNING`,则代表 EventMesh Runtime 启动成功了。 + +停止 EventMesh Runtime: -#### 1.2.1 依赖 +```shell +bash bin/stop.sh +``` -- 建议使用 64 位操作系统,建议使用 Linux / Unix。 +脚本打印`shutdown server ok!`时,代表 EventMesh Runtime 已停止。 -- 64 位 JDK 1.8 或 JDK 11 +## 2. 构建二进制分发包 -- Gradle 7.0+, 可于 `gradle/wrapper/gradle-wrapper.properties` 文件中查看当前版本推荐的 Gradle 版本。 +### 2.1 环境 -Gradle 是 Apache EventMesh 使用的构建自动化工具。请参考 [官方指南](https://docs.gradle.org/current/userguide/installation.html) 安装最新版本的 Gradle。 +- 建议使用 64 位的 Linux / Unix 系统 +- 64 位 JDK 8 或 JDK 11 +- [Gradle](https://docs.gradle.org/current/userguide/installation.html) 7.0+(可选),本文档中给出的构建命令使用 Gradle Wrapper,无需用户自行配置 Gradle 环境。您也可以于 `gradle/wrapper/gradle-wrapper.properties` 文件中查看您使用的 EventMesh 版本所推荐的 Gradle 版本,使用您本机的 Gradle 编译。 -#### 1.2.2 下载源码 +### 2.2 下载 -从 [EventMesh download](https://eventmesh.apache.org/download) 下载并提取最新版本的源代码。比如目前最新版,您将获得`apache-eventmesh-1.9.0-source.tar.gz`。 +从 [EventMesh Download](https://eventmesh.apache.org/download) 下载 Source Code 源代码并解压: -```console -tar -xvzf apache-eventmesh-1.9.0-source.tar.gz -cd apache-eventmesh-1.9.0-src/ +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-source.tar.gz +tar -xvzf apache-eventmesh-1.10.0-source.tar.gz +cd apache-eventmesh-1.10.0-src/ ``` -使用 Gradle 构建源代码。 +您也可以选择从 GitHub 拉取代码: -```console -gradle clean dist +```shell +git clone https://github.com/apache/eventmesh.git +cd eventmesh/ ``` -![runtime_2](/images/install/runtime_2.png) +### 2.3 构建 -编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 +EventMesh 基于 JDK8 开发,二进制发行版也基于 JDK8 构建。推荐在 JDK8 环境下运行 EventMesh Runtime。 -```console -cd dist -vim conf/eventmesh.properties -``` +#### 在 JDK8 环境运行 -#### 1.2.3 构建并加载插件 +部分源代码需要在 JDK11 下生成: -Apache EventMesh 引入了 SPI 机制,使 EventMesh 能够在运行时发现并加载插件。有两种方式安装插件: +```shell +./gradlew clean generateGrammarSource --parallel --daemon +``` -1. Gradle 依赖项:在 `eventmesh-starter/build.gradle` 中将插件声明为构建依赖项。 +`generateGrammarSource`任务会在`org.apache.eventmesh.connector.jdbc.antlr4.autogeneration`包下生成`ANTLR`所需的源代码。 -```gradle -dependencies { - implementation project(":eventmesh-runtime") +接着,在 JDK8 下构建 EventMesh Runtime: - // 示例:加载 RocketMQ 插件 - implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") -} +```shell +./gradlew clean dist -x spotlessJava -x generateGrammarSource --parallel --daemon ``` -2. 插件目录:EventMesh 会根据 `eventmesh.properties` 加载 `dist/plugin` 目录中的插件。Gradle 的 `installPlugin` 任务会构建插件并将其移动到 `dist/plugin` 目录中。 +构建完成后,请前往 [2.4 打包插件](#24-打包插件)。 -```console -gradle installPlugin -``` +> 您可以使用`update-alternatives`或`JAVA_HOME`等方式切换 JDK 版本,并使用`java -version`查看当前 JDK 版本。 -#### 1.2.4 启动 Runtime +#### 在 JDK11 环境运行 -执行 `start.sh` 脚本启动 EventMesh Runtime 服务器。 +如果您希望以 JDK11 作为 EventMesh Runtime 的运行环境,则执行: -```console -bash bin/start.sh +```shell +./gradlew clean dist --parallel --daemon ``` -![runtime_4](/images/install/runtime_4.png) +构建完成后,请前往 [2.4 打包插件](#24-打包插件)。 -查看输出日志: +### 2.4 打包插件 -```console -tail -f logs/eventmesh.out +`installPlugin` 任务会将构建完毕的插件复制到 `dist` 目录中: + +```shell +./gradlew installPlugin ``` -![runtime_3](/images/install/runtime_3.png) +EventMesh 会根据 `eventmesh.properties` 中的配置,加载 `plugin` 目录下的插件。 -## 2 远程部署 +构建成功后,项目根目录下的 `dist` 目录即为 EventMesh 的二进制文件目录。配置与启动请参考 [部署二进制发行版](#1-部署二进制发行版)。 -### 2.1 依赖 +## 3. 从源代码启动 -- 建议使用 64 位操作系统,建议使用 Linux / Unix。 +### 3.1 依赖 -- 64 位 JDK 1.8 或 JDK 11 +- 建议使用 64 位的 Linux / Unix 系统 +- 64 位 JDK 8 或 JDK 11 +- [Gradle](https://docs.gradle.org/current/userguide/installation.html) 7.0+(可选),本文档中给出的构建命令使用 Gradle Wrapper,无需用户自行配置 Gradle 环境。您也可以于 `gradle/wrapper/gradle-wrapper.properties` 文件中查看您使用的 EventMesh 版本所推荐的 Gradle 版本,使用您本机的 Gradle 编译。 +- 推荐使用 IDE(集成开发环境)导入 EventMesh。推荐使用`Intellij IDEA`作为 IDE。 -- Gradle 7.0+, 可于 `gradle/wrapper/gradle-wrapper.properties` 文件中查看当前版本推荐的 Gradle 版本。 +### 3.2 下载 -### 2.2 下载 +从 GitHub 拉取代码: + +```shell +git clone https://github.com/apache/eventmesh.git +cd eventmesh/ +``` -在 [EventMesh download](https://eventmesh.apache.org/download) 页面选择 1.5.0 版本的 Binary Distribution 进行下载,您将获得`apache-eventmesh-1.9.0-bin.tar.gz`。 +您也可以从 [EventMesh Download](https://eventmesh.apache.org/download) 下载 Source Code 源代码发行版并解压: -```console -# 解压 -tar -xvzf apache-eventmesh-1.9.0-bin.tar.gz -cd apache-eventmesh-1.9.0 +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-source.tar.gz +tar -xvzf apache-eventmesh-1.10.0-source.tar.gz +cd apache-eventmesh-1.10.0-src/ ``` -### 2.3 部署 +### 3.3 项目结构说明 -编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 +| 主要模块 | 描述 | +| ------------------------ | ------------------------------------------------------------ | +| eventmesh-starter | 本地运行 EventMesh 项目的入口 | +| eventmesh-runtime | EventMesh Runtime 运行时模块 | +| eventmesh-connectors | 用于连接事件源与事件汇的 [Connector](../design-document/03-connect/00-connectors.md),支持[多种服务和平台](../roadmap.md#连接器实现状态) | +| eventmesh-storage-plugin | EventMesh Runtime 的[事件存储](../roadmap.md#事件存储实现状态)插件 | +| eventmesh-sdks | EventMesh 的多语言客户端 SDK,包括 Java、Go、C、Rust 等 | +| eventmesh-examples | SDK 使用示例 | +| eventmesh-spi | EventMesh SPI 加载模块 | +| eventmesh-common | 公共类与方法模块 | -```console -vim conf/eventmesh.properties -``` +> 插件模块遵循 EventMesh 定义的 SPI 规范,自定义的 SPI 接口需要使用注解 `@EventMeshSPI` 标识。 +> +> 插件实例需要在对应模块中的 `/main/resources/META-INF/eventmesh` 下配置相关接口与实现类的映射文件,文件名为 SPI 接口的全限定类名。 +> +> 文件内容为插件实例名到插件实例的映射,具体可以参考 `eventmesh-storage-rocketmq` 插件模块。 -执行 `start.sh` 脚本启动 EventMesh Runtime 服务器。 +### 3.4 插件说明 -```console -bash bin/start.sh +#### 3.4.1 安装插件 + +EventMesh 具有 SPI 机制,使 EventMesh 能够发现并加载插件。有两种方式安装插件: + +- Classpath 加载:本地开发时可以通过在 `eventmesh-starter` 模块的 `build.gradle` 中添加依赖,例如添加 Kafka Storage Plugin: + +```gradle +dependencies { + implementation project(":eventmesh-runtime") + // 示例:加载 Kafka Storage Plugin + implementation project(":eventmesh-storage-plugin:eventmesh-storage-kafka") +} ``` -如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 +- 文件加载:通过将插件安装到插件目录,EventMesh 在运行时会根据条件自动加载插件目录下的插件。请参考 [2.3 构建](#23-构建) 和 [2.4 打包插件](#24-打包插件)。 + +>当您对源代码作出更改后,建议在 [2.3 构建](#23-构建) 给出的命令中添加`build`任务,以重新编译和运行单元测试。如: +> +>```shell +>./gradlew clean build dist -x spotlessJava -x generateGrammarSource --parallel --daemon +>``` -![runtime_6](/images/install/runtime_6.png) +#### 3.4.2 使用插件 -查看输出日志: +EventMesh 会默认加载 `dist/plugin` 目录下的插件,可以通过`-DeventMeshPluginDir=your_plugin_directory`来改变插件目录。运行时需要使用的插件实例可以在 +`confPath`目录下面的`eventmesh.properties`中进行配置。例如通过以下设置声明使用 RocketMQ 作为 Event Store: -```console -cd /root/apache-eventmesh-1.9.0/logs -tail -f eventmesh.out +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq ``` -![runtime_7](/images/install/runtime_7.png) +### 3.5 配置 VM 参数 -停止: - -```console -bash bin/stop.sh +```properties +-Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml +-Deventmesh.log.home=eventmesh-runtime/logs +-Deventmesh.home=eventmesh-runtime +-DconfPath=eventmesh-runtime/conf ``` -![runtime_8](/images/install/runtime_8.png) +如果操作系统为 Windows,需要将斜杠替换为反斜杠`\`。 -![runtime_9](/images/install/runtime_9.png) \ No newline at end of file +### 3.6 启动 + +运行`eventmesh-starter`模块下`org.apache.eventmesh.starter.StartUp`类的`main()`方法即可启动 EventMesh Runtime。 + +### 3.7 停止 + +控制台打印以下日志时,EventMesh Runtime 已停止。 + +```log +DEBUG StatusConsoleListener Shutdown hook enabled. Registering a new one. +WARN StatusConsoleListener Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger +``` diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/04-runtime-with-docker.md index 8c207ade90..c7fd3dc209 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/04-runtime-with-docker.md @@ -1,20 +1,20 @@ -# 使用 Docker 快速入门 EventMesh(暂时只支持到 1.4.0 版本) +# EventMesh Runtime Docker 快速开始 -本篇快速入门将详细介绍使用 docker 部署 EventMesh,以 RocketMQ 作为对接的中间件。 +您可以使用 Docker 部署 EventMesh Runtime。本文将以 RocketMQ 事件存储为例,您也可以选择其它 [EventMesh 支持的事件存储](../roadmap.md#事件存储实现状态)。 ## 1. 前提 -1. 建议使用 64 位的 Linux 系统; -2. 请预先安装 Docker Engine。Docker 的安装过程可以参考 [docker 官方文档](https://docs.docker.com/engine/install/); -3. 建议掌握基础的 docker 概念和命令行,例如注册中心、挂载等等。不过这不是必须的,因为本次操作所需的命令都已为您列出; -4. 若您选择非 standalone 模式,请确保 [RocketMQ 已成功启动](https://rocketmq.apache.org/docs/quick-start/) 并且可以使用 ip 地址访问到;若您选择 standalone 模式,则无需启动 RocketMQ。 +1. 建议使用 64 位的 Linux / Unix 系统。 +2. 请预先安装 Docker Engine。Docker 的安装过程可以参考 [Docker 官方文档](https://docs.docker.com/engine/install/)。 +3. 建议掌握基础的 Docker 概念和命令行,例如注册中心、挂载等等。不过这不是必须的,因为本次操作所需的命令都已为您列出。 +4. 若您选择非 standalone 模式,请确保 [RocketMQ 已成功启动](https://rocketmq.apache.org/docs/quick-start/) 并且可以使用 IP 地址访问到;若您保持默认的 standalone 模式,则无需启动 RocketMQ。 -## 2. 获取 EventMesh 镜像 +## 2. 获取 EventMesh Runtime 镜像 -首先,你可以打开一个命令行,并且使用下面的 `pull` 命令从 [Docker Hub](https://registry.hub.docker.com/r/eventmesh/eventmesh/tags) 中下载 [最新发布的 EventMesh](https://eventmesh.apache.org/events/release-notes/v1.3.0/) 。 +首先,您可以打开一个命令行,并且使用下面的 `pull` 命令从 [Docker Hub](https://hub.docker.com/r/apache/eventmesh/tags) 中下载 [最新版本的 EventMesh](https://eventmesh.apache.org/events/release-notes/) 。 ```shell -sudo docker pull eventmesh/eventmesh:v1.4.0 +sudo docker pull apache/eventmesh:latest ``` 您可以使用以下命令列出并查看本地已有的镜像。 @@ -27,131 +27,143 @@ sudo docker images ```shell $ sudo docker images -REPOSITORY TAG IMAGE ID CREATED SIZE -eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB +REPOSITORY TAG IMAGE ID CREATED SIZE +apache/eventmesh latest f32f9e5e4694 2 days ago 917MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) +## 3. 挂载配置文件 -## 3. 创建配置文件 +如果您使用 standalone 模式启动 EventMesh Runtime,并且没有自定义配置,可以跳转至下一步骤。 -在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:`eventMesh.properties` 和 `rocketmq-client.properties`。 - -首先,你需要使用下面的命令创建这两个文件。 +首先,在宿主机上创建 EventMesh 的配置文件目录。此目录可以自由指定: ```shell -sudo mkdir -p /data/eventmesh/rocketmq/conf -cd /data/eventmesh/rocketmq/conf -sudo touch eventmesh.properties -sudo touch rocketmq-client.properties +sudo mkdir -p /data/eventmesh/conf +cd /data/eventmesh/conf ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) -### 4. 配置 eventMesh.properties +### 3.1 EventMesh Runtime 配置 + +此配置文件中包含 EventMesh Runtime 环境和集成的插件的配置。 + +下载配置文件(替换下载链接中的`1.10.0`为您正在使用的版本): -这个配置文件中包含 EventMesh 运行时环境和集成进来的其他插件所需的参数。 +```shell +sudo wget https://raw.githubusercontent.com/apache/eventmesh/1.10.0-prepare/eventmesh-runtime/conf/eventmesh.properties +``` -使用下面的 `vim` 命令编辑 `eventmesh.properties`。 +编辑 `eventmesh.properties`: ```shell sudo vim eventmesh.properties ``` -你可以直接将 GitHub 仓库中的对应配置文件中的内容复制过来,链接为: 。 +指定事件存储为 RocketMQ: -请检查配置文件里的默认端口是否已被占用,如果被占用请修改成未被占用的端口: +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq +``` -| 属性 | 默认值 | 备注 | -|----------------------------|-------|----------------------------| -| eventMesh.server.http.port | 10105 | EventMesh http server port | -| eventMesh.server.tcp.port | 10000 | EventMesh tcp server port | -| eventMesh.server.grpc.port | 10205 | EventMesh grpc server port | +请检查配置文件里的默认端口是否已被占用,如果被占用,请修改为未被占用的端口: -### 5. 配置 rocketmq-client.properties +| 属性 | 默认值 | 备注 | +| -------------------------------- | ------ | ------------- | +| eventMesh.server.tcp.port | 10000 | TCP 监听接口 | +| eventMesh.server.http.port | 10105 | HTTP 监听接口 | +| eventMesh.server.grpc.port | 10205 | gRPC 监听接口 | +| eventMesh.server.admin.http.port | 10106 | HTTP 管理接口 | -这个配置文件中包含 RocketMQ nameserver 的信息。 +### 3.2 事件存储配置 -使用下面的 `vim` 命令编辑 `rocketmq-client.properties`。 +以 RocketMQ 为例,配置文件中包含连接 RocketMQ namesrv 所需的参数。 + +下载配置文件(替换下载链接中的`1.10.0`为您正在使用的版本): ```shell -sudo vim rocketmq-client.properties +sudo wget https://raw.githubusercontent.com/apache/eventmesh/1.10.0-prepare/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/resources/rocketmq-client.properties ``` -你可以直接将 GitHub 仓库中的对应配置文件中的内容复制过来,链接为: 。请注意,如果您正在运行的 namesetver 地址不是配置文件中的默认值,请将其修改为实际正在运行的 nameserver 地址。 - -请检查配置文件里的默认 namesrvAddr 是否已被占用,如果被占用请修改成未被占用的地址: +编辑 `rocketmq-client.properties`: -| 属性 | 默认值 | 备注 | -|---------------------------------------|-------------------------------|----------------------------------| -| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv default address | +```shell +sudo vim rocketmq-client.properties +``` -## 6. 运行 EventMesh +如果您正在运行的 namesrv 地址不是配置文件中的默认值,请将其修改为实际正在运行的 namesrv 地址。 -现在你就可以开始根据下载好的 EventMesh 镜像运行容器了。 +| 属性 | 默认值 | 备注 | +| ------------------------------------- | ----------------------------- | ------------------------ | +| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv address | -使用到的命令是 `docker run`,有以下两点内容需要格外注意。 +>如果您无法使用给出的链接下载配置文件,您可以在 EventMesh 二进制发行版的`conf`路径下找到所有的配置文件。 -1. 绑定容器端口和宿主机端口:使用 `docker run` 的 `-p` 选项。 -2. 将宿主机中的两份配置文件挂在到容器中:使用 `docker run` 的 `-v` 选项。 +## 4. 运行 EventMesh Runtime 容器 -综合一下,对应的启动命令为: +使用以下命令启动 EventMesh 容器: ```shell -sudo docker run -d \ - -p 10000:10000 -p 10105:10105 \ - -v /data/eventmesh/rocketmq/conf/eventMesh.properties:/data/app/eventmesh/conf/eventMesh.properties \ - -v /data/eventmesh/rocketmq/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties \ - eventmesh/eventmesh:v1.4.0 +sudo docker run -d --name eventmesh -p 10000:10000 -p 10105:10105 -p 10205:10205 -p 10106:10106 -v /data/eventmesh/conf/eventmesh.properties:/data/app/eventmesh/conf/eventmesh.properties -v /data/eventmesh/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties -t apache/eventmesh:latest ``` -如果运行命令之后看到新输出一行字符串,那么运行 EventMesh 镜像的容器就启动成功了。 +`docker run`命令参数介绍: + +- `-p <宿主机端口>:<容器端口>`:绑定容器端口和宿主机端口。如果您修改过 EventMesh Runtime 配置中的默认端口,或者宿主机的端口已被占用,请相应地修改为您指定的端口。 + +- `-v <宿主机路径>:<容器路径>`:将宿主机中的配置文件挂载到容器中。如果您存放 EventMesh 配置文件的路径不是`/data/eventmesh/conf`,请修改宿主机路径为您指定的路径。如果您没有自定义配置文件,请删除此参数。 +- `--name eventmesh`:自定义的容器名称。此名称是唯一的。 +- `-t apache/eventmesh:latest`:容器使用的镜像。 -接下来,你可以使用下面的命令查看容器的状态。 +执行`docker run`命令后,将会返回容器的 ID。使用此命令查看所有正在运行的容器的状态: ```shell sudo docker ps ``` -如果成功的话,你会看到终端打印出了如下所示容器的信息,其中就有运行 EventMesh 镜像的容器。 +将会打印: ```shell -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +b7a1546ee96a apache/eventmesh:latest "bash bin/start.sh" 10 seconds ago Up 8 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105-10106->10105-10106/tcp, :::10105-10106->10105-10106/tcp, 0.0.0.0:10205->10205/tcp, :::10205->10205/tcp eventmesh ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) +如果 EventMesh Runtime 容器不在此命令打印的列表中,则代表容器未能成功启动。您可以使用以下命令查看启动时的日志(将`eventmesh`替换为您指定的容器名称或 ID): -从这个信息中可以看出,`container id` 是 `5bb6b6092672`,`name` 是 `eager_driscoll`,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 +```shell +sudo docker logs eventmesh +``` -## 7. 管理 EventMesh 容器 +## 5. 查看 EventMesh 日志 -在成功的运行了 EventMesh 容器后,你可以通过进入容器、查看日志、删除容器等方式管理容器。 +成功启动 EventMesh 容器后,您可以通过以下步骤查看 EventMesh Runtime 输出的日志,检查 EventMesh 的运行状态。 -**进入容器** 命令示例: +进入容器(将`eventmesh`替换为您指定的容器名称或 ID): ```shell -sudo docker exec -it [your container id or name] /bin/bash +sudo docker exec -it eventmesh /bin/bash ``` -在容器中 **查看日志** 命令示例: +查看日志: ```shell -cd ../logs -tail -f eventmesh.out +cd logs +tail -n 50 -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) +当日志输出`server state:RUNNING`,则代表 EventMesh Runtime 启动成功了。 -**删除容器** 命令示例: +## 6. 构建 EventMesh Runtime 镜像(可选) -```shell -sudo docker rm -f [your container id or name] -``` +EventMesh 基于 JDK8 开发,二进制发行版和容器镜像基于 JDK8 构建。 -![runtime_docker_5](/images/install/runtime_docker_5.png) +要在 JDK8 环境下运行容器,请在 EventMesh 源代码的项目根目录下执行: -## 8. 探索更多 +```shell +sudo docker build -t yourname/eventmesh:yourtag -f docker/Dockerfile_jdk8 . +``` -现在 EventMesh 已经通过容器运行了,你可以参考 [`eventmesh-examples` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 +如果您希望以 JDK11 作为容器的运行环境,则执行: -希望你享受这个过程并获得更多收获! +```shell +sudo docker build -t yourname/eventmesh:yourtag -f docker/Dockerfile_jdk11 . +``` diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/05-demo.md b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/05-demo.md index 935bf09e29..d25fc01dc7 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/05-demo.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/05-demo.md @@ -142,8 +142,7 @@ gradle 编译: ```shell cd apache-eventmesh-1.9.0-src/eventmesh-examples gradle clean dist - -cd ./dist/bin +cd dist/bin ``` ![demo_1](/images/install/demo_1.png) @@ -158,7 +157,7 @@ bash tcp_eventmeshmessage_sub.sh 打开对应 log 文件查看日志: -``` +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_pub.out ``` @@ -173,7 +172,7 @@ bash tcp_pub_eventmeshmessage.sh 打开对应 log 文件查看日志: -``` +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_sub.out ``` @@ -190,7 +189,7 @@ sh tcp_sub_eventmeshmessage_broadcast.sh 打开对应 log 文件查看日志: -``` +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_sub_broadcast.out ``` @@ -205,7 +204,7 @@ sh tcp_pub_eventmeshmessage_broadcast.sh 打开对应 log 文件查看日志: -``` +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_pub_broadcast.out ``` @@ -222,7 +221,7 @@ sh http_sub.sh 打开对应 log 文件查看日志: -``` +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_http_sub.out ``` @@ -237,7 +236,7 @@ sh http_pub_eventmeshmessage.sh 打开对应 log 文件查看日志: -``` +```shell cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_http_pub.out ``` diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/06-operator.md b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/06-operator.md index 748228c280..8f3ae3593c 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/06-operator.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/06-operator.md @@ -1,4 +1,4 @@ -# EventMesh与K8S集成 +# EventMesh 与 K8S 集成 ### 1. 依赖 @@ -6,47 +6,53 @@ docker golang (version 1.19) kubernetes (kubectl) -kubernetes和docker之间有一定的兼容性,请检查它们之间的版本兼容性,并下载相应的版本,以确保它们能一起正常工作。 +kubernetes 和 docker 之间有一定的兼容性,请检查它们之间的版本兼容性,并下载相应的版本,以确保它们能一起正常工作。 ``` ### 2. 启动 -进入eventmesh-operator目录。 -``` +进入 eventmesh-operator 目录。 + +```shell cd eventmesh-operator ``` -将CRD安装到k8s集群。 -``` +将 CRD 安装到 k8s 集群。 + +```shell make install # Uninstall CRDs from the K8s cluster make uninstall ``` -如果出现错误 eventmesh-operator/bin/controller-gen: No such file or directory -运行以下命令: -``` -# 如有必要,在本地下载controller-gen. +如果出现错误`eventmesh-operator/bin/controller-gen: No such file or directory`,运行以下命令: + +```shell +# 如有必要,在本地下载 controller-gen. make controller-gen -# 如有必要,在本地下载kustomize. +# 如有必要,在本地下载 kustomize. make kustomize ``` -查看crds信息: -``` -# 运行以下命令查看 crds 信息: +查看 crds 信息: + +``` shell +# 运行以下命令查看 crds 信息: kubectl get crds NAME CREATED AT connectors.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z runtimes.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z ``` -创建和删除CRs: -自定义资源对象位于: /config/samples -删除CR,只需将`create`替换为`delete`即可。 -``` -# 为eventmesh-runtime、eventmesh-connector-rocketmq创建CR,创建clusterIP可让eventmesh-runtime与其他组件通信。 +创建和删除 CRs: + +自定义资源对象位于:/config/samples + +删除 CR,只需将`create`替换为`delete`即可。 + +```shell +# 为 eventmesh-runtime、eventmesh-connector-rocketmq 创建 CR, 创建 clusterIP 可让 eventmesh-runtime 与其他组件通信。 make create #success: @@ -56,7 +62,7 @@ service/runtime-cluster-service created configmap/connector-rocketmq-config created connectors.eventmesh-operator.eventmesh/connector-rocketmq created -# 查看创建的service. +# 查看创建的 service. kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE runtime-cluster-service ClusterIP 10.109.209.72 10000/TCP 17s @@ -65,9 +71,9 @@ runtime-cluster-service ClusterIP 10.109.209.72 10000/TCP make delete ``` -运行eventmesh-operator创建pods -``` +运行 eventmesh-operator 创建 pods。 +```shell # run controller make run # log @@ -83,7 +89,7 @@ INFO connector Creating a new Connector StatefulSet. {"StatefulSet.Na INFO runtime Successful reconciliation! INFO connector Successful reconciliation! -# 成功启动pod后,运行以下命令查看pod。 +# 成功启动 pod 后,运行以下命令查看 pod。 kubectl get pods NAME READY STATUS RESTARTS AGE connector-rocketmq-0 1/1 Running 0 12m diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/instruction/07-faq.md b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/07-faq.md new file mode 100644 index 0000000000..3c315bb2a5 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/current/instruction/07-faq.md @@ -0,0 +1,41 @@ +# 常见问题 + +## 导入 Eclipse + +我们推荐使用 `Intellij IDEA` 进行开发,如果您希望使用 `Eclipse`,可以参考下面的步骤导入项目。 + +### 前提 + +- 64 位 JDK 1.8+ +- Gradle 7.0+,Eclipse 已安装 Gradle 插件 + +### 下载 + +```shell +git clone https://github.com/apache/eventmesh.git +``` + +### 项目编译环境 + +打开命令行终端,运行 `./gradlew cleanEclipse eclipse`。 + +### 配置修改 + +修改工程名称和 `settings.gradle` 配置文件参数、`rootProject.name` 参数一致 + +### 修改 eclipse.init 配置文件 + +配置 lombok,以 1.18.8 版本为例: + +``` +-javaagent:lombok-1.18.8.jar +-XBootclasspath/a:lombok-1.18.8.jar +``` + +### 202106 版本 Eclipse 配置 + +`eclipse.init` 增加配置参数:`--illegal-access=permit` + +### 导入 + +打开 Eclipse,导入 EventMesh 项目到 IDE 中。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/roadmap.md b/i18n/zh/docusaurus-plugin-content-docs/current/roadmap.md index 90583d4766..733aeee43e 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/roadmap.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/roadmap.md @@ -4,7 +4,7 @@ sidebar_position: 1 # EventMesh 产品路线图 -下表列出了 EventMesh 的新特性和 bug 修复情况,详情请参考 [Release Notes](https://eventmesh.apache.org/events/release-notes/v1.9.0/)。 +下表列出了 EventMesh 的新特性和 Bug 修复情况,详情请参考 [Release Notes](https://eventmesh.apache.org/events/release-notes/v1.10.0/)。 ## List of Features and Milestones @@ -44,3 +44,49 @@ sidebar_position: 1 | Planned | Rust SDK | [GitHub Issue](https://github.com/apache/eventmesh/issues/815) | | Planned | WebAssembly Runtime | [GitHub Issue](https://github.com/apache/eventmesh/issues/576) | | Planned | Filter Chain | [GitHub Issue](https://github.com/apache/eventmesh/issues/664) | + +## 连接器实现状态 + +| 服务和中间件 | 源 | 汇 | +|:------------------------------------------:|:------:|:------:| +| [RocketMQ](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-rocketmq) | ✅ | ✅ | +| [Kafka](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-kafka) | ✅ | ✅ | +| [Pulsar](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pulsar) | ✅ | ✅ | +| [RabbitMQ](./design-document/connect/rabbitmq-connector) | ✅ | ✅ | +| [HTTP](./design-document/connect/http-connector) | ✅ | ⬜ | +| [JDBC](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-jdbc) | ⬜ | ✅ | +| [Spring](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-spring) | ✅ | ✅ | +| [OpenFunction](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-openfunction) | ✅ | ✅ | +| [文件](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-file) | ✅ | ✅ | +| 邮件 | ⬜ | ⬜ | +| [Redis](./design-document/connect/redis-connector) | ✅ | ✅ | +| [S3 存储](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-s3) | ⬜ | ✅ | +| ClickHouse | ⬜ | ⬜ | +| [MongoDB](./design-document/connect/mongodb-connector) | ✅ | ✅ | +| [Prometheus](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-prometheus) | ✅ | ⬜ | +| [Knative](./design-document/connect/knative-connector) | ✅ | ✅ | +| [Pravega](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pravega) | ✅ | ✅ | +| 更多连接器正在计划中 ... | N/A | N/A | + +| 平台和产品 | 源 | 汇 | +|:------------------------------------------:|:------:|:------:| +| [飞书/Lark](./design-document/connect/lark-connector) | ⬜ | ✅ | +| [钉钉](./design-document/connect/dingtalk-connector) | ⬜ | ✅ | +| [企业微信](./design-document/connect/wecom-connector) | ⬜ | ✅ | +| [微信](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-wechat) | ⬜ | ✅ | +| GitHub | ⬜ | ⬜ | +| ChatGPT | ⬜ | ⬜ | +| [Slack](./design-document/connect/slack-connector) | ⬜ | ✅ | +| 更多连接器正在计划中 ... | N/A | N/A | + +## 事件存储实现状态 + +| 服务和中间件 | 接入 | Topic 管理 | +|:------------------------------------------:|:------:|:------:| +| RocketMQ | ✅ | ✅ | +| Kafka | ✅ | ✅ | +| Standalone | ✅ | ✅ | +| Pulsar | ✅ | ⬜ | +| RabbitMQ | ✅ | ⬜ | +| Redis | ✅ | ⬜ | +| 支持实现更多事件存储 ... | N/A | N/A | diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sdk-java/01-intro.md b/i18n/zh/docusaurus-plugin-content-docs/current/sdk-java/01-intro.md index ea3838abab..c50dad549a 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sdk-java/01-intro.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sdk-java/01-intro.md @@ -12,9 +12,9 @@ EventMesh Java SDK 是在一个 Java 应用中集成 EventMesh 所需的 Java ​ 使用 Gradle 安装 EventMesh Java SDK,您需要在模块的 `build.gradle` 文件的依赖块中将 `org.apache.eventmesh:eventmesh-sdk-java` 声明为 `implementation`。 -```groovy +```gradle dependencies { - implementation 'org.apache.eventmesh:eventmesh-sdk-java:1.9.0' + implementation 'org.apache.eventmesh:eventmesh-sdk-java:1.10.0' } ``` @@ -28,7 +28,7 @@ dependencies { org.apache.eventmesh eventmesh-sdk-java - 1.9.0 + 1.10.0 ``` diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.0.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.0.0/instruction/03-runtime.md index 02756b4c01..dca7754355 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.0.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.0.0/instruction/03-runtime.md @@ -106,8 +106,6 @@ cd apache-eventmesh-1.9.0-src/ gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - 编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 ```console @@ -143,14 +141,12 @@ gradle installPlugin ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) 查看输出日志: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 远程部署 @@ -187,16 +183,12 @@ bash bin/start.sh ``` 如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) - - 查看输出日志: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) 停止: @@ -204,5 +196,3 @@ tail -f eventmesh.out bash bin/stop.sh ``` -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.0.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.0.0/instruction/04-runtime-with-docker.md index f15bf57fb0..1209147418 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.0.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.0.0/instruction/04-runtime-with-docker.md @@ -1,13 +1,13 @@ -# 使用 Docker 快速入门 EventMesh(暂时只支持到1.4.0版本) +# 使用 Docker 快速入门 EventMesh(暂时只支持到 1.4.0 版本) 本篇快速入门将详细介绍使用 docker 部署 EventMesh,以 RocketMQ 作为对接的中间件。 ## 1. 前提 -1. 建议使用64位的 linux 系统; -2. 请预先安装 Docker Engine。 Docker 的安装过程可以参考 [docker 官方文档](https://docs.docker.com/engine/install/); +1. 建议使用 64 位的 linux 系统; +2. 请预先安装 Docker Engine。Docker 的安装过程可以参考 [docker 官方文档](https://docs.docker.com/engine/install/); 3. 建议掌握基础的 docker 概念和命令行,例如注册中心、挂载等等。不过这不是必须的,因为本次操作所需的命令都已为您列出; -4. 若您选择非standalone模式,请确保 [RocketMQ 已成功启动](https://rocketmq.apache.org/docs/quick-start/) 并且可以使用 ip 地址访问到;若您选择standalone模式,则无需启动 RocketMQ 。 +4. 若您选择非 standalone 模式,请确保 [RocketMQ 已成功启动](https://rocketmq.apache.org/docs/quick-start/) 并且可以使用 ip 地址访问到;若您选择 standalone 模式,则无需启动 RocketMQ。 ## 2. 获取 EventMesh 镜像 @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -77,9 +74,9 @@ sudo vim eventmesh.properties sudo vim rocketmq-client.properties ``` -你可以直接将 GitHub 仓库中的对应配置文件中的内容复制过来,链接为: 。请注意,如果您正在运行的 namesetver 地址不是配置文件中的默认值,请将其修改为实际正在运行的nameserver地址。 +你可以直接将 GitHub 仓库中的对应配置文件中的内容复制过来,链接为: 。请注意,如果您正在运行的 namesetver 地址不是配置文件中的默认值,请将其修改为实际正在运行的 nameserver 地址。 -请检查配置文件里的默认namesrvAddr是否已被占用,如果被占用请修改成未被占用的地址: +请检查配置文件里的默认 namesrvAddr 是否已被占用,如果被占用请修改成未被占用的地址: | 属性 | 默认值 | 备注 | |---------------------------------------|-------------------------------|----------------------------------| @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - **删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.1.1/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.1.1/instruction/03-runtime.md index 02756b4c01..dca7754355 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.1.1/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.1.1/instruction/03-runtime.md @@ -106,8 +106,6 @@ cd apache-eventmesh-1.9.0-src/ gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - 编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 ```console @@ -143,14 +141,12 @@ gradle installPlugin ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) 查看输出日志: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 远程部署 @@ -187,16 +183,12 @@ bash bin/start.sh ``` 如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) - - 查看输出日志: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) 停止: @@ -204,5 +196,3 @@ tail -f eventmesh.out bash bin/stop.sh ``` -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.1.1/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.1.1/instruction/04-runtime-with-docker.md index f15bf57fb0..d1bc8a70f7 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.1.1/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.1.1/instruction/04-runtime-with-docker.md @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - -**删除容器** 命令示例: +**删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0.json b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0.json index 13166fff17..2b4dd5f7af 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0.json +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0.json @@ -26,5 +26,9 @@ "sidebar.tutorialSidebar.category.Observability": { "message": "可观测性", "description": "The label for category Observability in sidebar tutorialSidebar" + }, + "sidebar.tutorialSidebar.category.Connect": { + "message": "连接器", + "description": "The label for category Connect in sidebar tutorialSidebar" } } diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/01-runtime-protocol.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/01-runtime-protocol.md index 66615e53aa..ce0e6ac800 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/01-runtime-protocol.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/01-runtime-protocol.md @@ -5,17 +5,17 @@ **消息组成详解:** ``` -魔术字:9位,当前值为“EventMesh” +魔术字:9 位,当前值为“EventMesh” -通信协议版本号:4位,当前值为“0000” +通信协议版本号:4 位,当前值为“0000” -消息总长度值(length):4位,int类型 +消息总长度值 (length):4 位,int 类型 -消息头长度值(headerLength):4位,int类型 +消息头长度值 (headerLength):4 位,int 类型 -消息头(header):长度 = headerLength +消息头 (header):长度 = headerLength -消息体(body):长度 = length - headerLength - 4 - 4 +消息体 (body):长度 = length - headerLength - 4 - 4 ``` #### 2. 业务逻辑层 @@ -31,7 +31,6 @@ public class Package { private Object body; } - public class Header { private Command cmd; @@ -43,11 +42,11 @@ public class Header { + 详解 -消息头(header):类型为Header,Header中有Command字段,用于区分不同的消息类型 +消息头 (header):类型为 Header,Header 中有 Command 字段,用于区分不同的消息类型 -消息体(body):对于不同的消息类型,body的类型不同 +消息体 (body):对于不同的消息类型,body 的类型不同 -| 消息命令字 | body类型 | +| 消息命令字 | body 类型 | | ------------------------------------------------------------ | ------------ | | HEARTBEAT_REQUEST, HEARTBEAT_RESPONSE, HELLO_RESPONSE, CLIENT_GOODBYE_REQUEST, CLIENT_GOODBYE_RESPONSE, SERVER_GOODBYE_REQUEST, SERVER_GOODBYE_RESPONSE, LISTEN_REQUEST, LISTEN_RESPONSE, UNSUBSCRIBE_REQUEST, SUBSCRIBE_RESPONSE, UNSUBSCRIBE_RESPONSE, ASYNC_MESSAGE_TO_SERVER_ACK, BROADCAST_MESSAGE_TO_SERVER_ACK | 无 | | HELLO_REQUEST | UserAgent | @@ -55,81 +54,81 @@ public class Header { | REQUEST_TO_SERVER, REQUEST_TO_CLIENT, RESPONSE_TO_SERVER, RESPONSE_TO_CLIENT, ASYNC_MESSAGE_TO_SERVER, ASYNC_MESSAGE_TO_CLIENT, BROADCAST_MESSAGE_TO_SERVER, BROADCAST_MESSAGE_TO_CLIENT, ASYNC_MESSAGE_TO_CLIENT_ACK, BROADCAST_MESSAGE_TO_CLIENT_ACK, RESPONSE_TO_CLIENT_ACK, REQUEST_TO_CLIENT_ACK | OpenMessage | | REDIRECT_TO_CLIENT | RedirectInfo | -#### 3. Client 与 Eventmesh-Runtime(Server)交互场景详解 +#### 3. Client 与 EventMesh Runtime(Server) 交互场景详解 ```java public enum Command { //心跳 - HEARTBEAT_REQUEST(0), //client发给server的心跳包 - HEARTBEAT_RESPONSE(1), //server回复client的心跳包 + HEARTBEAT_REQUEST(0), //client 发给 server 的心跳包 + HEARTBEAT_RESPONSE(1), //server 回复 client 的心跳包 //握手 - HELLO_REQUEST(2), //client发给server的握手请求 - HELLO_RESPONSE(3), //server回复client的握手请求 + HELLO_REQUEST(2), //client 发给 server 的握手请求 + HELLO_RESPONSE(3), //server 回复 client 的握手请求 //断连 - CLIENT_GOODBYE_REQUEST(4), //client主动断连时通知server - CLIENT_GOODBYE_RESPONSE(5), //server回复client的主动断连通知 - SERVER_GOODBYE_REQUEST(6), //server主动断连时通知client - SERVER_GOODBYE_RESPONSE(7), //client回复server的主动断连通知 + CLIENT_GOODBYE_REQUEST(4), //client 主动断连时通知 server + CLIENT_GOODBYE_RESPONSE(5), //server 回复 client 的主动断连通知 + SERVER_GOODBYE_REQUEST(6), //server 主动断连时通知 client + SERVER_GOODBYE_RESPONSE(7), //client 回复 server 的主动断连通知 //订阅管理 - SUBSCRIBE_REQUEST(8), //client发给server的订阅请求 - SUBSCRIBE_RESPONSE(9), //server回复client的订阅请求 - UNSUBSCRIBE_REQUEST(10), //client发给server的取消订阅请求 - UNSUBSCRIBE_RESPONSE(11), //server回复client的取消订阅请求 + SUBSCRIBE_REQUEST(8), //client 发给 server 的订阅请求 + SUBSCRIBE_RESPONSE(9), //server 回复 client 的订阅请求 + UNSUBSCRIBE_REQUEST(10), //client 发给 server 的取消订阅请求 + UNSUBSCRIBE_RESPONSE(11), //server 回复 client 的取消订阅请求 //监听 - LISTEN_REQUEST(12), //client发给server的启动监听请求 - LISTEN_RESPONSE(13), //server回复client的监听请求 + LISTEN_REQUEST(12), //client 发给 server 的启动监听请求 + LISTEN_RESPONSE(13), //server 回复 client 的监听请求 //RR - REQUEST_TO_SERVER(14), //client将RR请求发送给server - REQUEST_TO_CLIENT(15), //server将RR请求推送给client - REQUEST_TO_CLIENT_ACK(16), //client收到RR请求后ACK给server - RESPONSE_TO_SERVER(17), //client将RR回包发送给server - RESPONSE_TO_CLIENT(18), //server将RR回包推送给client - RESPONSE_TO_CLIENT_ACK(19), //client收到回包后ACK给server + REQUEST_TO_SERVER(14), //client 将 RR 请求发送给 server + REQUEST_TO_CLIENT(15), //server 将 RR 请求推送给 client + REQUEST_TO_CLIENT_ACK(16), //client 收到 RR 请求后 ACK 给 server + RESPONSE_TO_SERVER(17), //client 将 RR 回包发送给 server + RESPONSE_TO_CLIENT(18), //server 将 RR 回包推送给 client + RESPONSE_TO_CLIENT_ACK(19), //client 收到回包后 ACK 给 server //异步事件 - ASYNC_MESSAGE_TO_SERVER(20), //client将异步事件发送给server - ASYNC_MESSAGE_TO_SERVER_ACK(21), //server收到异步事件后ACK给client - ASYNC_MESSAGE_TO_CLIENT(22), //server将异步事件推送给client - ASYNC_MESSAGE_TO_CLIENT_ACK(23), //client收到异步事件后ACK给server + ASYNC_MESSAGE_TO_SERVER(20), //client 将异步事件发送给 server + ASYNC_MESSAGE_TO_SERVER_ACK(21), //server 收到异步事件后 ACK 给 client + ASYNC_MESSAGE_TO_CLIENT(22), //server 将异步事件推送给 client + ASYNC_MESSAGE_TO_CLIENT_ACK(23), //client 收到异步事件后 ACK 给 server //广播 - BROADCAST_MESSAGE_TO_SERVER(24), //client将广播消息发送给server - BROADCAST_MESSAGE_TO_SERVER_ACK(25), //server收到广播消息后ACK给client - BROADCAST_MESSAGE_TO_CLIENT(26), //server将广播消息推送给client - BROADCAST_MESSAGE_TO_CLIENT_ACK(27), //client收到广播消息后ACK给server + BROADCAST_MESSAGE_TO_SERVER(24), //client 将广播消息发送给 server + BROADCAST_MESSAGE_TO_SERVER_ACK(25), //server 收到广播消息后 ACK 给 client + BROADCAST_MESSAGE_TO_CLIENT(26), //server 将广播消息推送给 client + BROADCAST_MESSAGE_TO_CLIENT_ACK(27), //client 收到广播消息后 ACK 给 server //重定向指令 - REDIRECT_TO_CLIENT(30), //server将重定向指令推动给client + REDIRECT_TO_CLIENT(30), //server 将重定向指令推动给 client } ``` -#### 4. Client发起交互 +#### 4. Client 发起交互 -| 场景 | Client向Server发送消息命令字 | Server回复Client消息的命令字 | 说明 | +| 场景 | Client 向 Server 发送消息命令字 | Server 回复 Client 消息的命令字 | 说明 | | -------------- | ---------------------------- | ------------------------------- | ---- | | 握手 | HELLO_REQUEST | HELLO_RESPONSE | | | 心跳 | HEARTBEAT_REQUEST | HEARTBEAT_RESPONSE | | | 订阅 | SUBSCRIBE_REQUEST | SUBSCRIBE_RESPONSE | | | 取消订阅 | UNSUBSCRIBE_REQUEST | UNSUBSCRIBE_RESPONSE | | | 开始监听消息 | LISTEN_REQUEST | LISTEN_RESPONSE | | -| 发送RR请求 | REQUEST_TO_SERVER | RESPONSE_TO_CLIENT | | -| 发送RR回包 | RESPONSE_TO_SERVER | 无 | | +| 发送 RR 请求 | REQUEST_TO_SERVER | RESPONSE_TO_CLIENT | | +| 发送 RR 回包 | RESPONSE_TO_SERVER | 无 | | | 发送异步事件 | ASYNC_MESSAGE_TO_SERVER | ASYNC_MESSAGE_TO_SERVER_ACK | | | 发送广播事件 | BROADCAST_MESSAGE_TO_SERVER | BROADCAST_MESSAGE_TO_SERVER_ACK | | | 客户端主动断连 | CLIENT_GOODBYE_REQUEST | CLIENT_GOODBYE_RESPONSE | | -#### 5. Server发起交互 +#### 5. Server 发起交互 -| 场景 | Server向Client发送消息命令字 | Client回复Server消息命令字 | 说明 | +| 场景 | Server 向 Client 发送消息命令字 | Client 回复 Server 消息命令字 | 说明 | | ------------------ | ---------------------------- | ------------------------------- | ---- | -| 客户端接收RR请求 | REQUEST_TO_CLIENT | REQUEST_TO_CLIENT_ACK | | -| 客户端接收RR回包 | RESPONSE_TO_CLIENT | RESPONSE_TO_CLIENT_ACK | | +| 客户端接收 RR 请求 | REQUEST_TO_CLIENT | REQUEST_TO_CLIENT_ACK | | +| 客户端接收 RR 回包 | RESPONSE_TO_CLIENT | RESPONSE_TO_CLIENT_ACK | | | 客户端接收异步事件 | ASYNC_MESSAGE_TO_CLIENT | ASYNC_MESSAGE_TO_CLIENT_ACK | | | 客户端接收广播事件 | BROADCAST_MESSAGE_TO_CLIENT | BROADCAST_MESSAGE_TO_CLIENT_ACK | | | 服务端主动断连 | SERVER_GOODBYE_REQUEST | 无 | | @@ -138,7 +137,7 @@ public enum Command { #### 6. 消息类型 -+ 发送RR消息 ++ 发送 RR 消息 ![rr-msg](/images/design-document/sync-message.png) @@ -150,12 +149,12 @@ public enum Command { ![broadcast-msg](/images/design-document/broadcast-message.png) -## HTTP协议文档 +## HTTP 协议文档 -Java类`LiteMessage`的`content`字段表示一个特殊的协议,因此,如果您要使用eventmesh-sdk-java的http-client,则只需设计协议的`content`即可。`LiteMessage`组成如下: +Java 类`EventMeshMessage`的`content`字段表示一个特殊的协议,因此,如果您要使用 eventmesh-sdk-java 的 http-client,则只需设计协议的`content`即可。`EventMeshMessage`组成如下: ```java -public class LiteMessage { +public class EventMeshMessage { private String bizSeqNo; @@ -173,9 +172,9 @@ public class LiteMessage { #### 1. 消息发送方式与组成 -**消息发送方式**:POST方式 +**消息发送方式**:POST 方式 -**消息组成**:请求头(RequestHeader) + 请求体(RequestBody) +**消息组成**:请求头 (RequestHeader) + 请求体 (RequestBody) + 心跳消息 @@ -183,12 +182,12 @@ public class LiteMessage { | Key | 说明 | | -------- | ---------------- | -| Env | client所属环境 | -| Region | client所属区域 | -| Idc | client所属IDC | -| Dcn | client所在DCN | -| Sys | client所属子系统 | -| Pid | client进程号 | +| Env | client 所属环境 | +| Region | client 所属区域 | +| Idc | client 所属 IDC | +| Dcn | client 所在 DCN | +| Sys | client 所属子系统 | +| Pid | client 进程号 | | Ip | client Ip | | Username | client 用户名 | | Passwd | client 密码 | @@ -201,7 +200,7 @@ public class LiteMessage { | Key | 说明 | | ----------------- | ------------------------------ | | clientType | 客户端类型 | -| heartbeatEntities | 心跳实体,包含topic、url等信息 | +| heartbeatEntities | 心跳实体,包含 topic、url 等信息 | + 订阅消息: @@ -213,8 +212,8 @@ public class LiteMessage { | Key | 说明 | | ----- | ----------------- | -| topic | 客户端订阅的topic | -| url | topic对应的url | +| topic | 客户端订阅的 topic | +| url | topic 对应的 url | + 取消订阅消息: @@ -236,34 +235,34 @@ public class LiteMessage { | Key | 说明 | | -------- | ----------------------- | -| topic | 客户端请求的topic | -| content | 客户端发送的topic的内容 | +| topic | 客户端请求的 topic | +| content | 客户端发送的 topic 的内容 | | ttl | 客户端请求超时时间 | | bizSeqNo | 客户端请求业务流水号 | | uniqueId | 客户端请求消息唯一标识 | -#### 2. Client发起交互 +#### 2. Client 发起交互 -| 场景 | Client向Server发送消息请求码 | Server回复Client消息的响应码 | 说明 | +| 场景 | Client 向 Server 发送消息请求码 | Server 回复 Client 消息的响应码 | 说明 | | ------------ | ---------------------------- | --------------------------------------- | ---- | | 心跳 | HEARTBEAT(203) | SUCCESS(0)/EVENTMESH_HEARTBEAT_ERROR(19) | | | 订阅 | SUBSCRIBE(206) | SUCCESS(0)/EVENTMESH_SUBSCRIBE_ERROR(17) | | | 取消订阅 | UNSUBSCRIBE(207) | SUCCESS(0)/EVENTMESH_UNSUBSCRIBE_ERROR(18) | | | 发送异步事件 | MSG_SEND_ASYNC(104) | SUCCESS(0)/EVENTMESH_SEND_ASYNC_MSG_ERR(14) | | -#### 3. Server发起交互 +#### 3. Server 发起交互 -| 场景 | Server向Client发送消息请求码 | Client回复Server消息响应码 | 说明 | +| 场景 | Server 向 Client 发送消息请求码 | Client 回复 Server 消息响应码 | 说明 | | ------------------ | ---------------------------- | -------------------------- | ---------------------- | -| 客户端接收异步事件 | HTTP_PUSH_CLIENT_ASYNC(105) | retCode | retCode值为0时代表成功 | +| 客户端接收异步事件 | HTTP_PUSH_CLIENT_ASYNC(105) | retCode | retCode 值为 0 时代表成功 | ## gRPC 协议文档 #### 1. protobuf -在 `eventmesh-protocol-gprc` 模块有 Eventmesh gRPC 客户端的 protobuf 文件. the protobuf 文件路径是 `/src/main/proto/eventmesh-client.proto`. +在 `eventmesh-protocol-gprc` 模块有 EventMesh gRPC 客户端的 protobuf 文件。the protobuf 文件路径是 `/src/main/proto/eventmesh-client.proto`. -用gradle build 生成 gRPC 代码在 `/build/generated/source/proto/main`. 生成代码用于 `eventmesh-sdk-java` 模块. +用 gradle build 生成 gRPC 代码在 `/build/generated/source/proto/main`. 生成代码用于 `eventmesh-sdk-java` 模块。 #### 2. gRPC 数据模型 @@ -399,10 +398,10 @@ service PublisherService { ``` service ConsumerService { - # 所消费事件通过 HTTP Webhook推送事件 + # 所消费事件通过 HTTP Webhook 推送事件 rpc subscribe(Subscription) returns (Response); - # 所消费事件通过 TCP stream推送事件 + # 所消费事件通过 TCP stream 推送事件 rpc subscribeStream(Subscription) returns (stream SimpleMessage); rpc unsubscribe(Subscription) returns (Response); diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/02-https.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/02-https.md index 63b9a315db..5b6cfe9109 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/02-https.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/02-https.md @@ -1,32 +1,30 @@ # HTTPS -1.在eventmesh-runtime 中配置 +1. 在 eventmesh-runtime 中配置 ``` -eventMesh.properties (添加如下配置) +eventMesh.properties (添加如下配置) eventMesh.server.useTls.enabled=true // 默认值 false - config env varible -Dssl.server.protocol=TLSv1.1 // 默认值 TLSv1.1 --Dssl.server.cer=sChat2.jks // 把文件放到启动脚本start.sh 指定的conPath目录下 +-Dssl.server.cer=sChat2.jks // 把文件放到启动脚本 start.sh 指定的 conPath 目录下 -Dssl.server.pass=sNetty ``` -2.在eventmesh-sdk-java 中配置 +2. 在 eventmesh-sdk-java 中配置 ``` -// 创建producer +// 创建 producer LiteClientConfig eventMeshHttpClientConfig = new eventMeshHttpClientConfig(); ... -// 设置开启TLS +// 设置开启 TLS eventMeshHttpClientConfig.setUseTls(true); LiteProducer producer = new LiteProducer(eventMeshHttpClientConfig); - // 配置环境变量 -Dssl.client.protocol=TLSv1.1 // 默认值 TLSv1.1 --Dssl.client.cer=sChat2.jks // 把文件放到应用指定的conPath目录下 +-Dssl.client.cer=sChat2.jks // 把文件放到应用指定的 conPath 目录下 -Dssl.client.pass=sNetty ``` \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/03-cloudevents.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/03-cloudevents.md index fb9d163793..b446b903b4 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/03-cloudevents.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/03-cloudevents.md @@ -11,7 +11,7 @@ EventMesh 的用户非常渴望能得到对 CloudEvents 的支持。有许多理由使得用户倾向于使用集成了 CloudEvents 支持的 SDK: -- CloudEvents 是一种更为广泛接受和支持的描述事件的方式。目前,`eventmesh-sdk-java` 使用的是 `LiteMessage` 结构 +- CloudEvents 是一种更为广泛接受和支持的描述事件的方式。目前,`eventmesh-sdk-java` 使用的是 `EventMeshMessage` 结构 来描述事件,其标准化程度较低。 - CloudEvents 的 Java SDK 有更广泛的分发方式。比如,目前 EventMesh 的用户需要使用 SDK 的 tar 包,或对每个 EventMesh 的 发布版本从源码编译。有了 CloudEvents 的支持,用户可以更方便地通过 CloudEvents 的公开分发(比如,配置 Maven)来添加 @@ -92,7 +92,7 @@ EventMesh 的用户非常渴望能得到对 CloudEvents 的支持。有许多理 ##### 服务端订阅 - 更新 `EventMeshConsumer.subscribe()` -- 更新 `HandleMsgContext`, 将入参 `Message` 改为 `CloudEvent` +- 更新 `HandleMsgContext`,将入参 `Message` 改为 `CloudEvent` - 更新 `AsyncHttpPushRequest.tryHTTPRequest()` ## 附录 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/04-event-bridge.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/04-event-bridge.md index 0bacec2808..cb60956f21 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/04-event-bridge.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/04-event-bridge.md @@ -2,31 +2,31 @@ ![event-bridge](/images/eventmesh-bridge.png) -Event Bridge 可以支持跨mesh集群的消息投递,下面展示这一功能的详细设计与体验步骤 +Event Bridge 可以支持跨 mesh 集群的消息投递,下面展示这一功能的详细设计与体验步骤 ![event-bridge-detail](/images/design-document/event-bridge-detail.png) -> 注:在本地体验这一功能时需要启动两台eventmesh实例,同时要修改`eventmesh-runtime`目录下的`eventmesh.properties`文件中的端口配置,避免端口冲突。便于下文描述,event-bridge特性按照上图信息进行表述。 +> 注:在本地体验这一功能时需要启动两台 EventMesh 实例,同时要修改`eventmesh-runtime`目录下的`eventmesh.properties`文件中的端口配置,避免端口冲突。便于下文描述,event-bridge 特性按照上图信息进行表述。 ## 01 远程订阅 -**描述**:向cluster2 eventmesh发起远程订阅指令,cluster2 eventmesh收到指令后会携带订阅信息调用cluster1 eventmesh的本地订阅接口 +**描述**:向 cluster2 EventMesh 发起远程订阅指令,cluster2 EventMesh 收到指令后会携带订阅信息调用 cluster1 EventMesh 的本地订阅接口 **URL**: http://{cluster2 address}/eventmesh/subscribe/remote **请求方式**:POST -**请求参数:**application/json 格式 +**请求参数**:application/json 格式 | 参数名 | 类型 | 是否必填 | 说明 | | ------------- | ------ | -------- | ------------------------------------------------------------ | -| url | String | 是 | 标识订阅url信息,暂时无用,后续可移除,目前仅为强校验,实际会被(/eventmesh/bridge/publish)替换 | -| consumerGroup | String | 是 | 标识消费组信息,实际会被cluster2的eventmesh配置信息替换 | +| url | String | 是 | 标识订阅 url 信息,暂时无用,后续可移除,目前仅为强校验,实际会被(/eventmesh/bridge/publish)替换 | +| consumerGroup | String | 是 | 标识消费组信息,实际会被 cluster2 的 EventMesh 配置信息替换 | | topic | List | 是 | 标识订阅信息列表 | | mode | String | 是 | 标识消费模式,分为集群模式和广播模式 | -| topic | String | 是 | 标识订阅的topic | +| topic | String | 是 | 标识订阅的 topic | | type | String | 是 | 标识消费类型,分为同步和异步 | -| remoteMesh | String | 否 | 标识远程mesh地址,优先根据topic从注册中心获取,获取不到使用该字段替换 | +| remoteMesh | String | 否 | 标识远程 mesh 地址,优先根据 topic 从注册中心获取,获取不到使用该字段替换 | **请求样例:** @@ -47,21 +47,21 @@ Event Bridge 可以支持跨mesh集群的消息投递,下面展示这一功能 ## 02 本地订阅 -**描述**:向cluster2的EventMesh实例发起本地订阅指令,cluster2的EventMesh收到订阅指令后会启动本地监听从event store收下来的消息,并推送给订阅信息中的url。 +**描述**:向 cluster2 的 EventMesh 实例发起本地订阅指令,cluster2 的 EventMesh 收到订阅指令后会启动本地监听从 Event Store 收下来的消息,并推送给订阅信息中的 url。 **URL**: http://{cluster2 address}/eventmesh/subscribe/local **请求方式**:POST -**请求参数:**application/json 格式 +**请求参数**:application/json 格式 | 参数名 | 类型 | 是否必填 | 说明 | | ------------- | ------ | -------- | ------------------------------------ | -| url | String | 是 | 标识订阅url信息 | +| url | String | 是 | 标识订阅 url 信息 | | consumerGroup | String | 是 | 标识消费组信息 | | topic | List | 是 | 标识订阅信息列表 | | mode | String | 是 | 标识消费模式,分为集群模式和广播模式 | -| topic | String | 是 | 标识订阅的topic | +| topic | String | 是 | 标识订阅的 topic | | type | String | 是 | 标识消费类型,分为同步和异步 | **请求样例:** @@ -82,38 +82,38 @@ Event Bridge 可以支持跨mesh集群的消息投递,下面展示这一功能 ## 03 发送消息 -**描述**:向cluster1的EventMesh实例发送消息,cluster1的EventMesh收到消息后会发送到event store,再从event store收下来消息推送给cluster2的EventMesh url `/eventmesh/bridge/publish`。 +**描述**:向 cluster1 的 EventMesh 实例发送消息,cluster1 的 EventMesh 收到消息后会发送到 Event Store,再从 Event Store 收下来消息推送给 cluster2 的 EventMesh url `/eventmesh/bridge/publish`。 **URL**: http://{cluster1 address}/eventmesh/publish/TEST-TOPIC-HTTP-ASYNC **请求方式**:POST -**请求参数:**application/json 格式 +**请求参数**:application/json 格式 **请求样例:** ```json { - "name":"test", - "age":"19" + "name": "test", + "age": "19" } ``` -## 04远程去订阅 +## 04 远程去订阅 -**描述**:向cluster2的EventMesh实例发送去除订阅指令,cluster2的EventMesh收到指令后会发送cluster1的EventMesh,cluster1的EventMesh会本地执行去除订阅 +**描述**:向 cluster2 的 EventMesh 实例发送去除订阅指令,cluster2 的 EventMesh 收到指令后会发送 cluster1 的 EventMesh,cluster1 的 EventMesh 会本地执行去除订阅 **URL**: http://{cluster2 address}/eventmesh/unsubscribe/remote **请求方式**:POST -**请求参数:**application/json 格式 +**请求参数**:application/json 格式 | 参数名 | 类型 | 是否必填 | 说明 | | ------------- | ------ | -------- | ------------------------------------------------------------ | -| url | String | 是 | 标识要去除订阅url信息,暂时无用,后续可移除,目前仅为强校验,实际会被(/eventmesh/bridge/publish)替换 | -| consumerGroup | String | 是 | 标识要去除的消费组信息,实际会使用EventMesh cluster2的group信息替换 | -| topic | List | 是 | 标识订阅topic信息列表 | +| url | String | 是 | 标识要去除订阅 url 信息,暂时无用,后续可移除,目前仅为强校验,实际会被(/eventmesh/bridge/publish)替换 | +| consumerGroup | String | 是 | 标识要去除的消费组信息,实际会使用 EventMesh cluster2 的 group 信息替换 | +| topic | List | 是 | 标识订阅 topic 信息列表 | **请求样例:** @@ -127,21 +127,21 @@ Event Bridge 可以支持跨mesh集群的消息投递,下面展示这一功能 } ``` -## 05本地去订阅 +## 05 本地去订阅 -**描述**:向cluster2的EventMesh实例发送去除订阅指令,cluster2的EventMesh收到指令后会本地执行去除订阅 +**描述**:向 cluster2 的 EventMesh 实例发送去除订阅指令,cluster2 的 EventMesh 收到指令后会本地执行去除订阅 **URL**: http://{cluster2 address}/eventmesh/unsubscribe/local **请求方式**:POST -**请求参数:**application/json 格式 +**请求参数**:application/json 格式 | 参数名 | 类型 | 是否必填 | 说明 | | ------------- | ------ | -------- | ---------------------- | -| url | String | 是 | 标识要去除订阅url信息 | +| url | String | 是 | 标识要去除订阅 url 信息 | | consumerGroup | String | 是 | 标识要去除的消费组信息 | -| topic | List | 是 | 标识订阅topic信息列表 | +| topic | List | 是 | 标识订阅 topic 信息列表 | **请求样例:** diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/05-webhook.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/05-webhook.md index 9fb85a898b..20bf05ac74 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/05-webhook.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/05-webhook.md @@ -2,21 +2,26 @@ ## Webhook 使用流程 -### 第一步:在 eventmesh 配置 Webhook 相关信息并且启动 +### 第一步:在 EventMesh 配置 Webhook 相关信息并且启动 配置说明: ``` -# 是否启动Webhook admin服务 +# Webhook HTTP payload 监听端口 +eventMesh.server.http.port=10105 +# Webhook 配置管理端口 +eventMesh.server.admin.http.port=10106 + +# 是否启动 Webhook admin 服务 eventMesh.webHook.admin.start=true -# Webhook事件配置存储模式。目前只支持file与nacos +# Webhook 事件配置存储模式。目前只支持 file 与 nacos eventMesh.webHook.operationMode=file -# 文件存储模式的文件存放路径,如果写上#{eventMeshHome},在eventMesh根目录 +# 文件存储模式的文件存放路径,如果写上#{eventMeshHome},在 eventMesh 根目录 eventMesh.webHook.fileMode.filePath= #{eventMeshHome}/webhook -# nacos存储模式,配置命名规则是eventMesh.webHook.nacosMode.{nacos 原生配置key} 具体的配置请看 [nacos github api](https://github.com/alibaba/nacos/blob/develop/api/src/main/java/com/alibaba/nacos/api/SystemPropertyKeyConst.java) -## nacos的地址 +# nacos 存储模式,配置命名规则是 eventMesh.webHook.nacosMode.{nacos 原生配置 key} 具体的配置请看 [nacos github api](https://github.com/alibaba/nacos/blob/develop/api/src/main/java/com/alibaba/nacos/api/SystemPropertyKeyConst.java) +## nacos 的地址 eventMesh.webHook.nacosMode.serverAddr=127.0.0.1:8848 # Webhook CloudEvent 发送模式。与 eventMesh.connector.plugin.type 配置一样 @@ -30,7 +35,7 @@ eventMesh.webHook.producer.connector=standalone ```java /** * 厂商发送事件时调用的地址。[http or https]://[domain or IP]:[port]/webhook/[callbackPath] - * 在厂商的Webhook配置中需要填写完整url,比如:http://127.0.0.1:10504/webhook/test/event + * 在厂商的 Webhook 配置中需要填写完整 url,比如:http://127.0.0.1:10105/webhook/test/event * callbackPath 唯一 * manufacturer callback path */ @@ -84,8 +89,6 @@ eventMesh.webHook.producer.connector=standalone */ private String password; - - /** * 事件发送到那个 topic * roll out event name ,like topic to mq @@ -99,7 +102,7 @@ eventMesh.webHook.producer.connector=standalone private String dataContentType = "application/json"; /** - * cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) + * cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) * id of cloudEvent ,like uuid/manufacturerEventId */ private String cloudEventIdGenerateMode; @@ -128,7 +131,7 @@ contentType: application/json | userName | 用户名 | string | 否 | null | | password | 用户密码 | string | 否 | null | | cloudEventName | 事件名 | string | 是 | null | -| cloudEventIdGenerateMode | cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) | string | 否 | manufacturerEventId | +| cloudEventIdGenerateMode | cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) | string | 否 | manufacturerEventId | 例子: @@ -182,7 +185,7 @@ contentType: application/json | userName | 用户名 | string | 否 | null | | password | 用户密码 | string | 否 | null | | cloudEventName | 事件名() | string | 是 | null | -| cloudEventIdGenerateMode | cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) | string | 否 | manufacturerEventId | +| cloudEventIdGenerateMode | cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) | string | 否 | manufacturerEventId | #### 通过 manufacturer 查询 WebHookConfig 列表 @@ -224,7 +227,7 @@ contentType: application/json | userName | 用户名 | string | 否 | null | | password | 用户密码 | string | 否 | null | | cloudEventName | 事件名() | string | 是 | null | -| cloudEventIdGenerateMode | cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) | string | 否 | manufacturerEventId | +| cloudEventIdGenerateMode | cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) | string | 否 | manufacturerEventId | #### 更新接口 @@ -248,7 +251,7 @@ contentType: application/json | userName | 用户名 | string | 否 | null | | password | 用户密码 | string | 否 | null | | cloudEventName | 事件名 | string | 是 | null | -| cloudEventIdGenerateMode | cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) | string | 否 | manufacturerEventId | +| cloudEventIdGenerateMode | cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id) | string | 否 | manufacturerEventId | 例子: @@ -298,10 +301,9 @@ contentType: application/json ### 第四步:配置 cloudevent 的消费者 - ### 第五步:在厂商配置 Webhook 相关信息 -> 厂商操作请看[厂商 Webhook 操作说明](#厂商-Webhook-操作说明) +> 厂商操作请看 [厂商 Webhook 操作说明](#厂商-Webhook-操作说明) ## 厂商 Webhook 操作说明 @@ -309,11 +311,11 @@ contentType: application/json #### 第一步:进入对应的项目 -#### 第二步:点击setting +#### 第二步:点击 setting ![](/images/design-document/webhook/webhook-github-setting.png) -#### 第三步:点击Webhooks +#### 第三步:点击 Webhooks ![](/images/design-document/webhook/webhook-github-webhooks.png) @@ -321,7 +323,7 @@ contentType: application/json ![](/images/design-document/webhook/webhook-github-add.png) -#### 第五步: 填写webhook信息 +#### 第五步:填写 webhook 信息 ![](/images/design-document/webhook/webhook-github-info.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/06-workflow.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/06-workflow.md index 0eb2cc8a20..19d1302411 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/06-workflow.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/06-workflow.md @@ -8,37 +8,37 @@ ![Workflow Use Case](/images/design-document/workflow-use-case.jpg) -当每个微服务都在自己的事件通道上运行时,EventMesh在执行事件编排方面发挥着至关重要的作用。 +当每个微服务都在自己的事件通道上运行时,EventMesh 在执行事件编排方面发挥着至关重要的作用。 -我们使用 [CNCF Serverless工作流](https://serverlessworkflow.io/) 来描述此事件工作流编排。 +我们使用 [CNCF Serverless 工作流](https://serverlessworkflow.io/) 来描述此事件工作流编排。 -## CNCF Serverless工作流 +## CNCF Serverless 工作流 -CNCF Serverless工作流定义了一个厂商中立、开源和完全社区驱动的生态系统,用于定义和运行针对Serverless技术领域的基于DSL的工作流。 +CNCF Serverless 工作流定义了一个厂商中立、开源和完全社区驱动的生态系统,用于定义和运行针对 Serverless 技术领域的基于 DSL 的工作流。 -Serverless工作流定义了一种领域特定语言(DSL)来描述有状态和无状态的基于工作流的serverless函数和微服务编排。 +Serverless 工作流定义了一种领域特定语言(DSL)来描述有状态和无状态的基于工作流的 serverless 函数和微服务编排。 -详见[官方github](https://github.com/serverlessworkflow/specification) +详见 [官方 github](https://github.com/serverlessworkflow/specification) -## EventMesh工作流 +## EventMesh 工作流 -我们利用Serverless工作流DSL来描述EventMesh工作流。根据其规范,工作流由一系列用于描述控制流逻辑的工作流状态组成。目前,我们仅支持与事件相关的工作流状态。请参见[工作流DSL设计](#workflow-dsl-design-wip)中支持的状态。 +我们利用 Serverless 工作流 DSL 来描述 EventMesh 工作流。根据其规范,工作流由一系列用于描述控制流逻辑的工作流状态组成。目前,我们仅支持与事件相关的工作流状态。请参见 [工作流 DSL 设计](#workflow-dsl-design-wip) 中支持的状态。 `工作流状态`可以包含通用的`操作`,或在工作流执行期间应调用的服务/函数。这些`操作`可以引用可复用的`函数`定义(应如何调用这些函数/服务),还可以引用触发基于事件的服务调用的事件,以及要等待的事件,这些事件表示这种基于事件的服务调用完成。 -在EDA解决方案中,我们通常使用AsyncAPI定义事件驱动的微服务。Serverless工作流“函数”定义支持使用AsyncAPI定义调用语义。有关详细信息,请参见[Using Funtions for AsyncAPI Service](https://github.com/serverlessworkflow/specification/blob/main/specification.md#using-functions-for-async-api-service-invocations)。 +在 EDA 解决方案中,我们通常使用 AsyncAPI 定义事件驱动的微服务。Serverless 工作流“函数”定义支持使用 AsyncAPI 定义调用语义。有关详细信息,请参见 [Using Funtions for AsyncAPI Service](https://github.com/serverlessworkflow/specification/blob/main/specification.md#using-functions-for-async-api-service-invocations)。 ### AsyncAPI -AsyncAPI是一项开源计划,旨在改善事件驱动体系结构(EDA)的当前状态。我们的长期目标是让使用EDA和使用REST API一样容易。包括从文档到代码生成、发现到事件管理。现在应用于REST API的大多数流程也适用于事件驱动/异步API。 +AsyncAPI 是一项开源计划,旨在改善事件驱动体系结构(EDA)的当前状态。我们的长期目标是让使用 EDA 和使用 REST API 一样容易。包括从文档到代码生成、发现到事件管理。现在应用于 REST API 的大多数流程也适用于事件驱动/异步 API。 -详见[AsyncAPI官网](https://www.asyncapi.com/docs/guides) +详见 [AsyncAPI 官网](https://www.asyncapi.com/docs/guides) ### 工作流示例 在本示例中,我们构建了上面订单管理系统的事件驱动工作流。 -首先,我们需要为我们的微服务应用定义AsyncAPI。 +首先,我们需要为我们的微服务应用定义 AsyncAPI。 - 在线商店应用程序 @@ -180,45 +180,45 @@ events: ![Workflow Diagram](/images/design-document/workflow-diagram.png) -## EventMesh工作流引擎 +## EventMesh 工作流引擎 -在下面的体系结构图中, EventMesh目录, EventMesh工作流引擎 和 EventMesh Runtime在三个不同的处理器中运行。 +在下面的体系结构图中,EventMesh 目录,EventMesh 工作流引擎 和 EventMesh Runtime 在三个不同的处理器中运行。 ![Workflow Architecture](/images/design-document/workflow-architecture.jpg) 运行工作流的步骤如下: 1. 在环境中部署发布者和订阅者应用程序。 - 使用AsyncAPI描述应用程序API,生成asyncAPI yaml。 - 使用AsyncAPI在EventMesh目录中注册发布者和订阅者应用程序。 + 使用 AsyncAPI 描述应用程序 API,生成 asyncAPI yaml。 + 使用 AsyncAPI 在 EventMesh 目录中注册发布者和订阅者应用程序。 -2. 在EventMesh工作流引擎中注册Serverless工作流DSL。 +2. 在 EventMesh 工作流引擎中注册 Serverless 工作流 DSL。 -3. 工作流引擎从EventMesh目录查询发布服务器和订阅服务器的需要的工作流DSL`函数`。 +3. 工作流引擎从 EventMesh 目录查询发布服务器和订阅服务器的需要的工作流 DSL`函数`。 -4. 事件驱动App将事件发布到EventMesh Runtime触发工作流。EventMesh工作流引擎发布和订阅事件、编排事件。 +4. 事件驱动 App 将事件发布到 EventMesh Runtime 触发工作流。EventMesh 工作流引擎发布和订阅事件、编排事件。 ### EventMesh Catalog 设计 -EventMesh目录存储发布者、订阅者和通道元数据。由以下模块组成: +EventMesh 目录存储发布者、订阅者和通道元数据。由以下模块组成: -- AsyncAPI解析器 +- AsyncAPI 解析器 - 使用AsyncAPI社区提供的SDK ([tool list](https://www.asyncapi.com/docs/community/tooling)), - 解析并验证AsyncAPI yaml输入,并生成AsyncAPI定义。 + 使用 AsyncAPI 社区提供的 SDK ([tool list](https://www.asyncapi.com/docs/community/tooling)), + 解析并验证 AsyncAPI yaml 输入,并生成 AsyncAPI 定义。 -- 发布者, 通道, 订阅者模块 +- 发布者,通道,订阅者模块 - 从AsyncAPI定义存储发布者、订阅者和通道信息。 + 从 AsyncAPI 定义存储发布者、订阅者和通道信息。 -### EventMesh工作流引擎设计 +### EventMesh 工作流引擎设计 工作流引擎由以下模块组成: - 工作流解析器 - 使用Serverless Workflow社区提供的SDK([SDKs](https://github.com/serverlessworkflow/specification#sdks)), - 解析和验证工作流DSL输入,并生成工作流定义。 + 使用 Serverless Workflow 社区提供的 SDK([SDKs](https://github.com/serverlessworkflow/specification#sdks)), + 解析和验证工作流 DSL 输入,并生成工作流定义。 - 工作流模块 @@ -230,11 +230,11 @@ EventMesh目录存储发布者、订阅者和通道元数据。由以下模块 | 工作流状态 | 描述 | | --- | --- | - | Operation | 执行Actions中定义的AsyncAPI函数 | - | Event | 检查定义的事件是否匹配,如果匹配,执行定义的AsyncAPI函数 | - | Switch | 检查事件是否与事件条件匹配,并执行定义的AsyncAPI函数 | - | Parallel | 并行执行定义的AsyncAPI函数 | - | ForEach | 迭代输入集合并执行定义的AsyncAPI函数 | + | Operation | 执行 Actions 中定义的 AsyncAPI 函数 | + | Event | 检查定义的事件是否匹配,如果匹配,执行定义的 AsyncAPI 函数 | + | Switch | 检查事件是否与事件条件匹配,并执行定义的 AsyncAPI 函数 | + | Parallel | 并行执行定义的 AsyncAPI 函数 | + | ForEach | 迭代输入集合并执行定义的 AsyncAPI 函数 | - 行为模块 @@ -242,7 +242,7 @@ EventMesh目录存储发布者、订阅者和通道元数据。由以下模块 - 函数模块 - 通过在EventMesh Runtime中创建发布者和/或订阅者来管理AsyncAPI函数,并管理发布者/订阅者生命周期。 + 通过在 EventMesh Runtime 中创建发布者和/或订阅者来管理 AsyncAPI 函数,并管理发布者/订阅者生命周期。 | AsyncAPI 操作 | EventMesh Runtime | | --- | --- | @@ -251,9 +251,9 @@ EventMesh目录存储发布者、订阅者和通道元数据。由以下模块 - 事件模块 - 使用工作流DSL中定义的规则管理CloudEvent数据模型,包括事件过滤器、关联和转换。 + 使用工作流 DSL 中定义的规则管理 CloudEvent 数据模型,包括事件过滤器、关联和转换。 - 重试模块 - 管理事件发布到EventMesh Runtime的重试逻辑。 + 管理事件发布到 EventMesh Runtime 的重试逻辑。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-spi.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-spi.md index 5fb301f408..4b00610e02 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-spi.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-spi.md @@ -2,16 +2,16 @@ ## 介绍 -为了提高扩展性,EventMesh通过引入SPI(Service Provider Interface)机制,能够在运行时自动寻找扩展接口的具体实现类,动态加载。 -在EventMesh中,一切扩展点都利用SPI采用插件的实现方式,用户可以通过实现扩展接口,开发自定义的插件,在运行时通过简单的配置,声明式的选择所需要运行的插件。 +为了提高扩展性,EventMesh 通过引入 SPI(Service Provider Interface)机制,能够在运行时自动寻找扩展接口的具体实现类,动态加载。 +在 EventMesh 中,一切扩展点都利用 SPI 采用插件的实现方式,用户可以通过实现扩展接口,开发自定义的插件,在运行时通过简单的配置,声明式的选择所需要运行的插件。 -## eventmesh-spi模块 +## eventmesh-spi 模块 -SPI相关的代码位于eventmesh-spi模块下,其中主要包括EventMeshExtensionFactory, EventMeshSPI, ExtensionClassLoader这三个类。 +SPI 相关的代码位于 eventmesh-spi 模块下,其中主要包括 EventMeshExtensionFactory, EventMeshSPI, ExtensionClassLoader 这三个类。 ### EventMeshSPI -EventMeshSPI是SPI注解,所有需要采用SPI实现扩展的接口都需要使用@EventMeshSPI注解标记。 +EventMeshSPI 是 SPI 注解,所有需要采用 SPI 实现扩展的接口都需要使用@EventMeshSPI 注解标记。 ```java @Documented @@ -27,12 +27,12 @@ public @interface EventMeshSPI { } ``` -这么做的原因是可以通过注解的方式声明接口为SPI扩展接口,提高代码的可读性。同时,@EventMeshSPI注解中包含一个isSingleton属性, -用来声明该扩展接口是否采用单例的实现方式,如果为true,那么该接口的实现类将会使用单例的实现方式,在一个JVM进程中全局唯一。 +这么做的原因是可以通过注解的方式声明接口为 SPI 扩展接口,提高代码的可读性。同时,@EventMeshSPI 注解中包含一个 isSingleton 属性, +用来声明该扩展接口是否采用单例的实现方式,如果为 true,那么该接口的实现类将会使用单例的实现方式,在一个 JVM 进程中全局唯一。 ### EventMeshExtensionFactory -EventMeshExtensionFactory是SPI实现类的获取工厂,包含一个静态方法`getExtension(Class extensionType, String extensionName)`, +EventMeshExtensionFactory 是 SPI 实现类的获取工厂,包含一个静态方法`getExtension(Class extensionType, String extensionName)`, 接收扩展接口字节码对象和扩展实例名称,用于获取扩展接口的具体实现类。 ```java @@ -49,11 +49,11 @@ public enum EventMeshExtensionFactory { } ``` -所有需要获取扩展实现的地方都应该通过EventMeshExtensionFactory获取。 +所有需要获取扩展实现的地方都应该通过 EventMeshExtensionFactory 获取。 ### ExtensionClassLoader -ExtensionClassLoader是扩展接口实现类的加载接口,包含两个实现子类MetaInfExtensionClassLoader和JarExtensionClassLoader。 +ExtensionClassLoader 是扩展接口实现类的加载接口,包含两个实现子类 MetaInfExtensionClassLoader 和 JarExtensionClassLoader。 ```java /** @@ -76,13 +76,13 @@ public interface ExtensionClassLoader { } ``` -MetaInfExtensionClassLoader用于从classPath直接加载实现类,JarExtensionClassLoader用于从配置目录下通过加载Jar包的方式加载实现类,未来可能还会提供通过从Maven仓库下加载实现类。 +MetaInfExtensionClassLoader 用于从 classPath 直接加载实现类,JarExtensionClassLoader 用于从配置目录下通过加载 Jar 包的方式加载实现类,未来可能还会提供通过从 Maven 仓库下加载实现类。 -## SPI使用示例 +## SPI 使用示例 -下面以eventmesh-connector-plugin为例,介绍SPI具体的使用过程。 +下面以 eventmesh-connector-plugin 为例,介绍 SPI 具体的使用过程。 -首先定义一个eventmesh-connector-api模块,并且定义扩展接口MeshMQProducer。在MeshMQProducer接口上使用@EventMeshSPI注解进行声明,表明该接口是一个SPI扩展接口 +首先定义一个 eventmesh-connector-api 模块,并且定义扩展接口 MeshMQProducer。在 MeshMQProducer 接口上使用@EventMeshSPI 注解进行声明,表明该接口是一个 SPI 扩展接口 ```java @EventMeshSPI(isSingleton = false) @@ -91,7 +91,7 @@ public interface MeshMQProducer extends Producer { } ``` -eventmesh-connector-rocketmq模块中包含采用rocketmq的具体实现方式RocketMQProducerImpl。 +eventmesh-connector-rocketmq 模块中包含采用 rocketmq 的具体实现方式 RocketMQProducerImpl。 ```java public class RocketMQProducerImpl implements MeshMQProducer { @@ -99,7 +99,7 @@ public class RocketMQProducerImpl implements MeshMQProducer { } ``` -同时,还需要在eventmesh-connector-rocketmq模块中resource/META-INF/eventmesh目录下创建文件名为SPI接口全限定名的文件 +同时,还需要在 eventmesh-connector-rocketmq 模块中 resource/META-INF/eventmesh 目录下创建文件名为 SPI 接口全限定名的文件 org.apache.eventmesh.api.producer.Producer 文件内容为扩展实例名和对应的实例全类名 @@ -108,4 +108,4 @@ org.apache.eventmesh.api.producer.Producer rocketmq=org.apache.eventmesh.connector.rocketmq.producer.RocketMQProducerImpl ``` -至此,一个SPI扩展模块就完成了。在使用的时候只需要通过EventMeshExtensionFactory.getExtension(MeshMQProducer.class, “rocketmq”)就可以获取RocketMQProducerImpl实现类。 +至此,一个 SPI 扩展模块就完成了。在使用的时候只需要通过 EventMeshExtensionFactory.getExtension(MeshMQProducer.class, “rocketmq”) 就可以获取 RocketMQProducerImpl 实现类。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/02-tracing.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/02-tracing.md index 8a3addea6d..2611289645 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/02-tracing.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/02-tracing.md @@ -1,8 +1,8 @@ # 分布式追踪 -## OpenTelemetry概述 +## OpenTelemetry 概述 -OpenTelemetry是一组API和SDK的工具,您可以使用它来仪器化、生成、收集和导出遥测数据(指标、日志和追踪),以便进行分析,以了解您的软件性能和行为。 +OpenTelemetry 是一组 API 和 SDK 的工具,您可以使用它来仪器化、生成、收集和导出遥测数据(指标、日志和追踪),以便进行分析,以了解您的软件性能和行为。 ## 需求 @@ -72,7 +72,7 @@ EventMeshExporter eventMeshExporter = (EventMeshExporter) Class.forName(classNam spanExporter = eventMeshExporter.getSpanExporter(configuration); ``` -另外,这将包含try catch。如果无法成功获取指定的导出器,则将使用默认的日志导出器。 +另外,这将包含 try catch。如果无法成功获取指定的导出器,则将使用默认的日志导出器。 #### 不同导出器的改进 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/03-prometheus.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/03-prometheus.md index 0d796e7a67..effc07ba88 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/03-prometheus.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/03-prometheus.md @@ -4,17 +4,17 @@ 官网:https://prometheus.io/ -本地下载Prometheus:https://prometheus.io/download/ +本地下载 Prometheus:https://prometheus.io/download/ 选择自己电脑对应的版本下载并解压缩 -### 2、在prometheus.yml中添加配置 +### 2、在 prometheus.yml 中添加配置 -如果你是Prometheus的新手,可以直接复制eventmesh-runtime/conf/prometheus.yml替换 +如果你是 Prometheus 的新手,可以直接复制 eventmesh-runtime/conf/prometheus.yml 替换 -如果你十分了解Prometheus,可以自行配置,eventmesh默认的导出的端口为19090。 +如果你十分了解 Prometheus,可以自行配置,EventMesh 默认的导出的端口为 19090。 -ps:如果需要更换端口的话,请修改eventmesh-runtime/conf/eventmesh.properties中的 +ps:如果需要更换端口的话,请修改 eventmesh-runtime/conf/eventmesh.properties 中的 ```properties #prometheusPort @@ -23,14 +23,14 @@ eventMesh.metrics.prometheus.port=19090 ## 运行 Prometheus 和 EventMesh -双击Prometheus.exe运行 +双击 Prometheus.exe 运行 -运行eventmesh-starter(参考[eventmesh-runtime-quickstart](../../instruction/03-runtime.md)) +运行 eventmesh-starter(参考 [EventMesh Runtime QuickStart](../../instruction/03-runtime.md)) -运行eventmesh-example(参考[eventmesh-sdk-java-quickstart](../../instruction/05-demo.md)) +运行 eventmesh-example(参考 [eventmesh-sdk-java QuickStart](../../instruction/05-demo.md)) 打开浏览器访问:http://localhost:9090/ ### 输入想观察的 Metrics -输入’**eventmesh_**‘ 就会出现相关的指标的提示 +输入 `eventmesh_` 就会出现相关的指标的提示 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/04-zipkin.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/04-zipkin.md index 08f66eb3a5..1e7e86c4c3 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/04-zipkin.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/04-zipkin.md @@ -1,30 +1,26 @@ # 通过 Zipkin 观察 Trace -### 1、下载和运行Zipkin +### 1、下载和运行 Zipkin -请参考https://zipkin.io/pages/quickstart.html +请参考 https://zipkin.io/pages/quickstart.html +### 2、运行 EventMesh +运行 eventmesh-starter(参考 [eventmesh-runtime-quickstart](../../instruction/03-runtime.md)) -### 2、运行eventmesh - -运行eventmesh-starter(参考[eventmesh-runtime-quickstart](../../instruction/03-runtime.md)) - -运行eventmesh-example(参考[eventmesh-sdk-java-quickstart](../../instruction/05-demo.md)) - - +运行 eventmesh-example(参考 [eventmesh-sdk-java-quickstart](../../instruction/05-demo.md)) ### 3、相关的设置 -eventmesh-runtime/conf/eventmesh.properties中: +eventmesh-runtime/conf/eventmesh.properties 中: -默认的exporter是log,需要手动改成Zipkin +默认的 exporter 是 log,需要手动改成 Zipkin ```properties #trace exporter eventmesh.trace.exporter.type=Zipkin ``` -下面是关于Zipkin的各种配置 +下面是关于 Zipkin 的各种配置 ```properties #set the maximum batch size to use eventmesh.trace.exporter.max.export.size=512 @@ -40,10 +36,8 @@ eventmesh.trace.export.zipkin.ip=localhost eventmesh.trace.export.zipkin.port=9411 ``` -以上都是相关的配置,如果你十分熟悉Zipkin的话可以自行修改。 - - +以上都是相关的配置,如果你十分熟悉 Zipkin 的话可以自行修改。 ### 4、观察 -浏览器打开: **localhost:9411** +浏览器打开 `localhost:9411` diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/05-jaeger.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/05-jaeger.md index 3e04ac41fe..3edd5e710a 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/05-jaeger.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-observability/05-jaeger.md @@ -4,13 +4,13 @@ [Jaeger](https://www.jaegertracing.io/) 是 [Uber](https://uber.github.io/) 开发的分布式跟踪系统,现已成为 [CNCF](https://cncf.io/) 开源项目,其灵感来源于 Google 的 [Dapper](https://research.google.com/pubs/pub36356.html) 和 Twitter 的 [Zipkin](https://zipkin.io/),用于监控基于微服务的分布式系统。 -Jaeger 的安装可以参考[官方文档](https://www.jaegertracing.io/docs/latest/getting-started/),推荐使用官方的 Docker 镜像 `jaegertracing/all-in-one` 来快速搭建环境进行测试。 +Jaeger 的安装可以参考 [官方文档](https://www.jaegertracing.io/docs/latest/getting-started/),推荐使用官方的 Docker 镜像 `jaegertracing/all-in-one` 来快速搭建环境进行测试。 ## 配置 为了启用 EventMesh Runtime 的 trace exporter,请将 `conf/eventmesh.properties` 文件中的 `eventMesh.server.trace.enabled` 字段设置为 true。 -```conf +```properties # Trace plugin eventMesh.server.trace.enabled=true eventMesh.trace.plugin=jaeger @@ -18,7 +18,7 @@ eventMesh.trace.plugin=jaeger 为了定义 trace exporter 的行为,如超时时间或导出间隔,请编辑 `exporter.properties` 文件。 -```conf +```properties # Set the maximum batch size to use eventmesh.trace.max.export.size=512 # Set the queue size. This must be >= the export batch size @@ -31,7 +31,7 @@ eventmesh.trace.export.interval=5 为了将导出的 trace 数据发送到 Jaeger,请编辑 `conf/jaeger.properties` 文件中的 `eventmesh.trace.jaeger.ip` 和 `eventmesh.trace.jaeger.port` 字段,来匹配 Jaeger 服务器的配置。 -```conf +```properties # Jaeger's IP and Port eventmesh.trace.jaeger.ip=localhost eventmesh.trace.jaeger.port=14250 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-stream.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-stream.md index 20e6412f2a..4869638c79 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-stream.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/02-stream.md @@ -20,14 +20,14 @@ | 需求编号 | 需求描述 | 注释 | | -------------- | ----------------------- | -------- | -| F-1 | EventMesh用户应该能够在 EventMesh 中实现事件流功能 | 功能性 | -| F-2 | EventMesh用户可以为路由、过滤、转换等应用动态用户特定逻辑 | 功能性 | +| F-1 | EventMesh 用户应该能够在 EventMesh 中实现事件流功能 | 功能性 | +| F-2 | EventMesh 用户可以为路由、过滤、转换等应用动态用户特定逻辑 | 功能性 | ## 设计细节 我们引入了 EventMesh Stream 组件,允许我们在 Apache Camel 中本地使用来自 Spring Cloud Stream 的编程模型和绑定器抽象。 -[Spring-Cloud-Stream](https://spring.io/projects/spring-cloud-stream) Spring Cloud Stream是一个用于构建 +[Spring-Cloud-Stream](https://spring.io/projects/spring-cloud-stream) Spring Cloud Stream 是一个用于构建 与共享消息传递系统连接的、高度可扩展的事件驱动微服务框架。 [Apache Camel](https://camel.apache.org/) Camel 是一个开源集成框架,使您能够快速轻松地集成各种消费或生产数据的系统。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/00-connectors.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/00-connectors.md new file mode 100644 index 0000000000..50e393a558 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/00-connectors.md @@ -0,0 +1,51 @@ +# 连接器简介 + +## 连接器类型 + +连接器是代表用户应用程序与特定外部服务或底层数据源(例如数据库)交互的镜像或实例。连接器的类型可以是源(Source)或汇(Sink)。 + +连接器通过 `main()` 作为一个独立服务运行。 + +## 数据源(Source 端) + +源连接器从底层数据生产者获取数据,并在原始数据被转换为 CloudEvents 后将其传递给目标。源连接器不限制源如何检索数据(例如,源可以从消息队列中获取数据,也可以充当等待接收数据的 HTTP 服务器)。 + +## 数据汇(Sink 端) + +汇连接器接收 CloudEvents 并执行特定的业务逻辑(例如,MySQL 的汇连接器从 CloudEvents 中提取有用的数据,并将其写入 MySQL 数据库)。 + +## CloudEvents + +CloudEvents 是一种以通用格式描述事件数据的规范,以提供服务、平台和系统之间的互操作性。 + +## 实现连接器 + +使用 [eventmesh-openconnect-java](https://github.com/apache/eventmesh/tree/master/eventmesh-openconnect/eventmesh-openconnect-java) 实现 Source/Sink 接口即可添加新的连接器。 + +## 技术方案 + +### 结构与处理流程 + +![source-sink connector architecture](../../../../../../static/images/design-document/connector-architecture.png) + +### 详细设计 + +![eventmesh-connect-detail](../../../../../../static/images/design-document/connector-design-detail.png) + +### 描述 + +#### Worker + +Worker 分为 Source Worker 与 Sink Worker,由`Application`类进行触发运行,分别实现了`ConnectorWorker`接口的方法,其中包含了 worker 的运行生命周期,worker 承载了 connector 的运行。Worker 可以通过镜像的方式轻量的独立运行,内部集成了 eventmesh-sdk-java 模块,采用 CloudEvents 协议与 EventMesh 进行交互,目前默认采用 TCP 客户端,后续可以考虑支持动态可配。 + +#### Connector + +Connector 分为 Source Connector 与 Sink Connector,connector 有各自的配置文件,以及独立运行的方式,通过 worker 进行反射加载与配置解析,完成 Connector 的初始化以及后续运行工作,其中 Source Connector 实现 poll 方法,Sink Connector 实现 put 方法,统一使用`ConnectorRecord`承载数据。Source Connector 与 Sink Connector 均可独立运行。 + +#### ConnectorRecord with CloudEvents + +`ConnectorRecord`为 connector 层数据协议,当 worker 与 EventMesh 进行交互时需开发协议适配器进行`ConnectorRecord`到 CloudEvents 的协议转换。 + +#### Registry + +`Registry`模块负责存储同步不同 Connector 实例的数据的同步进度,确保多个 Connector 镜像或实例之间的高可用。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/01-rabbitmq-connector.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/01-rabbitmq-connector.md new file mode 100644 index 0000000000..b2c46aa68c --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/01-rabbitmq-connector.md @@ -0,0 +1,42 @@ +# RabbitMQ + +## RabbitMQSinkConnector:从 EventMesh 到 RabbitMQ + +1. 启动你的 RabbitMQ 和 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 启动你的 RabbitMQConnectorServer,它将订阅到 EventMesh Runtime 中 `pubSubConfig.subject` 中定义的主题,并将数据发送到 RabbitMQ 中的 `connectorConfig.queueName`。 +4. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息,然后你将在 RabbitMQ 中接收到该消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: rabbitmqSink + appId: 5031 + userName: rabbitmqSinkUser + passWord: rabbitmqPassWord +connectorConfig: + connectorName: rabbitmqSink + host: your.rabbitmq.server + port: 5672 + username: coyrqpyz + passwd: passwd + virtualHost: coyrqpyz + exchangeType: TOPIC + # 使用内置的 exchangeName 或在连接到 RabbitMQ 后创建新的 exchangeName。 + exchangeName: amq.topic + # 如果在连接之前不存在,RabbitMQ 将自动创建 routingKey 和 queueName。 + routingKey: eventmesh + queueName: eventmesh + autoAck: true +``` + +## RabbitMQSourceConnector:从 RabbitMQ 到 EventMesh + +1. 启动你的 RabbitMQ 和 EventMesh Runtime。 +2. 启用 sourceConnector 并检查 `source-config.yml`(与 sink-config.yml 基本相同)。 +3. 启动你的 RabbitMQConnectorServer,它将订阅到 RabbitMQ 中的 `connectorConfig.queueName`,并将数据发送到 EventMesh Runtime 中的 `pubSubConfig.subject`。 +4. 向队列发送一个 CloudEvent 消息,然后你将在 EventMesh 中接收到该消息。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/02-http-connector.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/02-http-connector.md new file mode 100644 index 0000000000..95287d5c9e --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/02-http-connector.md @@ -0,0 +1,67 @@ +# HTTP + +## HTTP Source Connector + +### 配置 + +使用 HTTP source connector 前,需要进行 server 的配置。 +- 请在 `/resource/server-config.yml` 中配置 `sourceEnable`为`true` 以开启 source 功能。 +- 请在 `/resource/source-config.yml`中配置 source connector, 在此仅说明 `connectorConfig` 下的配置: + - `connectorName`, connector 的名称 + - (必需) `path`, 接口的路径 + - (必需) `port`, 接口的端口 + - `idleTimeout`, 空闲 TCP 连接超时时间,单位为秒。超过 `idleTimeout` 秒没有进行数据接收或发送的连接将会发生超时并被关闭。默认为 0, 不会发生超时。 + +### 启动 + +1. 启动 EventMesh Runtime +2. 启动 eventmesh-connector-http + +完成后,HTTP source connector 会作为一个 HTTP 服务器对外提供服务。 + +### 发送消息 + +你可以通过 HTTP 向 source connector 发送消息。 + +```yaml +connectorConfig: + connectorName: httpSource + path: /test + port: 3755 + idleTimeout: 5 +``` + +上述的例子在`source-config.yml`中配置了一个 URL `http://localhost:3755/test`. + +你可以按照 [cloudevent-spec](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/http-protocol-binding.md) 中的规定,以`binary`模式或者`structured`模式发送消息。 + +这里是两个例子: + +以`binary`模式发送消息。 + +```shell +curl --location --request POST 'http://localhost:3755/test' \ +--header 'ce-id: 1' \ +--header 'ce-specversion: 1.0' \ +--header 'ce-type: com.example.someevent' \ +--header 'ce-source: /mycontext' \ +--header 'ce-subject: test_topic' \ +--header 'Content-Type: text/plain' \ +--data-raw 'testdata' +``` + +以`structured`模式发送消息。 + +```shell +curl --location --request POST 'http://localhost:3755/test' \ +--header 'Content-Type: application/cloudevents+json' \ +--data-raw '{ + "id": "1", + "specversion": "1.0", + "type": "com.example.someevent", + "source": "/mycontext", + "subject":"test_topic", + "datacontenttype":"text/plain", + "data": "testdata" +}' +``` \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/03-redis-connector.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/03-redis-connector.md new file mode 100644 index 0000000000..cf56c33b64 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/03-redis-connector.md @@ -0,0 +1,33 @@ +# Redis + +## RedisSinkConnector:从 EventMesh 到 Redis 的消息队列 + +1. 启动你的 Redis 实例和 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 启动你的 `RedisConnectServer`,它将订阅到 EventMesh Runtime 中 `pubSubConfig.subject` 中定义的主题,并将数据发送到 Redis 中的 `connectorConfig.topic`。 +4. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息,然后你将在 Redis 中接收到该消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: redisSink + appId: 5031 + userName: redisSinkUser + passWord: redisPassWord +connectorConfig: + connectorName: redisSink + server: redis://127.0.0.1:6379 + # Redis 中的主题 + topic: SinkTopic +``` + +## RedisSourceConnector:从 Redis 的消息队列 到 EventMesh + +1. 启动你的 Redis 实例和 EventMesh Runtime。 +2. 启用 sourceConnector 并检查 `source-config.yml`(与 sink-config.yml 基本相同)。 +3. 启动你的 RedisConnectServer,它将订阅到 Redis 中的 `connectorConfig.topic`,并将数据发送到 EventMesh Runtime 中的 `pubSubConfig.subject` +4. 向 Redis 的主题发送一个 CloudEvent 消息,然后你将在 EventMesh 中接收到该消息。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/04-mongodb-connector.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/04-mongodb-connector.md new file mode 100644 index 0000000000..028fea6ba0 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/04-mongodb-connector.md @@ -0,0 +1,36 @@ +# MongoDB + +## MongoDBSinkConnector:从 EventMesh 到 MongoDB + +1. 启动你的 MongoDB 服务和 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 启动你的 MongoDBConnectorServer,它将订阅到 EventMesh Runtime 中 `pubSubConfig.subject` 中定义的主题,并将数据发送到 MongoDB 中的 `connectorConfig.collection`。 +4. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息,然后你将在 MongoDB 中接收到该消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: rabbitmqSink + appId: 5031 + userName: rabbitmqSinkUser + passWord: rabbitmqPassWord +connectorConfig: + connectorName: mongodbSink + # 支持 REPLICA_SET 和 STANDALONE + connectorType: STANDALONE + # mongodb://root:root@127.0.0.1:27018,127.0.0.1:27019 + url: mongodb://127.0.0.1:27018 + database: yourDB + collection: yourCol +``` + +## MongoDBSourceConnector:从 MongoDB 到 EventMesh + +1. 启动你的 MongoDB 服务和 EventMesh Runtime。 +2. 启用 sourceConnector 并检查 `source-config.yml`(与 sink-config.yml 基本相同)。 +3. 启动你的 MongoDBSourceConnector,它将订阅到 MongoDB 中的 `connectorConfig.collection`,并将数据发送到 EventMesh Runtime 中的 `pubSubConfig.subject`。 +4. 向 MongoDB 中 `yourDB` 的 `yourCol` 写入一个 CloudEvent 消息,然后你将在 EventMesh 中接收到该消息。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/07-knative-connector.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/05-knative-connector.md similarity index 68% rename from i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/07-knative-connector.md rename to i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/05-knative-connector.md index d7c67380ea..5554a67c72 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/01-event-handling-and-integration/07-knative-connector.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/05-knative-connector.md @@ -1,11 +1,17 @@ -# Knative Connector插件 +# Knative + +>随着 Knative Connector 设计的变动,这篇文档目前暂时过时了。 ## 准备 -### 创建Knative Source和Sink -我们使用 *cloudevents-player* [Knative服务](https://knative.dev/docs/serving/)作为例子。如果您不知道如何创建 *cloudevents-player* Knative服务作为source和sink,请按照这个[链接](https://knative.dev/docs/getting-started/first-source/#creating-your-first-source)的步骤进行创建。 -### EventMesh配置文件 +### 创建 Knative Source 和 Sink + +我们使用 *cloudevents-player* [Knative 服务](https://knative.dev/docs/serving/) 作为例子。如果您不知道如何创建 *cloudevents-player* Knative 服务作为 source 和 sink,请按照这个 [链接](https://knative.dev/docs/getting-started/first-source/#creating-your-first-source) 的步骤进行创建。 + +### EventMesh 配置文件 + - 将以下配置加入 [eventmesh-starter/build.gradle](https://github.com/apache/eventmesh/blob/master/eventmesh-starter/build.gradle) 文件 + ```bash plugins { id 'application' @@ -23,7 +29,9 @@ dependencies { implementation project(":eventmesh-runtime") } ``` -- 将以下配置加入 [eventmesh-examples/build.gradle](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/build.gradle)文件 + +- 将以下配置加入 [eventmesh-examples/build.gradle](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/build.gradle) 文件 + ```bash plugins { id 'application' @@ -33,29 +41,39 @@ application { mainClass = project.hasProperty("mainClass") ? project.getProperty("mainClass") : 'NULL' } ``` -- 在 [eventmesh-runtime/conf/eventmesh.properties](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) 文件中设置```eventMesh.connector.plugin.type=knative```变量 + +- 在 [eventmesh-runtime/conf/eventmesh.properties](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) 文件中设置`eventMesh.connector.plugin.type=knative`变量 ## 演示 -### Knative发布事件消息/EventMesh订阅 -#### 步骤1:启动一台EventMesh服务器 + +### Knative 发布事件消息 / EventMesh 订阅 + +#### 步骤 1:启动一台 EventMesh 服务器 + ```bash $ cd eventmesh-starter $ ../gradlew -PmainClass=org.apache.eventmesh.starter.StartUp run ``` -#### 步骤2:从Knative Source发布一条消息 +#### 步骤 2:从 Knative Source 发布一条消息 + ```bash $ curl -i http://cloudevents-player.default.127.0.0.1.sslip.io -H "Content-Type: application/json" -H "Ce-Id: 123456789" -H "Ce-Specversion: 1.0" -H "Ce-Type: some-type" -H "Ce-Source: command-line" -d '{"msg":"Hello CloudEvents!"}' ``` -#### 步骤3:从EventMesh订阅 -- 在 [ExampleConstants.java](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/common/ExampleConstants.java) 文件中设置 ```public static final String EVENTMESH_HTTP_ASYNC_TEST_TOPIC = "messages";```变量 +#### 步骤 3:从 EventMesh 订阅 + +- 在 [ExampleConstants.java](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/common/ExampleConstants.java) 文件中设置 `public static final String EVENTMESH_HTTP_ASYNC_TEST_TOPIC = "messages";`变量 + ```bash $ cd eventmesh-examples $ ../gradlew -PmainClass=org.apache.eventmesh.http.demo.sub.SpringBootDemoApplication run ``` + #### 预期结果 -以下```data```为```Hello CloudEvents!```的消息将会打印在EventMesh服务器的控制台上。 + +以下`data`为`Hello CloudEvents!`的消息将会打印在 EventMesh 服务器的控制台上。 + ```bash 2022-09-05 16:37:58,237 INFO [eventMesh-clientManage-] DefaultConsumer(DefaultConsumer.java:60) - \ [{"event":{"attributes":{"datacontenttype":"application/json","id":"123456789","mediaType":"application/json",\ @@ -63,27 +81,34 @@ $ ../gradlew -PmainClass=org.apache.eventmesh.http.demo.sub.SpringBootDemoApplic "id":"123456789","receivedAt":"2022-09-05T10:37:49.537658+02:00[Europe/Madrid]","type":"RECEIVED"}] ``` -### EventMessh发布事件消息/Knative订阅 -#### 步骤1:启动一台EventMesh服务器 +### EventMesh 发布事件消息 / Knative 订阅 + +#### 步骤 1:启动一台 EventMesh 服务器 + ```bash $ cd eventmesh-starter $ ../gradlew -PmainClass=org.apache.eventmesh.starter.StartUp run ``` -#### 步骤2:从EventMesh发布一条消息 -我们用Knative Connector的测试程序来演示这个功能。 +#### 步骤 2:从 EventMesh 发布一条消息 + +我们用 Knative Connector 的测试程序来演示这个功能。 + ```bash $ cd eventmesh-connector-plugin/eventmesh-connector-knative $ ../../gradlew clean test --tests KnativeProducerImplTest.testPublish ``` -#### 步骤3:从Knative订阅 +#### 步骤 3:从 Knative 订阅 + ```bash $ curl http://cloudevents-player.default.127.0.0.1.sslip.io/messages ``` #### 预期结果 -以下```data```为```Hello Knative from EventMesh!```的消息将会打印在EventMesh服务器的控制台上。 + +以下`data`为`Hello Knative from EventMesh!`的消息将会打印在 EventMesh 服务器的控制台上。 + ```bash 2022-09-05 16:52:41,633 INFO [eventMesh-clientManage-] DefaultConsumer(DefaultConsumer.java:60) - \ [{"event":{"attributes":{"datacontenttype":"application/json","id":"1234","mediaType":"application/json",\ diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/06-lark-connector.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/06-lark-connector.md new file mode 100644 index 0000000000..06dc81f08e --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/06-lark-connector.md @@ -0,0 +1,36 @@ +# 飞书/Lark + +## Lark Sink Server 的配置与启动 + +使用 eventmesh-connector-lark 下沉事件之前,需要进行 server 的配置。 + +- 请在`/resource/server-config.yml`中自定义`sinkEnable`=`true`/`false`以开启/关闭 sink 功能。 +- 关于`/resource/sink-config.yml`,在此仅说明`sinkConnectorConfig`下的配置: + - `connectorName`, 指定 connector 名称 + - (必需)`appId`, lark 中获取的 appId + - (必需)`appSecret`, lark 中获取的 appSecret + - `receiveIdType`,接收 Id 的类型,默认且推荐使用`open_id`。可选 open_id/user_id/union_id/email/chat_id。 + - (必需)`receiveId`, 接收 Id,需要和`receiveIdType`对应。 + - `sinkAsync`, 是否异步下沉事件 + - `maxRetryTimes`, sink 事件失败时,最大重传的次数。默认 3 次。 + - `retryDelayInMills`, sink 事件失败时,重传事件的时间间隔。默认 1s,单位为毫秒。 + +## 可下沉飞书的 CLoudEvent + +使用 eventmesh-connector-lark 下沉事件时,需要在 CloudEvent 中添加对应的 extension filed: + +- 当 key=`templatetype4lark`时,value=`text`/`markdown`,表明该事件的文本类型。 +- 当文本类型 `templatetype4lark` 为 markdown 时,可以为文本设置标题。添加 extension:key=`markdownmessagetitle4lark`,value 为该事件的标题。 +- 当 key=`atusers4lark`时,value=`id-0,name-0;id-1,name-1`,表明该事件需要`@`某些用户。 + - id 推荐使用 **open_id**。 + - 当文本属于 text 类型时,id 可以是 **open_id/union_id/user_id**; 当文本属于 markdown 类型时,id 可以是 **open_id/user_id**。特别地,当应用类型为 [自定义机器人](https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN) 且文本属于 markdown 类型,则仅支持使用 **open_id** 来`@`用户。 + - 当文本属于 text 类型且 id 无效时,将利用 name 代替展示;当文本属于 markdown 类型时且 id 无效时,直接抛出异常(您应该尽量保证 id 的正确性,而 name 则可以考虑省略)。 +- 当 key=`atall4lark`时,value=`true`/`false`,表明该事件需要`@`所有人。 + +## 飞书开放平台 API + +有关该模块涉及到的飞书开放平台 API,请点击以下链接: + +- **发送消息**,请 [查看这里](https://open.feishu.cn/document/server-docs/im-v1/message/create?appId=cli_a5e1bc31507ed00c) +- **text**,请 [查看这里](https://open.feishu.cn/document/server-docs/im-v1/message-content-description/create_json#c9e08671) +- **markdown**,请 [查看这里](https://open.feishu.cn/document/common-capabilities/message-card/message-cards-content/using-markdown-tags) \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/07-dingtalk-connector.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/07-dingtalk-connector.md new file mode 100644 index 0000000000..1228a9ea29 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/07-dingtalk-connector.md @@ -0,0 +1,34 @@ +# 钉钉 + +## DingtalkSinkConnector:从 EventMesh 到钉钉 + +1. 启动你的 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-DINGTALK + idc: FT + env: PRD + group: dingTalkSink + appId: 5034 + userName: dingTalkSinkUser + passWord: dingTalkPassWord +sinkConnectorConfig: + connectorName: dingTalkSink + # 以下配置参考 https://open.dingtalk.com/document/orgapp/the-robot-sends-a-group-message + appKey: dingTalkAppKey + appSecret: dingTalkAppSecret + openConversationId: dingTalkOpenConversationId + robotCode: dingTalkRobotCode +``` + +### CloudEvent 属性 + +使用 eventmesh-connector-dingtalk 下沉事件时,需要在 CloudEvent 中添加对应的 extension filed: + +- 当 key=`dingtalktemplatetype`时,value=`text`/`markdown`,表明该事件的文本类型。 +- 当文本类型 `dingtalktemplatetype` 为 markdown 时,可以为文本设置标题。添加 extension:key=`dingtalkmarkdownmessagetitle`,value 为该事件的标题。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/08-wecom-connector.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/08-wecom-connector.md new file mode 100644 index 0000000000..334a51eaad --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/08-wecom-connector.md @@ -0,0 +1,30 @@ +# 企业微信 + +## WecomSinkConnector:从 EventMesh 到企业微信 + +1. 启动你的 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-WECOM + idc: FT + env: PRD + group: weComSink + appId: 5034 + userName: weComSinkUser + passWord: weComPassWord +sinkConnectorConfig: + connectorName: weComSink + # 以下配置请参考文档:https://developer.work.weixin.qq.com/document/path/90236 + robotWebhookKey: weComRobotWebhookKey +``` + +### CloudEvent 属性 + +使用 eventmesh-connector-wecom 下沉事件时,需要在 CloudEvent 中添加对应的 extension filed: + +- 当 key=`wecomtemplatetype`时,value=`text`/`markdown`,表明该事件的文本类型。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/09-slack-connector.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/09-slack-connector.md new file mode 100644 index 0000000000..ede3d66b03 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/09-slack-connector.md @@ -0,0 +1,25 @@ +# Slack + +## SlackSinkConnector:从 EventMesh 到 Slack + +1. 启动你的 EventMesh Runtime。 +2. 启用 sinkConnector 并检查 `sink-config.yml`。 +3. 使用在 `pubSubConfig.subject` 中指定的 Topic,向 EventMesh 发送消息。 + +```yaml +pubSubConfig: + # 默认端口 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-SLACK + idc: FT + env: PRD + group: slackSink + appId: 5034 + userName: slackSinkUser + passWord: slackPassWord +sinkConnectorConfig: + connectorName: slackSink + # 以下配置请参考文档:https://api.slack.com/messaging/sending + appToken: slackAppToken + channelId: slackChannelId +``` \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/_category_.json b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/_category_.json new file mode 100644 index 0000000000..b47c4291f5 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-connect/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Connect", + "collapsed": false +} diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-schema-registry.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-schema-registry.md index bfe925c476..209d24f8fa 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-schema-registry.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/design-document/03-schema-registry.md @@ -4,9 +4,9 @@ ### Schema -模式代表对序列化实例(字符串/流/s文件/……)的描述,具有两个属性。首先,它也是序列化类型的格式。其次,它定义了这些序列化实例应满足的要求。 +模式代表对序列化实例(字符串/流/s 文件/……)的描述,具有两个属性。首先,它也是序列化类型的格式。其次,它定义了这些序列化实例应满足的要求。 -除了描述序列化实例,模式还可用于验证实例是否合法。因为它定义了序列化实例的 ```type```(和其他属性)以及内部的键。以 JSON 模式为例,它不仅可用于描述 JSON 字符串,还可用于验证字符串是否满足模式[[1]](#References).中定义的属性。 +除了描述序列化实例,模式还可用于验证实例是否合法。因为它定义了序列化实例的 `type`(和其他属性)以及内部的键。以 JSON 模式为例,它不仅可用于描述 JSON 字符串,还可用于验证字符串是否满足模式 [[1]](#参考文献) 中定义的属性。 常见的模式有 JSON 模式、Protobuf 模式和 Avro 模式。 @@ -20,14 +20,13 @@ 项目 | 应用程序 :---: | :--- -EMQ[[2]](#References) | 主要用于(去)序列化过程。使用 "模式注册表 "和 "规则匹配 "将信息从一种序列化格式传输到另一种序列化格式。serialization format to another. -Pulsar[[3]](#References) | 主要用于验证过程。使用 "模式注册表 "验证报文。 -Confluentinc[[4]](#References) | 在验证和(去)序列化过程中。 +EMQ[[2]](#参考文献) | 主要用于(去)序列化过程。使用 "模式注册表 "和 "规则匹配 "将信息从一种序列化格式传输到另一种序列化格式。serialization format to another. +Pulsar[[3]](#参考文献) | 主要用于验证过程。使用 "模式注册表 "验证报文。 +Confluentinc[[4]](#参考文献) | 在验证和(去)序列化过程中。 ## OpenSchema 概览 -OpenSchema[[5]](#References) 提出了在越来越多的现代云原生应用程序中交换消息和事件时的数据模式规范。它从三个方面(主题/模式/兼容性)设计了用于存储和检索 Avro、JSON Schema 和 Protobuf3 模式的 RESTful 接口。 - +OpenSchema[[5]](#参考文献) 提出了在越来越多的现代云原生应用程序中交换消息和事件时的数据模式规范。它从三个方面(主题/模式/兼容性)设计了用于存储和检索 Avro、JSON Schema 和 Protobuf3 模式的 RESTful 接口。 ## 需求(目标) @@ -65,7 +64,7 @@ OpenSchema[[5]](#References) 提出了在越来越多的现代云原生应用程 **当前状态**: 开发中 -**讨论issue**: ISSUE #339 +**讨论 issue**: ISSUE #339 ### 修改建议 @@ -74,7 +73,7 @@ OpenSchema[[5]](#References) 提出了在越来越多的现代云原生应用程 首先是一个独立的开放模式注册表,其中包括模式的存储和兼容性检查。 该提案正在制定中。 -其次是 Eventmesh 中 Open Schema 的集成,其中包括架构验证。 该提案有待制定。 +其次是 EventMesh 中 Open Schema 的集成,其中包括架构验证。该提案有待制定。 对于第一个提案,一些进展情况如下。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/00-eclipse.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/00-eclipse.md deleted file mode 100644 index a69af82c36..0000000000 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/00-eclipse.md +++ /dev/null @@ -1,38 +0,0 @@ -# 导入 Eclipse 快速入门说明 - -我们推荐使用 `Intellij IDEA` 进行开发,如果您希望使用 `Eclipse`,可以参考下面的步骤导入项目。 - -### 依赖 - -``` -64位JDK 1.8+; -Gradle至少为7.0, 推荐 7.0.* -eclipse 已安装gradle插件或者eclipse自带gradle插件 -``` - -### 下载源码 - -git init - -git clone - -### 项目编译eclipse环境 - -打开命令行终端,运行gradlew cleanEclipse eclipse - -### 配置修改 - -修改工程名称和settings.gradle 配置文件参数rootProject.name 参数一致 - -### 修改eclipse.init配置文件,配置lombok以1.18.8版本为例 - --javaagent:lombok-1.18.8.jar --XBootclasspath/a:lombok-1.18.8.jar - -### 202106版本eclipse,eclipse.init增加配置参数 - ---illegal-access=permit - -### 导入gradle - -打开eclipse,导入gradle项目到IDE里 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/01-store.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/01-store.md index 79ee18cc86..6a9a3894d2 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/01-store.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/01-store.md @@ -1,49 +1,49 @@ -# 部署 EventMesh 的事件存储 +# Event Store 事件存储 -## 1 依赖 +## 1 前提 -``` -建议使用64位操作系统,建议使用Linux/Unix; -64位JDK 1.8+; -Gradle至少为7.0, 推荐7.0.* -4g+可用磁盘用于eventmesh-store服务器 -eventmesh在非standalone模式下,依赖RocketMQ作为存储层;若采用standalone模式,则可跳过该步,直接进行runtime的部署 -``` +- 建议使用 64 位的 Linux / Unix 系统 +- 64 位 JDK 8 或 JDK 11 +- 4GB+ 可用磁盘,用于 Event Store 服务器。 -### 2 下载 +本文将以 RocketMQ 事件存储为例,您也可以选择其它 [EventMesh 支持的事件存储](../roadmap.md#事件存储实现状态)。EventMesh 在非 standalone 模式下,依赖 RocketMQ 作为存储层。若您保持默认的 standalone 模式,则可跳过该步,直接进行 EventMesh Runtime 的部署。 -从[RocketMQ官方网站](https://rocketmq.apache.org/download/) 下载Binary代码(推荐使用4.9.*版本),这里以4.9.4为例: +在生产环境应使用 standalone 之外的事件存储,以支持更大的吞吐量和更高的可用性。 -``` +## 2 下载 + +从 [RocketMQ 官方网站](https://rocketmq.apache.org/download/) 下载 Binary 代码(推荐使用 4.9.* 版本),这里以 4.9.4 为例: + +```shell unzip rocketmq-all-4.9.4-bin-release.zip cd rocketmq-all-4.9.4-bin-release/ ``` ![rocketmq_1](/images/install/rocketmq_1.png) -### 3 启动 +## 3 启动 -启动Name Server: +启动 Name Server: -``` +```shell nohup sh bin/mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log ``` -如果在看到The Name Server boot success...,则说明Name Server启动成功。 +如果在看到 The Name Server boot success...,则说明 Name Server 启动成功。 ![rocketmq_2](/images/install/rocketmq_2.png) -启动Broker: +启动 Broker: -``` +```shell nohup sh bin/mqbroker -n localhost:9876 & tail -f ~/logs/rocketmqlogs/broker.log ``` -如果在看到The broker boot success...,则说明Broker启动成功 - -至此eventmesh-store的部署已完成,请转至下一步完成 [eventmesh-runtime](https://github.com/apache/incubator-eventmesh/blob/master/docs/zh/instruction/03-runtime.md) 的部署 +如果看到 The broker boot success...,则说明 Broker 启动成功 +至此 Event Store 的部署已完成,请转至下一步完成 [EventMesh Runtime](./03-runtime.md) 的部署 ## 参考 -关于RocketMQ的其他更多资料,请参考 + +关于 RocketMQ 的其他更多资料,请参考 https://rocketmq.apache.org/docs/quick-start/. diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/02-store-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/02-store-with-docker.md index beea3a5e5a..bc1c450e04 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/02-store-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/02-store-with-docker.md @@ -1,20 +1,19 @@ -# 部署 EventMesh 的事件存储(使用 Docker) +# Event Store Docker 部署 -eventmesh在非standalone模式下,依赖RocketMQ作为存储层;若采用standalone模式,则可跳过该步,直接进行runtime的部署。 +## 1. 前提 -## 1. 依赖 +- 建议使用 64 位的 Linux / Unix 系统 +- 4GB+ 可用磁盘,用于 Event Store 服务器。 -``` -建议使用64位操作系统,建议使用Linux/Unix; -64位JDK 1.8+; -Gradle至少为7.0, 推荐7.0.*; -4g+可用磁盘用于eventmesh-store服务器; -``` +本文将以 RocketMQ 事件存储为例,您也可以选择其它 [EventMesh 支持的事件存储](../roadmap.md#事件存储实现状态)。EventMesh 在非 standalone 模式下,依赖 RocketMQ 作为存储层。若您保持默认的 standalone 模式,则可跳过该步,直接进行 EventMesh Runtime 的部署。 + +在生产环境应使用 standalone 之外的事件存储,以支持更大的吞吐量和更高的可用性。 -## 2. Docker部署 +## 2. Docker 部署 ### 2.1 拉取镜像 -在命令行输入如下命令直接从 docker hub 上获取 RocketMQ 镜像: + +在命令行输入如下命令直接从 Docker Hub 上获取 RocketMQ 镜像: ```shell #获取 rocketmq 镜像 @@ -38,7 +37,7 @@ apache/rocketmq 4.9.4 a2a50ca263c3 13 months ago 548MB ### 2.2 运行容器 -运行namerv容器和broker容器: +运行 namesrv 容器和 broker 容器: ```shell sudo docker run -d -p 9876:9876 \ @@ -49,7 +48,7 @@ sudo docker run -d -p 9876:9876 \ sh mqnamesrv ``` -运行broker容器: +运行 broker 容器: ```shell sudo docker run -d -p 10911:10911 -p 10909:10909 \ @@ -65,7 +64,6 @@ sudo docker run -d -p 10911:10911 -p 10909:10909 \ ![rocketmq_docker_2](/images/install/rocketmq_docker_2.png) -请注意 **rocketmq-broker ip** 是 **pod ip**, 如果你想修改这个ip, 可以通过挂载容器中 **broker.conf** 文件的方式并修改文件中的 **brokerIP1** 配置项为自定义值。 - +请注意 `rocketmq-broker ip` 是 `pod ip`, 如果你想修改这个 ip, 可以通过挂载容器中 `broker.conf` 文件的方式并修改文件中的 `brokerIP1` 配置项为自定义值。 -至此eventmesh-store的部署已完成,请转至下一步完成 [eventmesh-runtime](04-runtime-with-docker.md) 的部署。 +至此 Event Store 的部署已完成,请转至下一步完成 [EventMesh Runtime](04-runtime-with-docker.md) 的部署。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/03-runtime.md index 02756b4c01..c169458182 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/03-runtime.md @@ -1,208 +1,272 @@ -# Eventmesh-runtime 快速入门说明 +# EventMesh Runtime 快速开始 -EventMesh Runtime 是 EventMesh 集群中有状态的 Mesh 节点,负责 Source Connector 与 Sink Connector 之间的事件传输,并可以使用 EventMesh Storage 作为事件的存储队列。 +EventMesh Runtime 是 EventMesh 集群中有状态的 Mesh 节点,负责 Source Connector 与 Sink Connector 之间的事件传输,并可以使用 Event Store 作为事件的存储队列。 -## 1 本地构建运行 +![EventMesh Runtime](../../../../../static/images/design-document/runtime.png) -### 1.1 源码启动 +## 1. 部署二进制发行版 -#### 1.1.1 依赖 +### 1.1 环境 -``` -建议使用64位操作系统,建议使用Linux / Unix; -64位JDK 1.8+; -Gradle至少为7.0, 推荐 7.0.* +- 建议使用 64 位的 Linux / Unix 系统 +- 64 位 JDK 8 或 JDK 11 + +### 1.2 下载 + +从 [EventMesh Download](https://eventmesh.apache.org/download) 页面下载最新版本的 Binary Distribution 发行版并解压: + +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-bin.tar.gz +tar -xvzf apache-eventmesh-1.10.0-bin.tar.gz +cd apache-eventmesh-1.10.0 ``` -#### 1.1.2 下载源码 +### 1.3 配置 -从 [EventMesh download](https://eventmesh.apache.org/download) 下载并提取最新版本的源代码。比如目前最新版,您将获得`apache-eventmesh-1.9.0-source.tar.gz`。 +本文将以 RocketMQ 事件存储为例,您也可以选择其它 [EventMesh 支持的事件存储](../roadmap.md#事件存储实现状态)。若您选择非 standalone 模式,请确保 [RocketMQ 已成功启动](https://rocketmq.apache.org/docs/quick-start/) 并且可以使用 IP 地址访问到;若您保持默认的 standalone 模式,则无需启动 RocketMQ。 -#### 1.1.3 本地启动 +#### 1.3.1 EventMesh Runtime 配置 -**1.1.3.1 项目结构说明:** +此配置文件中包含 EventMesh Runtime 环境和集成的插件的配置。 -- eventmesh-common : eventmesh公共类与方法模块 -- eventmesh-connector-api : eventmesh connector插件接口定义模块 -- eventmesh-connector-plugin : eventmesh connector插件模块 -- eventmesh-runtime : eventmesh运行时模块 -- eventmesh-sdk-java : eventmesh java客户端sdk -- eventmesh-starter : eventmesh本地启动运行项目入口 -- eventmesh-spi : eventmesh SPI加载模块 +```shell +vim conf/eventmesh.properties +``` -> 注:插件模块遵循 eventmesh 定义的SPI规范, 自定义的SPI接口需要使用注解 @EventMeshSPI 标识. -> 插件实例需要在对应模块中的 /main/resources/META-INF/eventmesh 下配置相关接口与实现类的映射文件,文件名为SPI接口全类名. -> 文件内容为插件实例名到插件实例的映射, 具体可以参考 eventmesh-connector-rocketmq 插件模块 +指定事件存储为 RocketMQ: -**1.1.3.2 插件说明** +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq +``` -***1.1.3.2.1 安装插件*** +请检查配置文件里的默认端口是否已被占用,如果被占用,请修改为未被占用的端口: -有两种方式安装插件 +| 属性 | 默认值 | 备注 | +| -------------------------------- | ------ | ------------- | +| eventMesh.server.tcp.port | 10000 | TCP 监听接口 | +| eventMesh.server.http.port | 10105 | HTTP 监听接口 | +| eventMesh.server.grpc.port | 10205 | gRPC 监听接口 | +| eventMesh.server.admin.http.port | 10106 | HTTP 管理接口 | -- classpath加载:本地开发可以通过在 eventmesh-starter 模块 build.gradle 中进行声明,例如声明使用 rocketmq 插件 +#### 1.3.2 事件存储配置 -```gradle - implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") -``` +以 RocketMQ 为例,配置文件中包含连接 RocketMQ namesrv 所需的参数。 -- 文件加载:通过将插件安装到插件目录,EventMesh 在运行时会根据条件自动加载插件目录下的插件,可以通过执行以下命令安装插件 +编辑 `rocketmq-client.properties`: ```shell -./gradlew clean jar dist && ./gradlew installPlugin +vim conf/rocketmq-client.properties ``` -***1.1.3.2.2 使用插件*** +如果您正在运行的 namesrv 地址不是配置文件中的默认值,请将其修改为实际正在运行的 namesrv 地址。 -EventMesh 会默认加载 dist/plugin 目录下的插件,可以通过`-DeventMeshPluginDir=your_plugin_directory`来改变插件目录。运行时需要使用的插件实例可以在 -`confPath`目录下面的`eventmesh.properties`中进行配置。例如通过以下设置声明在运行时使用rocketmq插件。 +| 属性 | 默认值 | 备注 | +| ------------------------------------- | ----------------------------- | ------------------------ | +| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv address | -```properties -#connector plugin -eventMesh.connector.plugin.type=rocketmq -``` +### 1.4 启动 -**1.1.3.3 配置VM启动参数** +执行 `start.sh` 脚本启动 EventMesh Runtime: -```properties --Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml --Deventmesh.log.home=eventmesh-runtime/logs --Deventmesh.home=eventmesh-runtime --DconfPath=eventmesh-runtime/conf +```shell +bash bin/start.sh ``` -> 注:如果操作系统为Windows, 可能需要将文件分隔符换成'\' - -**1.1.3.4 启动运行** +若脚本仅打印以下三行,未输出其它错误信息,则代表脚本执行成功: +```shell +EventMesh using Java version: 8, path: /usr/local/openjdk-8/bin/java +EVENTMESH_HOME : /data/app/eventmesh +EVENTMESH_LOG_HOME : /data/app/eventmesh/logs ``` -运行org.apache.eventmesh.starter.StartUp的主要方法 + +接着,查看 EventMesh Runtime 输出的日志,检查 EventMesh 的运行状态: + +```shell +tail -n 50 -f logs/eventmesh.out ``` -### 1.2 本地二进制构建 +当日志输出`server state:RUNNING`,则代表 EventMesh Runtime 启动成功了。 -#### 1.2.1 依赖 +停止 EventMesh Runtime: -``` -建议使用64位操作系统,建议使用Linux / Unix; -64位JDK 1.8+; -Gradle至少为7.0, 推荐 7.0.* +```shell +bash bin/stop.sh ``` -Gradle 是 Apache EventMesh 使用的构建自动化工具。请参考 [官方指南](https://docs.gradle.org/current/userguide/installation.html) 安装最新版本的 Gradle。 +脚本打印`shutdown server ok!`时,代表 EventMesh Runtime 已停止。 -#### 1.2.2 下载源码 +## 2. 构建二进制分发包 -从 [EventMesh download](https://eventmesh.apache.org/download) 下载并提取最新版本的源代码。比如目前最新版,您将获得`apache-eventmesh-1.9.0-source.tar.gz`。 +### 2.1 环境 -```console -tar -xvzf apache-eventmesh-1.9.0-source.tar.gz -cd apache-eventmesh-1.9.0-src/ -``` +- 建议使用 64 位的 Linux / Unix 系统 +- 64 位 JDK 8 或 JDK 11 +- [Gradle](https://docs.gradle.org/current/userguide/installation.html) 7.0+(可选),本文档中给出的构建命令使用 Gradle Wrapper,无需用户自行配置 Gradle 环境。您也可以于 `gradle/wrapper/gradle-wrapper.properties` 文件中查看您使用的 EventMesh 版本所推荐的 Gradle 版本,使用您本机的 Gradle 编译。 + +### 2.2 下载 -使用 Gradle 构建源代码。 +从 [EventMesh Download](https://eventmesh.apache.org/download) 下载 Source Code 源代码并解压: -```console -gradle clean dist +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-source.tar.gz +tar -xvzf apache-eventmesh-1.10.0-source.tar.gz +cd apache-eventmesh-1.10.0-src/ ``` -![runtime_2](/images/install/runtime_2.png) - -编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 +您也可以选择从 GitHub 拉取代码: -```console -cd dist -vim conf/eventmesh.properties +```shell +git clone https://github.com/apache/eventmesh.git +cd eventmesh/ ``` -#### 1.2.3 构建并加载插件 +### 2.3 构建 -Apache EventMesh引入了 SPI 机制,使 EventMesh 能够在运行时发现并加载插件。有两种方式安装插件: +EventMesh 基于 JDK8 开发,二进制发行版也基于 JDK8 构建。推荐在 JDK8 环境下运行 EventMesh Runtime。 -1. Gradle 依赖项: 在 `eventmesh-starter/build.gradle` 中将插件声明为构建依赖项。 +#### 在 JDK8 环境运行 -```gradle -dependencies { - implementation project(":eventmesh-runtime") +部分源代码需要在 JDK11 下生成: - // 示例: 加载 RocketMQ 插件 - implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") -} +```shell +./gradlew clean generateGrammarSource --parallel --daemon ``` -2. 插件目录: EventMesh 会根据 `eventmesh.properties` 加载 `dist/plugin` 目录中的插件。Gradle 的 `installPlugin` 任务会构建插件并将其移动到 `dist/plugin` 目录中。 +`generateGrammarSource`任务会在`org.apache.eventmesh.connector.jdbc.antlr4.autogeneration`包下生成`ANTLR`所需的源代码。 -```console -gradle installPlugin +接着,在 JDK8 下构建 EventMesh Runtime: + +```shell +./gradlew clean dist -x spotlessJava -x generateGrammarSource --parallel --daemon ``` -#### 1.2.4 启动Runtime +构建完成后,请前往 [2.4 打包插件](#24-打包插件)。 -执行 `start.sh` 脚本启动 EventMesh Runtime 服务器。 +> 您可以使用`update-alternatives`或`JAVA_HOME`等方式切换 JDK 版本,并使用`java -version`查看当前 JDK 版本。 -```console -bash bin/start.sh +#### 在 JDK11 环境运行 + +如果您希望以 JDK11 作为 EventMesh Runtime 的运行环境,则执行: + +```shell +./gradlew clean dist --parallel --daemon ``` -![runtime_4](/images/install/runtime_4.png) -查看输出日志: +构建完成后,请前往 [2.4 打包插件](#24-打包插件)。 -```console -tail -f logs/eventmesh.out +### 2.4 打包插件 + +`installPlugin` 任务会将构建完毕的插件复制到 `dist` 目录中: + +```shell +./gradlew installPlugin ``` -![runtime_3](/images/install/runtime_3.png) -## 2 远程部署 +EventMesh 会根据 `eventmesh.properties` 中的配置,加载 `plugin` 目录下的插件。 + +构建成功后,项目根目录下的 `dist` 目录即为 EventMesh 的二进制文件目录。配置与启动请参考 [部署二进制发行版](#1-部署二进制发行版)。 + +## 3. 从源代码启动 -### 2.1 依赖 +### 3.1 依赖 +- 建议使用 64 位的 Linux / Unix 系统 +- 64 位 JDK 8 或 JDK 11 +- [Gradle](https://docs.gradle.org/current/userguide/installation.html) 7.0+(可选),本文档中给出的构建命令使用 Gradle Wrapper,无需用户自行配置 Gradle 环境。您也可以于 `gradle/wrapper/gradle-wrapper.properties` 文件中查看您使用的 EventMesh 版本所推荐的 Gradle 版本,使用您本机的 Gradle 编译。 +- 推荐使用 IDE(集成开发环境)导入 EventMesh。推荐使用`Intellij IDEA`作为 IDE。 + +### 3.2 下载 + +从 GitHub 拉取代码: + +```shell +git clone https://github.com/apache/eventmesh.git +cd eventmesh/ ``` -建议使用64位操作系统,建议使用Linux / Unix; -64位JDK 1.8+; -Gradle至少为7.0, 推荐 7.0.* + +您也可以从 [EventMesh Download](https://eventmesh.apache.org/download) 下载 Source Code 源代码发行版并解压: + +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-source.tar.gz +tar -xvzf apache-eventmesh-1.10.0-source.tar.gz +cd apache-eventmesh-1.10.0-src/ ``` -### 2.2 下载 +### 3.3 项目结构说明 -在 [EventMesh download](https://eventmesh.apache.org/download) 页面选择1.5.0版本的 Binary Distribution 进行下载, 您将获得`apache-eventmesh-1.9.0-bin.tar.gz`。 +| 主要模块 | 描述 | +| ------------------------ | ------------------------------------------------------------ | +| eventmesh-starter | 本地运行 EventMesh 项目的入口 | +| eventmesh-runtime | EventMesh Runtime 运行时模块 | +| eventmesh-connectors | 用于连接事件源与事件汇的 [Connector](../design-document/03-connect/00-connectors.md),支持[多种服务和平台](../roadmap.md#连接器实现状态) | +| eventmesh-storage-plugin | EventMesh Runtime 的[事件存储](../roadmap.md#事件存储实现状态)插件 | +| eventmesh-sdks | EventMesh 的多语言客户端 SDK,包括 Java、Go、C、Rust 等 | +| eventmesh-examples | SDK 使用示例 | +| eventmesh-spi | EventMesh SPI 加载模块 | +| eventmesh-common | 公共类与方法模块 | -```console -# 解压 -tar -xvzf apache-eventmesh-1.9.0-bin.tar.gz -cd apache-eventmesh-1.9.0 -``` +> 插件模块遵循 EventMesh 定义的 SPI 规范,自定义的 SPI 接口需要使用注解 `@EventMeshSPI` 标识。 +> +> 插件实例需要在对应模块中的 `/main/resources/META-INF/eventmesh` 下配置相关接口与实现类的映射文件,文件名为 SPI 接口的全限定类名。 +> +> 文件内容为插件实例名到插件实例的映射,具体可以参考 `eventmesh-storage-rocketmq` 插件模块。 -### 2.3 部署 +### 3.4 插件说明 -编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 +#### 3.4.1 安装插件 -```console -vim conf/eventmesh.properties -``` +EventMesh 具有 SPI 机制,使 EventMesh 能够发现并加载插件。有两种方式安装插件: -执行 `start.sh` 脚本启动 EventMesh Runtime 服务器。 +- Classpath 加载:本地开发时可以通过在 `eventmesh-starter` 模块的 `build.gradle` 中添加依赖,例如添加 Kafka Storage Plugin: -```console -bash bin/start.sh +```gradle +dependencies { + implementation project(":eventmesh-runtime") + // 示例:加载 Kafka Storage Plugin + implementation project(":eventmesh-storage-plugin:eventmesh-storage-kafka") +} ``` -如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) +- 文件加载:通过将插件安装到插件目录,EventMesh 在运行时会根据条件自动加载插件目录下的插件。请参考 [2.3 构建](#23-构建) 和 [2.4 打包插件](#24-打包插件)。 + +>当您对源代码作出更改后,建议在 [2.3 构建](#23-构建) 给出的命令中添加`build`任务,以重新编译和运行单元测试。如: +> +>```shell +>./gradlew clean build dist -x spotlessJava -x generateGrammarSource --parallel --daemon +>``` +#### 3.4.2 使用插件 -查看输出日志: +EventMesh 会默认加载 `dist/plugin` 目录下的插件,可以通过`-DeventMeshPluginDir=your_plugin_directory`来改变插件目录。运行时需要使用的插件实例可以在 +`confPath`目录下面的`eventmesh.properties`中进行配置。例如通过以下设置声明使用 RocketMQ 作为 Event Store: -```console -cd /root/apache-eventmesh-1.9.0/logs -tail -f eventmesh.out +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq ``` -![runtime_7](/images/install/runtime_7.png) -停止: +### 3.5 配置 VM 参数 -```console -bash bin/stop.sh +```properties +-Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml +-Deventmesh.log.home=eventmesh-runtime/logs +-Deventmesh.home=eventmesh-runtime +-DconfPath=eventmesh-runtime/conf ``` -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) +如果操作系统为 Windows,需要将斜杠替换为反斜杠`\`。 + +### 3.6 启动 + +运行`eventmesh-starter`模块下`org.apache.eventmesh.starter.StartUp`类的`main()`方法即可启动 EventMesh Runtime。 + +### 3.7 停止 + +控制台打印以下日志时,EventMesh Runtime 已停止。 + +```log +DEBUG StatusConsoleListener Shutdown hook enabled. Registering a new one. +WARN StatusConsoleListener Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger +``` diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/04-runtime-with-docker.md index f15bf57fb0..c7fd3dc209 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/04-runtime-with-docker.md @@ -1,20 +1,20 @@ -# 使用 Docker 快速入门 EventMesh(暂时只支持到1.4.0版本) +# EventMesh Runtime Docker 快速开始 -本篇快速入门将详细介绍使用 docker 部署 EventMesh,以 RocketMQ 作为对接的中间件。 +您可以使用 Docker 部署 EventMesh Runtime。本文将以 RocketMQ 事件存储为例,您也可以选择其它 [EventMesh 支持的事件存储](../roadmap.md#事件存储实现状态)。 ## 1. 前提 -1. 建议使用64位的 linux 系统; -2. 请预先安装 Docker Engine。 Docker 的安装过程可以参考 [docker 官方文档](https://docs.docker.com/engine/install/); -3. 建议掌握基础的 docker 概念和命令行,例如注册中心、挂载等等。不过这不是必须的,因为本次操作所需的命令都已为您列出; -4. 若您选择非standalone模式,请确保 [RocketMQ 已成功启动](https://rocketmq.apache.org/docs/quick-start/) 并且可以使用 ip 地址访问到;若您选择standalone模式,则无需启动 RocketMQ 。 +1. 建议使用 64 位的 Linux / Unix 系统。 +2. 请预先安装 Docker Engine。Docker 的安装过程可以参考 [Docker 官方文档](https://docs.docker.com/engine/install/)。 +3. 建议掌握基础的 Docker 概念和命令行,例如注册中心、挂载等等。不过这不是必须的,因为本次操作所需的命令都已为您列出。 +4. 若您选择非 standalone 模式,请确保 [RocketMQ 已成功启动](https://rocketmq.apache.org/docs/quick-start/) 并且可以使用 IP 地址访问到;若您保持默认的 standalone 模式,则无需启动 RocketMQ。 -## 2. 获取 EventMesh 镜像 +## 2. 获取 EventMesh Runtime 镜像 -首先,你可以打开一个命令行,并且使用下面的 ```pull``` 命令从 [Docker Hub](https://registry.hub.docker.com/r/eventmesh/eventmesh/tags) 中下载[最新发布的 EventMesh](https://eventmesh.apache.org/events/release-notes/v1.3.0/) 。 +首先,您可以打开一个命令行,并且使用下面的 `pull` 命令从 [Docker Hub](https://hub.docker.com/r/apache/eventmesh/tags) 中下载 [最新版本的 EventMesh](https://eventmesh.apache.org/events/release-notes/) 。 ```shell -sudo docker pull eventmesh/eventmesh:v1.4.0 +sudo docker pull apache/eventmesh:latest ``` 您可以使用以下命令列出并查看本地已有的镜像。 @@ -27,131 +27,143 @@ sudo docker images ```shell $ sudo docker images -REPOSITORY TAG IMAGE ID CREATED SIZE -eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB +REPOSITORY TAG IMAGE ID CREATED SIZE +apache/eventmesh latest f32f9e5e4694 2 days ago 917MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) +## 3. 挂载配置文件 -## 3. 创建配置文件 +如果您使用 standalone 模式启动 EventMesh Runtime,并且没有自定义配置,可以跳转至下一步骤。 -在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 - -首先,你需要使用下面的命令创建这两个文件。 +首先,在宿主机上创建 EventMesh 的配置文件目录。此目录可以自由指定: ```shell -sudo mkdir -p /data/eventmesh/rocketmq/conf -cd /data/eventmesh/rocketmq/conf -sudo touch eventmesh.properties -sudo touch rocketmq-client.properties +sudo mkdir -p /data/eventmesh/conf +cd /data/eventmesh/conf ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) -### 4. 配置 eventMesh.properties +### 3.1 EventMesh Runtime 配置 + +此配置文件中包含 EventMesh Runtime 环境和集成的插件的配置。 + +下载配置文件(替换下载链接中的`1.10.0`为您正在使用的版本): -这个配置文件中包含 EventMesh 运行时环境和集成进来的其他插件所需的参数。 +```shell +sudo wget https://raw.githubusercontent.com/apache/eventmesh/1.10.0-prepare/eventmesh-runtime/conf/eventmesh.properties +``` -使用下面的 ```vim``` 命令编辑 ```eventmesh.properties```。 +编辑 `eventmesh.properties`: ```shell sudo vim eventmesh.properties ``` -你可以直接将 GitHub 仓库中的对应配置文件中的内容复制过来,链接为: 。 +指定事件存储为 RocketMQ: -请检查配置文件里的默认端口是否已被占用,如果被占用请修改成未被占用的端口: +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq +``` -| 属性 | 默认值 | 备注 | -|----------------------------|-------|----------------------------| -| eventMesh.server.http.port | 10105 | EventMesh http server port | -| eventMesh.server.tcp.port | 10000 | EventMesh tcp server port | -| eventMesh.server.grpc.port | 10205 | EventMesh grpc server port | +请检查配置文件里的默认端口是否已被占用,如果被占用,请修改为未被占用的端口: -### 5. 配置 rocketmq-client.properties +| 属性 | 默认值 | 备注 | +| -------------------------------- | ------ | ------------- | +| eventMesh.server.tcp.port | 10000 | TCP 监听接口 | +| eventMesh.server.http.port | 10105 | HTTP 监听接口 | +| eventMesh.server.grpc.port | 10205 | gRPC 监听接口 | +| eventMesh.server.admin.http.port | 10106 | HTTP 管理接口 | -这个配置文件中包含 RocketMQ nameserver 的信息。 +### 3.2 事件存储配置 -使用下面的 ```vim``` 命令编辑 ```rocketmq-client.properties```。 +以 RocketMQ 为例,配置文件中包含连接 RocketMQ namesrv 所需的参数。 + +下载配置文件(替换下载链接中的`1.10.0`为您正在使用的版本): ```shell -sudo vim rocketmq-client.properties +sudo wget https://raw.githubusercontent.com/apache/eventmesh/1.10.0-prepare/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/resources/rocketmq-client.properties ``` -你可以直接将 GitHub 仓库中的对应配置文件中的内容复制过来,链接为: 。请注意,如果您正在运行的 namesetver 地址不是配置文件中的默认值,请将其修改为实际正在运行的nameserver地址。 - -请检查配置文件里的默认namesrvAddr是否已被占用,如果被占用请修改成未被占用的地址: +编辑 `rocketmq-client.properties`: -| 属性 | 默认值 | 备注 | -|---------------------------------------|-------------------------------|----------------------------------| -| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv default address | +```shell +sudo vim rocketmq-client.properties +``` -## 6. 运行 EventMesh +如果您正在运行的 namesrv 地址不是配置文件中的默认值,请将其修改为实际正在运行的 namesrv 地址。 -现在你就可以开始根据下载好的 EventMesh 镜像运行容器了。 +| 属性 | 默认值 | 备注 | +| ------------------------------------- | ----------------------------- | ------------------------ | +| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv address | -使用到的命令是 ```docker run```,有以下两点内容需要格外注意。 +>如果您无法使用给出的链接下载配置文件,您可以在 EventMesh 二进制发行版的`conf`路径下找到所有的配置文件。 -1. 绑定容器端口和宿主机端口:使用 ```docker run``` 的 ```-p``` 选项。 -2. 将宿主机中的两份配置文件挂在到容器中:使用 ```docker run``` 的 ```-v``` 选项。 +## 4. 运行 EventMesh Runtime 容器 -综合一下,对应的启动命令为: +使用以下命令启动 EventMesh 容器: ```shell -sudo docker run -d \ - -p 10000:10000 -p 10105:10105 \ - -v /data/eventmesh/rocketmq/conf/eventMesh.properties:/data/app/eventmesh/conf/eventMesh.properties \ - -v /data/eventmesh/rocketmq/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties \ - eventmesh/eventmesh:v1.4.0 +sudo docker run -d --name eventmesh -p 10000:10000 -p 10105:10105 -p 10205:10205 -p 10106:10106 -v /data/eventmesh/conf/eventmesh.properties:/data/app/eventmesh/conf/eventmesh.properties -v /data/eventmesh/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties -t apache/eventmesh:latest ``` -如果运行命令之后看到新输出一行字符串,那么运行 EventMesh 镜像的容器就启动成功了。 +`docker run`命令参数介绍: + +- `-p <宿主机端口>:<容器端口>`:绑定容器端口和宿主机端口。如果您修改过 EventMesh Runtime 配置中的默认端口,或者宿主机的端口已被占用,请相应地修改为您指定的端口。 + +- `-v <宿主机路径>:<容器路径>`:将宿主机中的配置文件挂载到容器中。如果您存放 EventMesh 配置文件的路径不是`/data/eventmesh/conf`,请修改宿主机路径为您指定的路径。如果您没有自定义配置文件,请删除此参数。 +- `--name eventmesh`:自定义的容器名称。此名称是唯一的。 +- `-t apache/eventmesh:latest`:容器使用的镜像。 -接下来,你可以使用下面的命令查看容器的状态。 +执行`docker run`命令后,将会返回容器的 ID。使用此命令查看所有正在运行的容器的状态: ```shell sudo docker ps ``` -如果成功的话,你会看到终端打印出了如下所示容器的信息,其中就有运行 EventMesh 镜像的容器。 +将会打印: ```shell -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +b7a1546ee96a apache/eventmesh:latest "bash bin/start.sh" 10 seconds ago Up 8 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105-10106->10105-10106/tcp, :::10105-10106->10105-10106/tcp, 0.0.0.0:10205->10205/tcp, :::10205->10205/tcp eventmesh ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) +如果 EventMesh Runtime 容器不在此命令打印的列表中,则代表容器未能成功启动。您可以使用以下命令查看启动时的日志(将`eventmesh`替换为您指定的容器名称或 ID): -从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 +```shell +sudo docker logs eventmesh +``` -## 7. 管理 EventMesh 容器 +## 5. 查看 EventMesh 日志 -在成功的运行了 EventMesh 容器后,你可以通过进入容器、查看日志、删除容器等方式管理容器。 +成功启动 EventMesh 容器后,您可以通过以下步骤查看 EventMesh Runtime 输出的日志,检查 EventMesh 的运行状态。 -**进入容器** 命令示例: +进入容器(将`eventmesh`替换为您指定的容器名称或 ID): ```shell -sudo docker exec -it [your container id or name] /bin/bash +sudo docker exec -it eventmesh /bin/bash ``` -在容器中 **查看日志** 命令示例: +查看日志: ```shell -cd ../logs -tail -f eventmesh.out +cd logs +tail -n 50 -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) +当日志输出`server state:RUNNING`,则代表 EventMesh Runtime 启动成功了。 -**删除容器** 命令示例: +## 6. 构建 EventMesh Runtime 镜像(可选) -```shell -sudo docker rm -f [your container id or name] -``` +EventMesh 基于 JDK8 开发,二进制发行版和容器镜像基于 JDK8 构建。 -![runtime_docker_5](/images/install/runtime_docker_5.png) +要在 JDK8 环境下运行容器,请在 EventMesh 源代码的项目根目录下执行: -## 8. 探索更多 +```shell +sudo docker build -t yourname/eventmesh:yourtag -f docker/Dockerfile_jdk8 . +``` -现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 +如果您希望以 JDK11 作为容器的运行环境,则执行: -希望你享受这个过程并获得更多收获! +```shell +sudo docker build -t yourname/eventmesh:yourtag -f docker/Dockerfile_jdk11 . +``` diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/05-demo.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/05-demo.md index 6a08fcbf19..935bf09e29 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/05-demo.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/05-demo.md @@ -1,138 +1,143 @@ -# 运行 eventmesh-sdk-java demo +# 运行 Java SDK Demo [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.eventmesh/eventmesh-sdk-java/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.apache.eventmesh/eventmesh-sdk-java) -> EventMesh-sdk-java作为客户端,与eventmesh-runtime通信,用于完成消息的发送和接收。 +> eventmesh-sdk-java 作为客户端,与 EventMesh Runtime 通信,用于完成消息的发送和接收。 > -> EventMesh-sdk-java支持异步消息和广播消息。异步消息表示生产者只发送消息,不关心回复消息。广播消息表示生产者发送一次消息,所有订阅广播主题的消费者都将收到消息 +> eventmesh-sdk-java 支持异步消息和广播消息。异步消息表示生产者只发送消息,不关心回复消息。广播消息表示生产者发送一次消息,所有订阅广播主题的消费者都将收到消息。 > -> EventMesh-sdk-java支持HTTP,TCP 和 GRPC 协议。 +> eventmesh-sdk-java 支持 HTTP、TCP 和 GRPC 协议。 -TCP, HTTP 和 GRPC 示例都在**eventmesh-examples**模块下 +TCP、HTTP 和 GRPC 示例都在`eventmesh-examples`模块下。 ## 1. TCP + ### 1.1 异步消息 -- 创建主题TEST-TOPIC-TCP-ASYNC,可以通过 rocketmq-console 或者 rocketmq tools 命令 +- 创建主题 TEST-TOPIC-TCP-ASYNC,可以通过 rocketmq-console 或者 rocketmq tools 命令 -- 启动消费者,订阅上一步骤已经创建的Topic +- 启动消费者,订阅上一步骤已经创建的 Topic ``` -运行 org.apache.eventmesh.tcp.demo.sub.eventmeshmessage.AsyncSubscribe 的main方法 +运行 org.apache.eventmesh.tcp.demo.sub.eventmeshmessage.AsyncSubscribe 的 main 方法 ``` - 启动发送端,发送消息 ``` -运行 org.apache.eventmesh.tcp.demo.pub.eventmeshmessage.AsyncPublish 的main方法 +运行 org.apache.eventmesh.tcp.demo.pub.eventmeshmessage.AsyncPublish 的 main 方法 ``` ### 1.2 广播消息 -- 创建主题TEST-TOPIC-TCP-BROADCAST,可以通过 rocketmq-console 或者 rocketmq tools 命令 +- 创建主题 TEST-TOPIC-TCP-BROADCAST,可以通过 rocketmq-console 或者 rocketmq tools 命令 -- 启动消费端,订阅上一步骤已经创建的Topic +- 启动消费端,订阅上一步骤已经创建的 Topic ``` -运行 org.apache.eventmesh.tcp.demo.sub.eventmeshmessage.AsyncSubscribeBroadcast 的main方法 +运行 org.apache.eventmesh.tcp.demo.sub.eventmeshmessage.AsyncSubscribeBroadcast 的 main 方法 ``` - 启动发送端,发送广播消息 ``` -运行 org.apache.eventmesh.tcp.demo.pub.eventmeshmessage.AsyncPublishBroadcast 的main方法 +运行 org.apache.eventmesh.tcp.demo.pub.eventmeshmessage.AsyncPublishBroadcast 的 main 方法 ``` -更多关于TCP部分的内容,请参考 [EventMesh TCP](../sdk-java/03-tcp.md) +更多关于 TCP 部分的内容,请参考 [EventMesh TCP](../sdk-java/03-tcp.md) ## 2. HTTP -> 对于HTTP,eventmesh-sdk-java对对于异步事件实现了发送与订阅 +> 对于 HTTP,eventmesh-sdk-java 对异步事件实现了发送与订阅。 > ->在演示中,Java类`LiteMessage`的`content`字段表示一个特殊的协议,因此,如果您要使用eventmesh-sdk-java的http-client,则只需设计协议的内容并在同一时间提供消费者的应用程序。 +> 在 Demo 中,Java 类`EventMeshMessage`的`content`字段表示一个特殊的协议。因此,如果您要使用 eventmesh-sdk-java 的 http-client,则只需设计协议的内容并在同一时间提供消费者的应用程序。 ### 2.1 异步事件 -> 生产者将事件发送给下游即可,无需等待响应 +> 生产者将事件发送给下游即可,无需等待响应。 -- 创建主题TEST-TOPIC-HTTP-ASYNC,可以通过rocketmq-console或者rocketmq tools 命令 +- 创建主题 TEST-TOPIC-HTTP-ASYNC,可以通过 rocketmq-console 或者 rocketmq tools 命令 -- 启动消费端,订阅Topic +- 启动消费端,订阅 Topic - 异步事件消费端为spring boot demo,运行demo即可启动服务并完成Topic订阅 + 异步事件消费端为 SpringBoot Demo,运行 Demo 即可启动服务并完成 Topic 订阅 ``` -运行 org.apache.eventmesh.http.demo.sub.SpringBootDemoApplication 的main方法 +运行 org.apache.eventmesh.http.demo.sub.SpringBootDemoApplication 的 main 方法 ``` - 启动发送端,发送消息 ``` -运行 org.apache.eventmesh.http.demo.pub.eventmeshmessage.AsyncPublishInstance 的main方法 +运行 org.apache.eventmesh.http.demo.pub.eventmeshmessage.AsyncPublishInstance 的 main 方法 ``` -更多关于HTTP部分的内容,请参考 [EventMesh HTTP](../sdk-java/02-http.md) + +更多关于 HTTP 部分的内容,请参考 [EventMesh HTTP](../sdk-java/02-http.md)。 ## 3. GRPC -> eventmesh-sdk-java 实现了 gRPC 协议. 它能异步和同步发送事件到 eventmesh-runtime. -> 它可以通过webhook和事件流方式订阅消费事件, 同时也支持 CNCF CloudEvents 协议. +> eventmesh-sdk-java 实现了 gRPC 协议。它能异步或同步地发送事件到 EventMesh Runtime。 +> +> 它可以通过 Webhook 和事件流方式订阅消费事件,同时也支持 CNCF CloudEvents 协议。 -### 3.1 异步事件发送 和 webhook订阅 +### 3.1 异步事件发送 和 Webhook 订阅 -> Async生产者 异步发送事件到 eventmesh-runtime, 不需要等待事件储存到 `event-store` -> 在webhook 消费者, 事件推送到消费者的http endpoint url。这个URL在消费者的 `Subscription` 模型定于. 这方法跟前面的Http eventmsh client类似。 +> 生产者可以异步地发送事件到 EventMesh Runtime,不需要等待事件储存到 Event Store。 +> +> 对于 Webhook 消费者,事件会推送到消费者的 HTTP Endpoint URL,即消费者的`subscribeUrl`。此方法和前面的 Http EventMesh client 类似。 -- 在rocketmq 创建主题 TEST-TOPIC-GRPC-ASYNC +- 在 rocketmq 创建主题 TEST-TOPIC-GRPC-ASYNC - 启动 publisher 发送事件 ``` -运行 org.apache.eventmesh.grpc.pub.eventmeshmessage.AsyncPublishInstance 的main方法 +运行 org.apache.eventmesh.grpc.pub.eventmeshmessage.AsyncPublishInstance 的 main 方法 ``` - 启动 webhook 消费者 ``` -运行 org.apache.eventmesh.grpc.sub.app.SpringBootDemoApplication 的main方法 +运行 org.apache.eventmesh.grpc.sub.app.SpringBootDemoApplication 的 main 方法 ``` ### 3.2 同步事件发送和事件流订阅 -> 同步生产者 发送事件到 eventmesh-runtime, 同时等待事件储存到 `event-store` -> 在事件流消费者,事件以流的形式推送到 `ReceiveMsgHook` 客户端。 这方法类似 eventmesh client. +> 生产者同步地发送事件到 EventMesh Runtime,同时等待事件储存到 Event Store。 +> +> 对于事件流消费者,事件以流的形式推送到 `ReceiveMsgHook` 客户端。此方法类似于 EventMesh client。 -- 在rocketmq 创建主题 TEST-TOPIC-GRPC-RR +- 在 rocketmq 创建主题 TEST-TOPIC-GRPC-RR - 启动 Request-Reply publisher 发送事件 ``` -运行 org.apache.eventmesh.grpc.pub.eventmeshmessage.RequestReplyInstance 的main方法 +运行 org.apache.eventmesh.grpc.pub.eventmeshmessage.RequestReplyInstance 的 main 方法 ``` - 启动 stream subscriber ``` -运行 org.apache.eventmesh.grpc.sub.EventmeshAsyncSubscribe 的main方法 +运行 org.apache.eventmesh.grpc.sub.EventmeshAsyncSubscribe 的 main 方法 ``` ### 3.3 批量事件发布 -> 批量发布多个事件到 eventmesh-runtime. 这是异步操作 +> 异步地批量发布多个事件到 EventMesh Runtime。 -- 在rocketmq 创建主题 TEST-TOPIC-GRPC-ASYNC +- 在 rocketmq 创建主题 TEST-TOPIC-GRPC-ASYNC - 启动 publisher 来批量发布事件 ``` -运行 org.apache.eventmesh.grpc.pub.eventmeshmessage.BatchPublishInstance 的main方法 +运行 org.apache.eventmesh.grpc.pub.eventmeshmessage.BatchPublishInstance 的 main 方法 ``` -更多关于 gRPC 部分的内容,请参考 [EventMesh gRPC](../sdk-java/04-grpc.md) +更多关于 gRPC 部分的内容,请参考 [EventMesh gRPC](../sdk-java/04-grpc.md)。 -## 4. 测试 +## 4. 使用 Shell 脚本运行 Demo -请参考[EventMesh Store](./01-store.md) 和 [EventMesh Runtime](./03-runtime.md) 完成运行环境的部署 +请参考 [Event Store](./01-store.md) 和 [EventMesh Runtime](./03-runtime.md) 完成运行环境的部署 -完成 store 和 runtime 的部署后,就可以在 eventmesh-examples 模块下运行我们的 demo 来体验 eventmesh 了: +完成 Store 和 Runtime 的部署后,就可以在 eventmesh-examples 模块下运行我们的 Demo 来体验 EventMesh 了: -gradle编译: +gradle 编译: ```shell cd apache-eventmesh-1.9.0-src/eventmesh-examples @@ -145,27 +150,29 @@ cd ./dist/bin ### 4.1 TCP -TCP Sub +#### TCP Sub ```shell bash tcp_eventmeshmessage_sub.sh ``` -打开对应log文件查看日志: +打开对应 log 文件查看日志: + ``` cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_pub.out ``` -![demo_2](/images/install/demo_2.png) +![demo_2](/images/install/demo_2.png) -TCP Pub +#### TCP Pub ```shell bash tcp_pub_eventmeshmessage.sh ``` -打开对应log文件查看日志: +打开对应 log 文件查看日志: + ``` cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_sub.out @@ -175,13 +182,14 @@ tail -f demo_tcp_sub.out ### 4.2 TCP Broadcast -TCP Sub Broadcast +#### TCP Sub Broadcast ```shell sh tcp_sub_eventmeshmessage_broadcast.sh ``` -打开对应log文件查看日志: +打开对应 log 文件查看日志: + ``` cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_sub_broadcast.out @@ -189,13 +197,14 @@ tail -f demo_tcp_sub_broadcast.out ![demo_4](/images/install/demo_3.png) -TCP Pub Broadcast +#### TCP Pub Broadcast ```shell sh tcp_pub_eventmeshmessage_broadcast.sh ``` -打开对应log文件查看日志: +打开对应 log 文件查看日志: + ``` cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_tcp_pub_broadcast.out @@ -205,13 +214,14 @@ tail -f demo_tcp_pub_broadcast.out ### 4.3 HTTP -HTTP Sub +#### HTTP Sub ```shell sh http_sub.sh ``` -打开对应log文件查看日志: +打开对应 log 文件查看日志: + ``` cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_http_sub.out @@ -219,13 +229,14 @@ tail -f demo_http_sub.out ![demo_6](/images/install/demo_6.png) -HTTP Pub +#### HTTP Pub ```shell sh http_pub_eventmeshmessage.sh ``` -打开对应log文件查看日志: +打开对应 log 文件查看日志: + ``` cd /root/apache-eventmesh-1.9.0-src/eventmesh-examples/dist/logs tail -f demo_http_pub.out diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/06-operator.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/06-operator.md new file mode 100644 index 0000000000..8f3ae3593c --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/06-operator.md @@ -0,0 +1,97 @@ +# EventMesh 与 K8S 集成 + +### 1. 依赖 + +``` +docker +golang (version 1.19) +kubernetes (kubectl) +kubernetes 和 docker 之间有一定的兼容性,请检查它们之间的版本兼容性,并下载相应的版本,以确保它们能一起正常工作。 +``` + +### 2. 启动 + +进入 eventmesh-operator 目录。 + +```shell +cd eventmesh-operator +``` + +将 CRD 安装到 k8s 集群。 + +```shell +make install + +# Uninstall CRDs from the K8s cluster +make uninstall +``` + +如果出现错误`eventmesh-operator/bin/controller-gen: No such file or directory`,运行以下命令: + +```shell +# 如有必要,在本地下载 controller-gen. +make controller-gen +# 如有必要,在本地下载 kustomize. +make kustomize +``` + +查看 crds 信息: + +``` shell +# 运行以下命令查看 crds 信息: +kubectl get crds +NAME CREATED AT +connectors.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z +runtimes.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z +``` + +创建和删除 CRs: + +自定义资源对象位于:/config/samples + +删除 CR,只需将`create`替换为`delete`即可。 + +```shell +# 为 eventmesh-runtime、eventmesh-connector-rocketmq 创建 CR, 创建 clusterIP 可让 eventmesh-runtime 与其他组件通信。 +make create + +#success: +configmap/runtime-config created +runtime.eventmesh-operator.eventmesh/eventmesh-runtime created +service/runtime-cluster-service created +configmap/connector-rocketmq-config created +connectors.eventmesh-operator.eventmesh/connector-rocketmq created + +# 查看创建的 service. +kubectl get service +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +runtime-cluster-service ClusterIP 10.109.209.72 10000/TCP 17s + +# Delete CR +make delete +``` + +运行 eventmesh-operator 创建 pods。 + +```shell +# run controller +make run +# log +go fmt ./... +go vet ./... +go run ./main.go +INFO controller-runtime.metrics Metrics server is starting to listen {"addr": ":9020"} +INFO setup starting manager +INFO Starting server {"kind": "health probe", "addr": "[::]:8081"} +INFO Starting server {"path": "/metrics", "kind": "metrics", "addr": "[::]:9020"} +INFO runtime Creating a new eventMeshRuntime StatefulSet. {"StatefulSet.Namespace": "default", "StatefulSet.Name": "eventmesh-runtime-0-a"} +INFO connector Creating a new Connector StatefulSet. {"StatefulSet.Namespace": "default", "StatefulSet.Name": "connector-rocketmq"} +INFO runtime Successful reconciliation! +INFO connector Successful reconciliation! + +# 成功启动 pod 后,运行以下命令查看 pod。 +kubectl get pods +NAME READY STATUS RESTARTS AGE +connector-rocketmq-0 1/1 Running 0 12m +eventmesh-runtime-0-a-0 1/1 Running 0 12m +``` \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/07-faq.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/07-faq.md new file mode 100644 index 0000000000..3c315bb2a5 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/instruction/07-faq.md @@ -0,0 +1,41 @@ +# 常见问题 + +## 导入 Eclipse + +我们推荐使用 `Intellij IDEA` 进行开发,如果您希望使用 `Eclipse`,可以参考下面的步骤导入项目。 + +### 前提 + +- 64 位 JDK 1.8+ +- Gradle 7.0+,Eclipse 已安装 Gradle 插件 + +### 下载 + +```shell +git clone https://github.com/apache/eventmesh.git +``` + +### 项目编译环境 + +打开命令行终端,运行 `./gradlew cleanEclipse eclipse`。 + +### 配置修改 + +修改工程名称和 `settings.gradle` 配置文件参数、`rootProject.name` 参数一致 + +### 修改 eclipse.init 配置文件 + +配置 lombok,以 1.18.8 版本为例: + +``` +-javaagent:lombok-1.18.8.jar +-XBootclasspath/a:lombok-1.18.8.jar +``` + +### 202106 版本 Eclipse 配置 + +`eclipse.init` 增加配置参数:`--illegal-access=permit` + +### 导入 + +打开 Eclipse,导入 EventMesh 项目到 IDE 中。 \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/introduction.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/introduction.md index de44fcb2c5..11e9b6ae60 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/introduction.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/introduction.md @@ -14,10 +14,10 @@ sidebar_position: 0 ## 特性 -- **通信协议**: EventMesh 可以使用 TCP、HTTP 或 gRPC 与客户端通信。 -- **CloudEvents**: EventMesh 支持[CloudEvents](https://cloudevents.io) 规范作为事件的格式。CloudEvents 是一种描述事件数据的公共格式的规范,用于在服务、平台和系统之间提供互操作性。 -- **Schema 注册**: EventMesh 实现了schema注册,该schema注册可以接收并存储来自客户端的模式,并提供其他客户端检索模式的接口。 -- **可观察性**: EventMesh 暴露了一系列metrics,例如 HTTP 协议的平均延迟和传递消息数。这些metrics可以使用 Prometheus 或 OpenTelemetry 收集和分析。 +- **通信协议**:EventMesh 可以使用 TCP、HTTP 或 gRPC 与客户端通信。 +- **CloudEvents**: EventMesh 支持 [CloudEvents](https://cloudevents.io) 规范作为事件的格式。CloudEvents 是一种描述事件数据的公共格式的规范,用于在服务、平台和系统之间提供互操作性。 +- **Schema 注册**: EventMesh 实现了 schema 注册,该 schema 注册可以接收并存储来自客户端的模式,并提供其他客户端检索模式的接口。 +- **可观察性**: EventMesh 暴露了一系列 metrics,例如 HTTP 协议的平均延迟和传递消息数。这些 metrics 可以使用 Prometheus 或 OpenTelemetry 收集和分析。 - **事件工作流程编排**:EventMesh Workflow 可以接收事件,并根据工作流定义和当前工作流状态决定触发哪个命令。工作流定义可以使用 [Serverless Workflow](https://serverlessworkflow.io) DSL 编写。 ## 组件 @@ -25,9 +25,9 @@ sidebar_position: 0 Apache EventMesh 由多个组件组成,这些组件集成了不同的中间件和消息协议,以增强应用程序运行时的功能。 - **eventmesh-runtime**:中间件,在生产者和消费者之间传输事件,支持云原生应用程序和微服务。 -- **eventmesh-sdk-java**:支持HTTP,TCP和[gRPC](https://grpc.io/)协议的Java SDK。 -- **eventmesh-connector-plugin**:插件集合,连接中间件,例如[Apache Kafka](https://kafka.apache.org/),[Apache RocketMQ](https://rocketmq.apache.org/),[Apache Pulsar](https://pulsar.apache.org/)和[Redis](https://redis.io/)。 -- **eventmesh-registry-plugin**:插件集合,集成服务注册表,例如[Nacos](https://nacos.io/)和[etcd](https://etcd.io/)。 -- **eventmesh-security-plugin**:插件集合,实现安全机制,例如ACL(访问控制列表),身份验证和授权。 -- **eventmesh-protocol-plugin**:插件集合,实现消息协议,例如[CloudEvents](https://cloudevents.io/)和[MQTT](https://mqtt.org/)。 +- **eventmesh-sdk-java**:支持 HTTP,TCP 和 [gRPC](https://grpc.io/) 协议的 Java SDK。 +- **eventmesh-connector-plugin**:插件集合,连接中间件,例如 [Apache Kafka](https://kafka.apache.org/),[Apache RocketMQ](https://rocketmq.apache.org/),[Apache Pulsar](https://pulsar.apache.org/) 和 [Redis](https://redis.io/)。 +- **eventmesh-registry-plugin**:插件集合,集成服务注册表,例如 [Nacos](https://nacos.io/) 和 [etcd](https://etcd.io/)。 +- **eventmesh-security-plugin**:插件集合,实现安全机制,例如 ACL(访问控制列表),身份验证和授权。 +- **eventmesh-protocol-plugin**:插件集合,实现消息协议,例如 [CloudEvents](https://cloudevents.io/) 和 [MQTT](https://mqtt.org/)。 - **eventmesh-admin**:控制面板,管理客户端,主题和订阅。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/roadmap.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/roadmap.md index 43c766b378..733aeee43e 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/roadmap.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/roadmap.md @@ -2,9 +2,9 @@ sidebar_position: 1 --- -# EventMesh产品路线图 +# EventMesh 产品路线图 -下表列出了EventMesh的新特性和bug修复情况,详情请参考 [release notes](https://eventmesh.apache.org/events/release-notes/v1.10.0/). +下表列出了 EventMesh 的新特性和 Bug 修复情况,详情请参考 [Release Notes](https://eventmesh.apache.org/events/release-notes/v1.10.0/)。 ## List of Features and Milestones @@ -44,3 +44,49 @@ sidebar_position: 1 | Planned | Rust SDK | [GitHub Issue](https://github.com/apache/eventmesh/issues/815) | | Planned | WebAssembly Runtime | [GitHub Issue](https://github.com/apache/eventmesh/issues/576) | | Planned | Filter Chain | [GitHub Issue](https://github.com/apache/eventmesh/issues/664) | + +## 连接器实现状态 + +| 服务和中间件 | 源 | 汇 | +|:------------------------------------------:|:------:|:------:| +| [RocketMQ](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-rocketmq) | ✅ | ✅ | +| [Kafka](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-kafka) | ✅ | ✅ | +| [Pulsar](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pulsar) | ✅ | ✅ | +| [RabbitMQ](./design-document/connect/rabbitmq-connector) | ✅ | ✅ | +| [HTTP](./design-document/connect/http-connector) | ✅ | ⬜ | +| [JDBC](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-jdbc) | ⬜ | ✅ | +| [Spring](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-spring) | ✅ | ✅ | +| [OpenFunction](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-openfunction) | ✅ | ✅ | +| [文件](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-file) | ✅ | ✅ | +| 邮件 | ⬜ | ⬜ | +| [Redis](./design-document/connect/redis-connector) | ✅ | ✅ | +| [S3 存储](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-s3) | ⬜ | ✅ | +| ClickHouse | ⬜ | ⬜ | +| [MongoDB](./design-document/connect/mongodb-connector) | ✅ | ✅ | +| [Prometheus](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-prometheus) | ✅ | ⬜ | +| [Knative](./design-document/connect/knative-connector) | ✅ | ✅ | +| [Pravega](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pravega) | ✅ | ✅ | +| 更多连接器正在计划中 ... | N/A | N/A | + +| 平台和产品 | 源 | 汇 | +|:------------------------------------------:|:------:|:------:| +| [飞书/Lark](./design-document/connect/lark-connector) | ⬜ | ✅ | +| [钉钉](./design-document/connect/dingtalk-connector) | ⬜ | ✅ | +| [企业微信](./design-document/connect/wecom-connector) | ⬜ | ✅ | +| [微信](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-wechat) | ⬜ | ✅ | +| GitHub | ⬜ | ⬜ | +| ChatGPT | ⬜ | ⬜ | +| [Slack](./design-document/connect/slack-connector) | ⬜ | ✅ | +| 更多连接器正在计划中 ... | N/A | N/A | + +## 事件存储实现状态 + +| 服务和中间件 | 接入 | Topic 管理 | +|:------------------------------------------:|:------:|:------:| +| RocketMQ | ✅ | ✅ | +| Kafka | ✅ | ✅ | +| Standalone | ✅ | ✅ | +| Pulsar | ✅ | ⬜ | +| RabbitMQ | ✅ | ⬜ | +| Redis | ✅ | ⬜ | +| 支持实现更多事件存储 ... | N/A | N/A | diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/01-intro.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/01-intro.md index 80a0db79a9..c50dad549a 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/01-intro.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/01-intro.md @@ -5,30 +5,22 @@ import TabItem from '@theme/TabItem'; [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.eventmesh/eventmesh-sdk-java/badge.svg?style=for-the-badge)](https://maven-badges.herokuapp.com/maven-central/org.apache.eventmesh/eventmesh-sdk-java) -EventMesh Java SDK 是在一个 Java 应用中集成 Eventmesh 所需的 Java 组件集合。SDK 支持使用 TCP、HTTP 和 gRPC 协议来发送和接收同步消息、异步消息和广播消息。SDK 实现了 EventMesh 消息、CloudEvents 和 OpenMessaging 形式。您可以在 [`eventmesh-example`](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 模块中查看示例项目。 - - +EventMesh Java SDK 是在一个 Java 应用中集成 EventMesh 所需的 Java 组件集合。SDK 支持使用 TCP、HTTP 和 gRPC 协议来发送和接收同步消息、异步消息和广播消息。SDK 实现了 EventMesh 消息、CloudEvents 和 OpenMessaging 形式。您可以在 [`eventmesh-example`](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 模块中查看示例项目。 - - ​ 使用 Gradle 安装 EventMesh Java SDK,您需要在模块的 `build.gradle` 文件的依赖块中将 `org.apache.eventmesh:eventmesh-sdk-java` 声明为 `implementation`。 -```groovy +```gradle dependencies { - implementation 'org.apache.eventmesh:eventmesh-sdk-java:1.4.0' + implementation 'org.apache.eventmesh:eventmesh-sdk-java:1.10.0' } ``` - - - - 使用 Maven 安装 EventMesh Java SDK,您需要在项目 `pom.xml` 文件的依赖块中声明 `org.apache.eventmesh:eventmesh-sdk-java`。 ```xml @@ -36,12 +28,10 @@ dependencies { org.apache.eventmesh eventmesh-sdk-java - 1.4.0 + 1.10.0 ``` - - \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/02-http.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/02-http.md index 0ce80ee406..a42016918d 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/02-http.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/02-http.md @@ -1,6 +1,6 @@ # HTTP 协议 -EventMesh Java SDK 实现了 HTTP 异步消息的生产者和消费者。二者都需要一个 `EventMeshHttpClientConfig` 类实例来指定 EventMesh HTTP 客户端的配置信息。其中的 `liteEventMeshAddr`、`userName` 和 `password` 字段需要和 EventMesh runtime `eventmesh.properties` 文件中的相匹配。 +EventMesh Java SDK 实现了 HTTP 异步消息的生产者和消费者。二者都需要一个 `EventMeshHttpClientConfig` 类实例来指定 EventMesh HTTP 客户端的配置信息。其中的 `liteEventMeshAddr`、`userName` 和 `password` 字段需要和 EventMesh Runtime `eventmesh.properties` 文件中的相匹配。 ```java import org.apache.eventmesh.client.http.conf.EventMeshHttpClientConfig; @@ -53,7 +53,7 @@ public class HTTP { } ``` -EventMesh runtime 将发送一个包含 [CloudEvents 格式](https://github.com/cloudevents/spec) 信息的 POST 请求到这个回调的 URL 地址。类 [SubController.java](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java) 实现了 Spring Boot controller,它将接收并解析回调信息。 +EventMesh Runtime 将发送一个包含 [CloudEvents 格式](https://github.com/cloudevents/spec) 信息的 POST 请求到这个回调的 URL 地址。类 [SubController.java](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java) 实现了 Spring Boot controller,它将接收并解析回调信息。 ## HTTP 生产者 @@ -93,23 +93,21 @@ public class HTTP { } ``` -## 使用Curl 命令 +## 使用 Curl 命令 -本段落介绍通过Curl命令体验事件的收发功能 +本段落介绍通过 Curl 命令体验事件的收发功能。 ### 事件发送 -启动EventMesh Runtime服务后,可以使用Curl命令将事件用HTTP POST方法发布到指定的主题,Body内容必须是JSON格式,执行命令示例如下: +启动 EventMesh Runtime 服务后,可以使用 Curl 命令将事件用 HTTP POST 方法发布到指定的主题,Body 内容必须是 JSON 格式,执行命令示例如下: ```shell curl -H "Content-Type:application/json" -X POST -d '{"name": "admin", "pass":"12345678"}' http://127.0.0.1:10105/eventmesh/publish/TEST-TOPIC-HTTP-ASYNC ``` - - ### 事件订阅 -启动EventMesh Runtime服务后,可以使用Curl命令用HTTP POST方法订阅指定的主题列表,Body内容必须是JSON格式,执行命令示例如下: +启动 EventMesh Runtime 服务后,可以使用 Curl 命令用 HTTP POST 方法订阅指定的主题列表,Body 内容必须是 JSON 格式,执行命令示例如下: ```shell curl -H "Content-Type:application/json" -X POST -d '{"url": "http://127.0.0.1:8088/sub/test", "consumerGroup":"TEST-GROUP", "topic":[{"mode":"CLUSTERING","topic":"TEST-TOPIC-HTTP-ASYNC","type":"ASYNC"}]}' http://127.0.0.1:10105/eventmesh/subscribe/local diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/03-tcp.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/03-tcp.md index 3027b53dc6..4e8f36b971 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/03-tcp.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/03-tcp.md @@ -1,6 +1,6 @@ # TCP 协议 -EventMesh Java SDK 实现了同步、异步和广播 TCP 消息的生产者和消费者。 二者都需要一个 `EventMeshHttpClientConfig` 类实例来指定 EventMesh TCP 客户端的配置信息。其中的 `host` 和 `port` 字段需要和 EventMesh runtime `eventmesh.properties` 文件中的相匹配。 +EventMesh Java SDK 实现了同步、异步和广播 TCP 消息的生产者和消费者。二者都需要一个 `EventMeshHttpClientConfig` 类实例来指定 EventMesh TCP 客户端的配置信息。其中的 `host` 和 `port` 字段需要和 EventMesh Runtime `eventmesh.properties` 文件中的相匹配。 ```java import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/04-grpc.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/04-grpc.md index ce8d241d41..cf0b92029e 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/04-grpc.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/sdk-java/04-grpc.md @@ -1,6 +1,6 @@ # gRPC 协议 -EventMesh Java SDK 实现了 gRPC 同步、异步和广播消息的生产者和消费者。二者都需要一个 `EventMeshHttpClientConfig` 类实例来指定 EventMesh gRPC 客户端的配置信息。其中的 `liteEventMeshAddr`、`userName` 和 `password` 字段需要和 EventMesh runtime `eventmesh.properties` 文件中的相匹配。 +EventMesh Java SDK 实现了 gRPC 同步、异步和广播消息的生产者和消费者。二者都需要一个 `EventMeshHttpClientConfig` 类实例来指定 EventMesh gRPC 客户端的配置信息。其中的 `liteEventMeshAddr`、`userName` 和 `password` 字段需要和 EventMesh Runtime `eventmesh.properties` 文件中的相匹配。 ```java import org.apache.eventmesh.client.grpc.config.EventMeshGrpcClientConfig; @@ -24,7 +24,7 @@ public class CloudEventsAsyncSubscribe implements ReceiveMsgHook { ### 流消费者 -EventMesh runtime 会将来自生产者的信息作为一系列事件流向流消费者发送。消费者应实现 `ReceiveHook` 类,其被定义在 [ReceiveMsgHook.java](https://github.com/apache/eventmesh/blob/master/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/ReceiveMsgHook.java)。 +EventMesh Runtime 会将来自生产者的信息作为一系列事件流向流消费者发送。消费者应实现 `ReceiveHook` 类,其被定义在 [ReceiveMsgHook.java](https://github.com/apache/eventmesh/blob/master/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/ReceiveMsgHook.java)。 ```java public interface ReceiveMsgHook { @@ -77,7 +77,7 @@ public class CloudEventsAsyncSubscribe implements ReceiveMsgHook { ### Webhook 消费者 -类 `EventMeshGrpcConsumer` 的 `subscribe` 方法接收一个 `SubscriptionItem` 对象的列表,其中定义了要订阅的主题和一个可选的 timeout 值。如果提供了回调 URL,EventMesh runtime 将向回调 URL 地址发送一个包含 [CloudEvents 格式](https://github.com/cloudevents/spec) 消息的 POST 请求。[SubController.java](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/sub/app/controller/SubController.java) 实现了一个接收并解析回调信息的 Spring Boot controller。 +类 `EventMeshGrpcConsumer` 的 `subscribe` 方法接收一个 `SubscriptionItem` 对象的列表,其中定义了要订阅的主题和一个可选的 timeout 值。如果提供了回调 URL,EventMesh Runtime 将向回调 URL 地址发送一个包含 [CloudEvents 格式](https://github.com/cloudevents/spec) 消息的 POST 请求。[SubController.java](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/sub/app/controller/SubController.java) 实现了一个接收并解析回调信息的 Spring Boot controller。 ```java import org.apache.eventmesh.client.grpc.consumer.EventMeshGrpcConsumer; diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/upgrade-guide/01-upgrade-guide.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/upgrade-guide/01-upgrade-guide.md index 733b5e1901..b8d79ec607 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/upgrade-guide/01-upgrade-guide.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.10.0/upgrade-guide/01-upgrade-guide.md @@ -1,16 +1,15 @@ # EventMesh 升级指引 -> 本文简单介绍EventMesh从1.2.0版本升级到最新版本的注意事项。 +> 本文简单介绍 EventMesh 从 1.2.0 版本升级到最新版本的注意事项。 ## 1. 注意事项 -**如果您是首次接触并使用EventMesh,您可以忽略该章节。** +**如果您是首次接触并使用 EventMesh,您可以忽略该章节。** ## 2. 服务升级安装 -EventMesh运行时模块的升级和启动可以按照 [设计文档](https://eventmesh.apache.org/docs/instruction/runtime) 完成. +EventMesh 运行时模块的升级和启动可以按照 [部署指南](https://eventmesh.apache.org/docs/instruction/runtime) 完成。 -版本之间的差异和变化,请参考不同版本的[release notes](https://eventmesh.apache.org/events/release-notes)。可以满足不同版本间的兼容性。 - -如果需要使用最新的功能,按照版本说明升级到相应的版本即可,不同的插件模块组件可以单独打包配置。可以参考相应的[功能设计文档和指南](https://eventmesh.apache.org/docs/design-document/) +版本之间的差异和变化,请参考不同版本的 [Release Notes](https://eventmesh.apache.org/events/release-notes)。可以满足不同版本间的兼容性。 +如果需要使用最新的功能,按照版本说明升级到相应的版本即可,不同的插件模块组件可以单独打包配置。可以参考相应的 [功能设计文档和指南](https://eventmesh.apache.org/docs/design-document/)。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.2.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.2.0/instruction/03-runtime.md index 02756b4c01..26e2f1c311 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.2.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.2.0/instruction/03-runtime.md @@ -1,68 +1,67 @@ -# Eventmesh-runtime 快速入门说明 +# EventMesh Runtime -EventMesh Runtime 是 EventMesh 集群中有状态的 Mesh 节点,负责 Source Connector 与 Sink Connector 之间的事件传输,并可以使用 EventMesh Storage 作为事件的存储队列。 +The EventMesh Runtime is a stateful mesh node in an EventMesh cluster that is responsible for event transfer between the Source Connector and the Sink Connector, and can use EventMesh Storage as a storage queue for events. -## 1 本地构建运行 +## 1 Run on your local machine -### 1.1 源码启动 +### 1.1 Run from source code -#### 1.1.1 依赖 +#### 1.1.1 Dependencies ``` -建议使用64位操作系统,建议使用Linux / Unix; -64位JDK 1.8+; -Gradle至少为7.0, 推荐 7.0.* +64-bit OS,we recommend Linux/Unix; +64-bit JDK 1.8+; +Gradle 7.0+, we recommend 7.0.*; ``` +#### 1.1.2 Download source code -#### 1.1.2 下载源码 +Download and extract the source code of the latest release from [EventMesh download](https://eventmesh.apache.org/download). For example, with the current latest version, you will get `apache-eventmesh-1.9.0-source.tar.gz`. -从 [EventMesh download](https://eventmesh.apache.org/download) 下载并提取最新版本的源代码。比如目前最新版,您将获得`apache-eventmesh-1.9.0-source.tar.gz`。 +#### 1.1.3 Run form local -#### 1.1.3 本地启动 +**1.1.3.1 Description of the project structure:** -**1.1.3.1 项目结构说明:** +- eventmesh-common : eventmesh public classes and methods module +- eventmesh-connector-api : eventmesh connector plugin interface definition module +- eventmesh-connector-plugin : eventmesh connector plugin module +- eventmesh-runtime : eventmesh runtime module +- eventmesh-sdk-java : eventmesh java client sdk +- eventmesh-starter : eventmesh local startup and runtime project portal +- eventmesh-spi : eventmesh SPI loader module -- eventmesh-common : eventmesh公共类与方法模块 -- eventmesh-connector-api : eventmesh connector插件接口定义模块 -- eventmesh-connector-plugin : eventmesh connector插件模块 -- eventmesh-runtime : eventmesh运行时模块 -- eventmesh-sdk-java : eventmesh java客户端sdk -- eventmesh-starter : eventmesh本地启动运行项目入口 -- eventmesh-spi : eventmesh SPI加载模块 +> Note: Plugin modules follow the SPI specification defined by eventmesh, custom SPI interfaces need to be marked with the annotation @EventMeshSPI. +> Plugin instances need to be configured in the corresponding module under /main/resources/META-INF/eventmesh with a mapping file of the relevant interfaces to their implementation classes, with the name of the file being the full class name of the SPI interface. +> The content of the file is the mapping from the plugin instance name to the plugin instance, see eventmesh-connector-rocketmq plugin module for details. -> 注:插件模块遵循 eventmesh 定义的SPI规范, 自定义的SPI接口需要使用注解 @EventMeshSPI 标识. -> 插件实例需要在对应模块中的 /main/resources/META-INF/eventmesh 下配置相关接口与实现类的映射文件,文件名为SPI接口全类名. -> 文件内容为插件实例名到插件实例的映射, 具体可以参考 eventmesh-connector-rocketmq 插件模块 +**1.1.3.2 Plugin Description** -**1.1.3.2 插件说明** +***1.1.3.2.1 Installing the plugin*** -***1.1.3.2.1 安装插件*** +There are two ways to install the plugin -有两种方式安装插件 - -- classpath加载:本地开发可以通过在 eventmesh-starter 模块 build.gradle 中进行声明,例如声明使用 rocketmq 插件 +- classpath loading: Local developers can install the plugin by declaring it in the eventmesh-starter module build.gradle, e.g., declare that it uses the rocketmq plugin ```gradle implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") ``` -- 文件加载:通过将插件安装到插件目录,EventMesh 在运行时会根据条件自动加载插件目录下的插件,可以通过执行以下命令安装插件 +- File loading: By installing the plugin to the plugin directory, EventMesh will automatically load the plugins in the plugin directory according to the conditions at runtime, you can install the plugin by executing the following command ```shell -./gradlew clean jar dist && ./gradlew installPlugin +. /gradlew clean jar dist && . /gradlew installPlugin ``` -***1.1.3.2.2 使用插件*** +***1.1.3.2.2 Using Plugins *** -EventMesh 会默认加载 dist/plugin 目录下的插件,可以通过`-DeventMeshPluginDir=your_plugin_directory`来改变插件目录。运行时需要使用的插件实例可以在 -`confPath`目录下面的`eventmesh.properties`中进行配置。例如通过以下设置声明在运行时使用rocketmq插件。 +EventMesh will load plugins in the dist/plugin directory by default, you can change the plugin directory with `-DeventMeshPluginDir=your_plugin_directory`. Examples of plugins to be used at runtime can be found in the +`confPath` directory under `eventmesh.properties`. For example declare the use of the rocketmq plugin at runtime with the following settings. ```properties #connector plugin eventMesh.connector.plugin.type=rocketmq ``` -**1.1.3.3 配置VM启动参数** +**1.1.3.3 Configuring the VM startup parameters** ```properties -Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml @@ -71,138 +70,128 @@ eventMesh.connector.plugin.type=rocketmq -DconfPath=eventmesh-runtime/conf ``` -> 注:如果操作系统为Windows, 可能需要将文件分隔符换成'\' +> Note: If your operating system is Windows, you may need to replace the file separator with '\'. -**1.1.3.4 启动运行** +**1.1.3.4 Getting up and running** ``` -运行org.apache.eventmesh.starter.StartUp的主要方法 +Run org.apache.eventmesh.starter. ``` -### 1.2 本地二进制构建 +### 1.2 Run form local binary -#### 1.2.1 依赖 +#### 1.1.1 Dependencies ``` -建议使用64位操作系统,建议使用Linux / Unix; -64位JDK 1.8+; -Gradle至少为7.0, 推荐 7.0.* +64-bit OS,we recommend Linux/Unix; +64-bit JDK 1.8+; +Gradle 7.0+, we recommend 7.0.*; ``` -Gradle 是 Apache EventMesh 使用的构建自动化工具。请参考 [官方指南](https://docs.gradle.org/current/userguide/installation.html) 安装最新版本的 Gradle。 +Gradle is the build automation tool used by Apache EventMesh. Please refer to the [offical guide](https://docs.gradle.org/current/userguide/installation.html) to install the latest release of Gradle. -#### 1.2.2 下载源码 +### 1.1.2 Download Source Code -从 [EventMesh download](https://eventmesh.apache.org/download) 下载并提取最新版本的源代码。比如目前最新版,您将获得`apache-eventmesh-1.9.0-source.tar.gz`。 +Download and extract the source code of the latest release from [EventMesh download](https://eventmesh.apache.org/download). For example, with the current latest version, you will get `apache-eventmesh-1.9.0-source.tar.gz`. ```console tar -xvzf apache-eventmesh-1.9.0-source.tar.gz cd apache-eventmesh-1.9.0-src/ ``` -使用 Gradle 构建源代码。 +Build the source code with Gradle. ```console gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - -编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 +Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console cd dist vim conf/eventmesh.properties ``` -#### 1.2.3 构建并加载插件 +### 1.1.3 Build and Load Plugins -Apache EventMesh引入了 SPI 机制,使 EventMesh 能够在运行时发现并加载插件。有两种方式安装插件: +Apache EventMesh introduces the SPI (Service Provider Interface) mechanism, which enables EventMesh to discover and load the plugins at runtime. The plugins could be installed with these methods: -1. Gradle 依赖项: 在 `eventmesh-starter/build.gradle` 中将插件声明为构建依赖项。 +- Gradle Dependencies: Declare the plugins as the build dependencies in `eventmesh-starter/build.gradle`. ```gradle dependencies { implementation project(":eventmesh-runtime") - // 示例: 加载 RocketMQ 插件 + // Example: Load the RocketMQ plugin implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") } ``` -2. 插件目录: EventMesh 会根据 `eventmesh.properties` 加载 `dist/plugin` 目录中的插件。Gradle 的 `installPlugin` 任务会构建插件并将其移动到 `dist/plugin` 目录中。 +- Plugin directory: EventMesh loads the plugins in the `dist/plugin` directory based on `eventmesh.properties`. The `installPlugin` task of Gradle builds and moves the plugins into the `dist/plugin` directory. ```console gradle installPlugin ``` +### 1.1.4 启动 Runtime -#### 1.2.4 启动Runtime - -执行 `start.sh` 脚本启动 EventMesh Runtime 服务器。 +Execute the `start.sh` script to start the EventMesh Runtime server. ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) -查看输出日志: +View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) -## 2 远程部署 +## 2 Remote deployment -### 2.1 依赖 +### 2.1 Dependencies ``` -建议使用64位操作系统,建议使用Linux / Unix; -64位JDK 1.8+; -Gradle至少为7.0, 推荐 7.0.* +64-bit OS,we recommend Linux/Unix; +64-bit JDK 1.8+; +Gradle 7.0+, we recommend 7.0.*; +4g+ available disk to deploy eventmesh-store; ``` -### 2.2 下载 +### 2.2 Download + +Download and extract the executable binaries of the latest release from [EventMesh download](https://eventmesh.apache.org/download).For example, with the current latest version, you will get `apache-eventmesh-1.9.0.tar.gz`. -在 [EventMesh download](https://eventmesh.apache.org/download) 页面选择1.5.0版本的 Binary Distribution 进行下载, 您将获得`apache-eventmesh-1.9.0-bin.tar.gz`。 ```console -# 解压 tar -xvzf apache-eventmesh-1.9.0-bin.tar.gz cd apache-eventmesh-1.9.0 ``` -### 2.3 部署 +### 2.3 Deploy -编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 +Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. The executable binaries contain all plugins in the bundle, thus there's no need to build them from source code. ```console vim conf/eventmesh.properties ``` -执行 `start.sh` 脚本启动 EventMesh Runtime 服务器。 +Execute the `start.sh` script to start the EventMesh Runtime server. ```console bash bin/start.sh ``` -如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 - -![runtime_6](/images/install/runtime_6.png) +If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -查看输出日志: +View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) -停止: +You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.2.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.2.0/instruction/04-runtime-with-docker.md index f15bf57fb0..c2fc492531 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.2.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.2.0/instruction/04-runtime-with-docker.md @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - **删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.3.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.3.0/instruction/03-runtime.md index 02756b4c01..7e879a4e38 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.3.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.3.0/instruction/03-runtime.md @@ -106,8 +106,6 @@ cd apache-eventmesh-1.9.0-src/ gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - 编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 ```console @@ -143,14 +141,12 @@ gradle installPlugin ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) 查看输出日志: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 远程部署 @@ -187,22 +183,15 @@ bash bin/start.sh ``` 如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) - - 查看输出日志: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) 停止: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.3.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.3.0/instruction/04-runtime-with-docker.md index f15bf57fb0..c2fc492531 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.3.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.3.0/instruction/04-runtime-with-docker.md @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - **删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.4.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.4.0/instruction/03-runtime.md index 02756b4c01..7e879a4e38 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.4.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.4.0/instruction/03-runtime.md @@ -106,8 +106,6 @@ cd apache-eventmesh-1.9.0-src/ gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - 编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 ```console @@ -143,14 +141,12 @@ gradle installPlugin ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) 查看输出日志: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 远程部署 @@ -187,22 +183,15 @@ bash bin/start.sh ``` 如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) - - 查看输出日志: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) 停止: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.4.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.4.0/instruction/04-runtime-with-docker.md index f15bf57fb0..c2fc492531 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.4.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.4.0/instruction/04-runtime-with-docker.md @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - **删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.5.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.5.0/instruction/03-runtime.md index 02756b4c01..7e879a4e38 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.5.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.5.0/instruction/03-runtime.md @@ -106,8 +106,6 @@ cd apache-eventmesh-1.9.0-src/ gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - 编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 ```console @@ -143,14 +141,12 @@ gradle installPlugin ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) 查看输出日志: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 远程部署 @@ -187,22 +183,15 @@ bash bin/start.sh ``` 如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) - - 查看输出日志: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) 停止: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.5.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.5.0/instruction/04-runtime-with-docker.md index f15bf57fb0..c2fc492531 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.5.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.5.0/instruction/04-runtime-with-docker.md @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - **删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.6.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.6.0/instruction/03-runtime.md index 02756b4c01..7e879a4e38 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.6.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.6.0/instruction/03-runtime.md @@ -106,8 +106,6 @@ cd apache-eventmesh-1.9.0-src/ gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - 编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 ```console @@ -143,14 +141,12 @@ gradle installPlugin ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) 查看输出日志: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 远程部署 @@ -187,22 +183,15 @@ bash bin/start.sh ``` 如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) - - 查看输出日志: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) 停止: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.6.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.6.0/instruction/04-runtime-with-docker.md index f15bf57fb0..c2fc492531 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.6.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.6.0/instruction/04-runtime-with-docker.md @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - **删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.7.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.7.0/instruction/03-runtime.md index 02756b4c01..7e879a4e38 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.7.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.7.0/instruction/03-runtime.md @@ -106,8 +106,6 @@ cd apache-eventmesh-1.9.0-src/ gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - 编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 ```console @@ -143,14 +141,12 @@ gradle installPlugin ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) 查看输出日志: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 远程部署 @@ -187,22 +183,15 @@ bash bin/start.sh ``` 如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) - - 查看输出日志: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) 停止: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.7.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.7.0/instruction/04-runtime-with-docker.md index f15bf57fb0..c2fc492531 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.7.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.7.0/instruction/04-runtime-with-docker.md @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - **删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.8.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.8.0/instruction/03-runtime.md index 02756b4c01..7e879a4e38 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.8.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.8.0/instruction/03-runtime.md @@ -106,8 +106,6 @@ cd apache-eventmesh-1.9.0-src/ gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - 编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 ```console @@ -143,14 +141,12 @@ gradle installPlugin ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) 查看输出日志: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 远程部署 @@ -187,22 +183,15 @@ bash bin/start.sh ``` 如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) - - 查看输出日志: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) 停止: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.8.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.8.0/instruction/04-runtime-with-docker.md index f15bf57fb0..c2fc492531 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.8.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.8.0/instruction/04-runtime-with-docker.md @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - **删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.9.0/instruction/03-runtime.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.9.0/instruction/03-runtime.md index 02756b4c01..7e879a4e38 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.9.0/instruction/03-runtime.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.9.0/instruction/03-runtime.md @@ -106,8 +106,6 @@ cd apache-eventmesh-1.9.0-src/ gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - 编辑 `eventmesh.properties` 以更改 EventMesh Runtime 的配置(如 TCP 端口、客户端黑名单)。 ```console @@ -143,14 +141,12 @@ gradle installPlugin ```console bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) 查看输出日志: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 远程部署 @@ -187,22 +183,15 @@ bash bin/start.sh ``` 如果看到"EventMeshTCPServer[port=10000] started....",则说明设置成功。 -![runtime_6](/images/install/runtime_6.png) - - 查看输出日志: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) 停止: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v1.9.0/instruction/04-runtime-with-docker.md b/i18n/zh/docusaurus-plugin-content-docs/version-v1.9.0/instruction/04-runtime-with-docker.md index f15bf57fb0..c2fc492531 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v1.9.0/instruction/04-runtime-with-docker.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v1.9.0/instruction/04-runtime-with-docker.md @@ -31,8 +31,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. 创建配置文件 在根据 EventMesh 镜像运行对应容器之前,你需要创建两个配置文件,分别是:```eventMesh.properties``` 和 ```rocketmq-client.properties```。 @@ -45,7 +43,6 @@ cd /data/eventmesh/rocketmq/conf sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) ### 4. 配置 eventMesh.properties @@ -119,8 +116,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - 从这个信息中可以看出,```container id``` 是 ```5bb6b6092672```,```name``` 是 ```eager_driscoll```,它们都可以用来唯一标识这个容器。**注意**:在你的电脑中,它们的值可能跟这里的不同。 ## 7. 管理 EventMesh 容器 @@ -140,16 +135,12 @@ cd ../logs tail -f eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - **删除容器** 命令示例: ```shell sudo docker rm -f [your container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. 探索更多 现在 EventMesh 已经通过容器运行了,你可以参考 [```eventmesh-examples``` 模块](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) 编写并测试自己的代码了。 diff --git a/i18n/zh/docusaurus-theme-classic/footer.json b/i18n/zh/docusaurus-theme-classic/footer.json index a4039a0e89..561b6e2e8d 100644 --- a/i18n/zh/docusaurus-theme-classic/footer.json +++ b/i18n/zh/docusaurus-theme-classic/footer.json @@ -52,7 +52,7 @@ "description": "The label of footer link with label=Thanks linking to http://www.apache.org/foundation/thanks.html" }, "copyright": { - "message": "\n Copyright © 2021 The Apache Software Foundation.\n Apache EventMesh, Apache Incubator, EventMesh, Apache, the Apache feather logo,\n the Apache EventMesh logo and the Apache Incubator project logo\n are trademarks of The Apache Software Foundation.\n ", + "message": "Copyright © 2024 The Apache Software Foundation. Apache EventMesh, EventMesh, Apache, the Apache feather logo, and the Apache EventMesh logo are trademarks of The Apache Software Foundation.", "description": "The footer copyright" }, "link.item.label.Security": { diff --git a/package-lock.json b/package-lock.json index 8a77a29e6c..40975f4e82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,8 @@ "name": "eventmesh-site", "version": "0.0.0", "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/preset-classic": "2.4.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/preset-classic": "2.4.3", "@fontsource/inter": "^4.5.11", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^6.5.0", @@ -24,7 +24,7 @@ "url-loader": "^4.1.1" }, "devDependencies": { - "@docusaurus/module-type-aliases": "^2.3.0", + "@docusaurus/module-type-aliases": "^2.4.3", "@tsconfig/docusaurus": "^1.0.2", "@types/react": "^17.0.13", "@types/react-helmet": "^6.1.1", @@ -83,74 +83,74 @@ } }, "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.19.1.tgz", - "integrity": "sha512-FYAZWcGsFTTaSAwj9Std8UML3Bu8dyWDncM7Ls8g+58UOe4XYdlgzXWbrIgjaguP63pCCbMoExKr61B+ztK3tw==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.0.tgz", + "integrity": "sha512-uZ1uZMLDZb4qODLfTSNHxSi4fH9RdrQf7DXEzW01dS8XK7QFtFh29N5NGKa9S+Yudf1vUMIF+/RiL4i/J0pWlQ==", "dependencies": { - "@algolia/cache-common": "4.19.1" + "@algolia/cache-common": "4.22.0" } }, "node_modules/@algolia/cache-common": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/cache-common/-/cache-common-4.19.1.tgz", - "integrity": "sha512-XGghi3l0qA38HiqdoUY+wvGyBsGvKZ6U3vTiMBT4hArhP3fOGLXpIINgMiiGjTe4FVlTa5a/7Zf2bwlIHfRqqg==" + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/cache-common/-/cache-common-4.22.0.tgz", + "integrity": "sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==" }, "node_modules/@algolia/cache-in-memory": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/cache-in-memory/-/cache-in-memory-4.19.1.tgz", - "integrity": "sha512-+PDWL+XALGvIginigzu8oU6eWw+o76Z8zHbBovWYcrtWOEtinbl7a7UTt3x3lthv+wNuFr/YD1Gf+B+A9V8n5w==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/cache-in-memory/-/cache-in-memory-4.22.0.tgz", + "integrity": "sha512-kf4Cio9NpPjzp1+uXQgL4jsMDeck7MP89BYThSvXSjf2A6qV/0KeqQf90TL2ECS02ovLOBXkk98P7qVarM+zGA==", "dependencies": { - "@algolia/cache-common": "4.19.1" + "@algolia/cache-common": "4.22.0" } }, "node_modules/@algolia/client-account": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/client-account/-/client-account-4.19.1.tgz", - "integrity": "sha512-Oy0ritA2k7AMxQ2JwNpfaEcgXEDgeyKu0V7E7xt/ZJRdXfEpZcwp9TOg4TJHC7Ia62gIeT2Y/ynzsxccPw92GA==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-account/-/client-account-4.22.0.tgz", + "integrity": "sha512-Bjb5UXpWmJT+yGWiqAJL0prkENyEZTBzdC+N1vBuHjwIJcjLMjPB6j1hNBRbT12Lmwi55uzqeMIKS69w+0aPzA==", "dependencies": { - "@algolia/client-common": "4.19.1", - "@algolia/client-search": "4.19.1", - "@algolia/transporter": "4.19.1" + "@algolia/client-common": "4.22.0", + "@algolia/client-search": "4.22.0", + "@algolia/transporter": "4.22.0" } }, "node_modules/@algolia/client-analytics": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/client-analytics/-/client-analytics-4.19.1.tgz", - "integrity": "sha512-5QCq2zmgdZLIQhHqwl55ZvKVpLM3DNWjFI4T+bHr3rGu23ew2bLO4YtyxaZeChmDb85jUdPDouDlCumGfk6wOg==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-analytics/-/client-analytics-4.22.0.tgz", + "integrity": "sha512-os2K+kHUcwwRa4ArFl5p/3YbF9lN3TLOPkbXXXxOvDpqFh62n9IRZuzfxpHxMPKAQS3Et1s0BkKavnNP02E9Hg==", "dependencies": { - "@algolia/client-common": "4.19.1", - "@algolia/client-search": "4.19.1", - "@algolia/requester-common": "4.19.1", - "@algolia/transporter": "4.19.1" + "@algolia/client-common": "4.22.0", + "@algolia/client-search": "4.22.0", + "@algolia/requester-common": "4.22.0", + "@algolia/transporter": "4.22.0" } }, "node_modules/@algolia/client-common": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/client-common/-/client-common-4.19.1.tgz", - "integrity": "sha512-3kAIVqTcPrjfS389KQvKzliC559x+BDRxtWamVJt8IVp7LGnjq+aVAXg4Xogkur1MUrScTZ59/AaUd5EdpyXgA==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-common/-/client-common-4.22.0.tgz", + "integrity": "sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==", "dependencies": { - "@algolia/requester-common": "4.19.1", - "@algolia/transporter": "4.19.1" + "@algolia/requester-common": "4.22.0", + "@algolia/transporter": "4.22.0" } }, "node_modules/@algolia/client-personalization": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/client-personalization/-/client-personalization-4.19.1.tgz", - "integrity": "sha512-8CWz4/H5FA+krm9HMw2HUQenizC/DxUtsI5oYC0Jxxyce1vsr8cb1aEiSJArQT6IzMynrERif1RVWLac1m36xw==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-personalization/-/client-personalization-4.22.0.tgz", + "integrity": "sha512-pEOftCxeBdG5pL97WngOBi9w5Vxr5KCV2j2D+xMVZH8MuU/JX7CglDSDDb0ffQWYqcUN+40Ry+xtXEYaGXTGow==", "dependencies": { - "@algolia/client-common": "4.19.1", - "@algolia/requester-common": "4.19.1", - "@algolia/transporter": "4.19.1" + "@algolia/client-common": "4.22.0", + "@algolia/requester-common": "4.22.0", + "@algolia/transporter": "4.22.0" } }, "node_modules/@algolia/client-search": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/client-search/-/client-search-4.19.1.tgz", - "integrity": "sha512-mBecfMFS4N+yK/p0ZbK53vrZbL6OtWMk8YmnOv1i0LXx4pelY8TFhqKoTit3NPVPwoSNN0vdSN9dTu1xr1XOVw==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/client-search/-/client-search-4.22.0.tgz", + "integrity": "sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==", "dependencies": { - "@algolia/client-common": "4.19.1", - "@algolia/requester-common": "4.19.1", - "@algolia/transporter": "4.19.1" + "@algolia/client-common": "4.22.0", + "@algolia/requester-common": "4.22.0", + "@algolia/transporter": "4.22.0" } }, "node_modules/@algolia/events": { @@ -159,47 +159,47 @@ "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" }, "node_modules/@algolia/logger-common": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/logger-common/-/logger-common-4.19.1.tgz", - "integrity": "sha512-i6pLPZW/+/YXKis8gpmSiNk1lOmYCmRI6+x6d2Qk1OdfvX051nRVdalRbEcVTpSQX6FQAoyeaui0cUfLYW5Elw==" + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/logger-common/-/logger-common-4.22.0.tgz", + "integrity": "sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==" }, "node_modules/@algolia/logger-console": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/logger-console/-/logger-console-4.19.1.tgz", - "integrity": "sha512-jj72k9GKb9W0c7TyC3cuZtTr0CngLBLmc8trzZlXdfvQiigpUdvTi1KoWIb2ZMcRBG7Tl8hSb81zEY3zI2RlXg==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/logger-console/-/logger-console-4.22.0.tgz", + "integrity": "sha512-7JKb6hgcY64H7CRm3u6DRAiiEVXMvCJV5gRE672QFOUgDxo4aiDpfU61g6Uzy8NKjlEzHMmgG4e2fklELmPXhQ==", "dependencies": { - "@algolia/logger-common": "4.19.1" + "@algolia/logger-common": "4.22.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.19.1.tgz", - "integrity": "sha512-09K/+t7lptsweRTueHnSnmPqIxbHMowejAkn9XIcJMLdseS3zl8ObnS5GWea86mu3vy4+8H+ZBKkUN82Zsq/zg==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.0.tgz", + "integrity": "sha512-BHfv1h7P9/SyvcDJDaRuIwDu2yrDLlXlYmjvaLZTtPw6Ok/ZVhBR55JqW832XN/Fsl6k3LjdkYHHR7xnsa5Wvg==", "dependencies": { - "@algolia/requester-common": "4.19.1" + "@algolia/requester-common": "4.22.0" } }, "node_modules/@algolia/requester-common": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/requester-common/-/requester-common-4.19.1.tgz", - "integrity": "sha512-BisRkcWVxrDzF1YPhAckmi2CFYK+jdMT60q10d7z3PX+w6fPPukxHRnZwooiTUrzFe50UBmLItGizWHP5bDzVQ==" + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/requester-common/-/requester-common-4.22.0.tgz", + "integrity": "sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==" }, "node_modules/@algolia/requester-node-http": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/requester-node-http/-/requester-node-http-4.19.1.tgz", - "integrity": "sha512-6DK52DHviBHTG2BK/Vv2GIlEw7i+vxm7ypZW0Z7vybGCNDeWzADx+/TmxjkES2h15+FZOqVf/Ja677gePsVItA==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/requester-node-http/-/requester-node-http-4.22.0.tgz", + "integrity": "sha512-8xHoGpxVhz3u2MYIieHIB6MsnX+vfd5PS4REgglejJ6lPigftRhTdBCToe6zbwq4p0anZXjjPDvNWMlgK2+xYA==", "dependencies": { - "@algolia/requester-common": "4.19.1" + "@algolia/requester-common": "4.22.0" } }, "node_modules/@algolia/transporter": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/@algolia/transporter/-/transporter-4.19.1.tgz", - "integrity": "sha512-nkpvPWbpuzxo1flEYqNIbGz7xhfhGOKGAZS7tzC+TELgEmi7z99qRyTfNSUlW7LZmB3ACdnqAo+9A9KFBENviQ==", + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/@algolia/transporter/-/transporter-4.22.0.tgz", + "integrity": "sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==", "dependencies": { - "@algolia/cache-common": "4.19.1", - "@algolia/logger-common": "4.19.1", - "@algolia/requester-common": "4.19.1" + "@algolia/cache-common": "4.22.0", + "@algolia/logger-common": "4.22.0", + "@algolia/requester-common": "4.22.0" } }, "node_modules/@ampproject/remapping": { @@ -1999,9 +1999,9 @@ } }, "node_modules/@docusaurus/core": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/core/-/core-2.4.1.tgz", - "integrity": "sha512-SNsY7PshK3Ri7vtsLXVeAJGS50nJN3RgF836zkyUfAD01Fq+sAk5EwWgLw+nnm5KVNGDu7PRR2kRGDsWvqpo0g==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/core/-/core-2.4.3.tgz", + "integrity": "sha512-dWH5P7cgeNSIg9ufReX6gaCl/TmrGKD38Orbwuz05WPhAQtFXHd5B8Qym1TiXfvUNvwoYKkAJOJuGe8ou0Z7PA==", "dependencies": { "@babel/core": "^7.18.6", "@babel/generator": "^7.18.7", @@ -2013,13 +2013,13 @@ "@babel/runtime": "^7.18.6", "@babel/runtime-corejs3": "^7.18.6", "@babel/traverse": "^7.18.8", - "@docusaurus/cssnano-preset": "2.4.1", - "@docusaurus/logger": "2.4.1", - "@docusaurus/mdx-loader": "2.4.1", + "@docusaurus/cssnano-preset": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/utils": "2.4.1", - "@docusaurus/utils-common": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "@slorber/static-site-generator-webpack-plugin": "^4.0.7", "@svgr/webpack": "^6.2.1", "autoprefixer": "^10.4.7", @@ -2087,9 +2087,9 @@ } }, "node_modules/@docusaurus/cssnano-preset": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.1.tgz", - "integrity": "sha512-ka+vqXwtcW1NbXxWsh6yA1Ckii1klY9E53cJ4O9J09nkMBgrNX3iEFED1fWdv8wf4mJjvGi5RLZ2p9hJNjsLyQ==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.3.tgz", + "integrity": "sha512-ZvGSRCi7z9wLnZrXNPG6DmVPHdKGd8dIn9pYbEOFiYihfv4uDR3UtxogmKf+rT8ZlKFf5Lqne8E8nt08zNM8CA==", "dependencies": { "cssnano-preset-advanced": "^5.3.8", "postcss": "^8.4.14", @@ -2101,9 +2101,9 @@ } }, "node_modules/@docusaurus/logger": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/logger/-/logger-2.4.1.tgz", - "integrity": "sha512-5h5ysIIWYIDHyTVd8BjheZmQZmEgWDR54aQ1BX9pjFfpyzFo5puKXKYrYJXbjEHGyVhEzmB9UXwbxGfaZhOjcg==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/logger/-/logger-2.4.3.tgz", + "integrity": "sha512-Zxws7r3yLufk9xM1zq9ged0YHs65mlRmtsobnFkdZTxWXdTYlWWLWdKyNKAsVC+D7zg+pv2fGbyabdOnyZOM3w==", "dependencies": { "chalk": "^4.1.2", "tslib": "^2.4.0" @@ -2113,14 +2113,14 @@ } }, "node_modules/@docusaurus/mdx-loader": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/mdx-loader/-/mdx-loader-2.4.1.tgz", - "integrity": "sha512-4KhUhEavteIAmbBj7LVFnrVYDiU51H5YWW1zY6SmBSte/YLhDutztLTBE0PQl1Grux1jzUJeaSvAzHpTn6JJDQ==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/mdx-loader/-/mdx-loader-2.4.3.tgz", + "integrity": "sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==", "dependencies": { "@babel/parser": "^7.18.8", "@babel/traverse": "^7.18.8", - "@docusaurus/logger": "2.4.1", - "@docusaurus/utils": "2.4.1", + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", "@mdx-js/mdx": "^1.6.22", "escape-html": "^1.0.3", "file-loader": "^6.2.0", @@ -2144,12 +2144,12 @@ } }, "node_modules/@docusaurus/module-type-aliases": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.1.tgz", - "integrity": "sha512-gLBuIFM8Dp2XOCWffUDSjtxY7jQgKvYujt7Mx5s4FCTfoL5dN1EVbnrn+O2Wvh8b0a77D57qoIDY7ghgmatR1A==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.3.tgz", + "integrity": "sha512-cwkBkt1UCiduuvEAo7XZY01dJfRn7UR/75mBgOdb1hKknhrabJZ8YH+7savd/y9kLExPyrhe0QwdS9GuzsRRIA==", "dependencies": { "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/types": "2.4.1", + "@docusaurus/types": "2.4.3", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -2173,17 +2173,17 @@ } }, "node_modules/@docusaurus/plugin-content-blog": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.1.tgz", - "integrity": "sha512-E2i7Knz5YIbE1XELI6RlTnZnGgS52cUO4BlCiCUCvQHbR+s1xeIWz4C6BtaVnlug0Ccz7nFSksfwDpVlkujg5Q==", - "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/logger": "2.4.1", - "@docusaurus/mdx-loader": "2.4.1", - "@docusaurus/types": "2.4.1", - "@docusaurus/utils": "2.4.1", - "@docusaurus/utils-common": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.3.tgz", + "integrity": "sha512-PVhypqaA0t98zVDpOeTqWUTvRqCEjJubtfFUQ7zJNYdbYTbS/E/ytq6zbLVsN/dImvemtO/5JQgjLxsh8XLo8Q==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "cheerio": "^1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^10.1.0", @@ -2203,17 +2203,17 @@ } }, "node_modules/@docusaurus/plugin-content-docs": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.1.tgz", - "integrity": "sha512-Lo7lSIcpswa2Kv4HEeUcGYqaasMUQNpjTXpV0N8G6jXgZaQurqp7E8NGYeGbDXnb48czmHWbzDL4S3+BbK0VzA==", - "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/logger": "2.4.1", - "@docusaurus/mdx-loader": "2.4.1", - "@docusaurus/module-type-aliases": "2.4.1", - "@docusaurus/types": "2.4.1", - "@docusaurus/utils": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.3.tgz", + "integrity": "sha512-N7Po2LSH6UejQhzTCsvuX5NOzlC+HiXOVvofnEPj0WhMu1etpLEXE6a4aTxrtg95lQ5kf0xUIdjX9sh3d3G76A==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "@types/react-router-config": "^5.0.6", "combine-promises": "^1.1.0", "fs-extra": "^10.1.0", @@ -2233,15 +2233,15 @@ } }, "node_modules/@docusaurus/plugin-content-pages": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.1.tgz", - "integrity": "sha512-/UjuH/76KLaUlL+o1OvyORynv6FURzjurSjvn2lbWTFc4tpYY2qLYTlKpTCBVPhlLUQsfyFnshEJDLmPneq2oA==", - "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/mdx-loader": "2.4.1", - "@docusaurus/types": "2.4.1", - "@docusaurus/utils": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.3.tgz", + "integrity": "sha512-txtDVz7y3zGk67q0HjG0gRttVPodkHqE0bpJ+7dOaTH40CQFLSh7+aBeGnPOTl+oCPG+hxkim4SndqPqXjQ8Bg==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "fs-extra": "^10.1.0", "tslib": "^2.4.0", "webpack": "^5.73.0" @@ -2255,13 +2255,13 @@ } }, "node_modules/@docusaurus/plugin-debug": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-debug/-/plugin-debug-2.4.1.tgz", - "integrity": "sha512-7Yu9UPzRShlrH/G8btOpR0e6INFZr0EegWplMjOqelIwAcx3PKyR8mgPTxGTxcqiYj6hxSCRN0D8R7YrzImwNA==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-debug/-/plugin-debug-2.4.3.tgz", + "integrity": "sha512-LkUbuq3zCmINlFb+gAd4ZvYr+bPAzMC0hwND4F7V9bZ852dCX8YoWyovVUBKq4er1XsOwSQaHmNGtObtn8Av8Q==", "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/types": "2.4.1", - "@docusaurus/utils": "2.4.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", "fs-extra": "^10.1.0", "react-json-view": "^1.21.3", "tslib": "^2.4.0" @@ -2275,13 +2275,13 @@ } }, "node_modules/@docusaurus/plugin-google-analytics": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.1.tgz", - "integrity": "sha512-dyZJdJiCoL+rcfnm0RPkLt/o732HvLiEwmtoNzOoz9MSZz117UH2J6U2vUDtzUzwtFLIf32KkeyzisbwUCgcaQ==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.3.tgz", + "integrity": "sha512-KzBV3k8lDkWOhg/oYGxlK5o9bOwX7KpPc/FTWoB+SfKhlHfhq7qcQdMi1elAaVEIop8tgK6gD1E58Q+XC6otSQ==", "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/types": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "tslib": "^2.4.0" }, "engines": { @@ -2293,13 +2293,13 @@ } }, "node_modules/@docusaurus/plugin-google-gtag": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.1.tgz", - "integrity": "sha512-mKIefK+2kGTQBYvloNEKtDmnRD7bxHLsBcxgnbt4oZwzi2nxCGjPX6+9SQO2KCN5HZbNrYmGo5GJfMgoRvy6uA==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.3.tgz", + "integrity": "sha512-5FMg0rT7sDy4i9AGsvJC71MQrqQZwgLNdDetLEGDHLfSHLvJhQbTCUGbGXknUgWXQJckcV/AILYeJy+HhxeIFA==", "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/types": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "tslib": "^2.4.0" }, "engines": { @@ -2311,13 +2311,13 @@ } }, "node_modules/@docusaurus/plugin-google-tag-manager": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.1.tgz", - "integrity": "sha512-Zg4Ii9CMOLfpeV2nG74lVTWNtisFaH9QNtEw48R5QE1KIwDBdTVaiSA18G1EujZjrzJJzXN79VhINSbOJO/r3g==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.3.tgz", + "integrity": "sha512-1jTzp71yDGuQiX9Bi0pVp3alArV0LSnHXempvQTxwCGAEzUWWaBg4d8pocAlTpbP9aULQQqhgzrs8hgTRPOM0A==", "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/types": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "tslib": "^2.4.0" }, "engines": { @@ -2329,16 +2329,16 @@ } }, "node_modules/@docusaurus/plugin-sitemap": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.1.tgz", - "integrity": "sha512-lZx+ijt/+atQ3FVE8FOHV/+X3kuok688OydDXrqKRJyXBJZKgGjA2Qa8RjQ4f27V2woaXhtnyrdPop/+OjVMRg==", - "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/logger": "2.4.1", - "@docusaurus/types": "2.4.1", - "@docusaurus/utils": "2.4.1", - "@docusaurus/utils-common": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.3.tgz", + "integrity": "sha512-LRQYrK1oH1rNfr4YvWBmRzTL0LN9UAPxBbghgeFRBm5yloF6P+zv1tm2pe2hQTX/QP5bSKdnajCvfnScgKXMZQ==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "fs-extra": "^10.1.0", "sitemap": "^7.1.1", "tslib": "^2.4.0" @@ -2352,23 +2352,23 @@ } }, "node_modules/@docusaurus/preset-classic": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/preset-classic/-/preset-classic-2.4.1.tgz", - "integrity": "sha512-P4//+I4zDqQJ+UDgoFrjIFaQ1MeS9UD1cvxVQaI6O7iBmiHQm0MGROP1TbE7HlxlDPXFJjZUK3x3cAoK63smGQ==", - "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/plugin-content-blog": "2.4.1", - "@docusaurus/plugin-content-docs": "2.4.1", - "@docusaurus/plugin-content-pages": "2.4.1", - "@docusaurus/plugin-debug": "2.4.1", - "@docusaurus/plugin-google-analytics": "2.4.1", - "@docusaurus/plugin-google-gtag": "2.4.1", - "@docusaurus/plugin-google-tag-manager": "2.4.1", - "@docusaurus/plugin-sitemap": "2.4.1", - "@docusaurus/theme-classic": "2.4.1", - "@docusaurus/theme-common": "2.4.1", - "@docusaurus/theme-search-algolia": "2.4.1", - "@docusaurus/types": "2.4.1" + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/preset-classic/-/preset-classic-2.4.3.tgz", + "integrity": "sha512-tRyMliepY11Ym6hB1rAFSNGwQDpmszvWYJvlK1E+md4SW8i6ylNHtpZjaYFff9Mdk3i/Pg8ItQq9P0daOJAvQw==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/plugin-debug": "2.4.3", + "@docusaurus/plugin-google-analytics": "2.4.3", + "@docusaurus/plugin-google-gtag": "2.4.3", + "@docusaurus/plugin-google-tag-manager": "2.4.3", + "@docusaurus/plugin-sitemap": "2.4.3", + "@docusaurus/theme-classic": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-search-algolia": "2.4.3", + "@docusaurus/types": "2.4.3" }, "engines": { "node": ">=16.14" @@ -2401,22 +2401,22 @@ } }, "node_modules/@docusaurus/theme-classic": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/theme-classic/-/theme-classic-2.4.1.tgz", - "integrity": "sha512-Rz0wKUa+LTW1PLXmwnf8mn85EBzaGSt6qamqtmnh9Hflkc+EqiYMhtUJeLdV+wsgYq4aG0ANc+bpUDpsUhdnwg==", - "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/mdx-loader": "2.4.1", - "@docusaurus/module-type-aliases": "2.4.1", - "@docusaurus/plugin-content-blog": "2.4.1", - "@docusaurus/plugin-content-docs": "2.4.1", - "@docusaurus/plugin-content-pages": "2.4.1", - "@docusaurus/theme-common": "2.4.1", - "@docusaurus/theme-translations": "2.4.1", - "@docusaurus/types": "2.4.1", - "@docusaurus/utils": "2.4.1", - "@docusaurus/utils-common": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/theme-classic/-/theme-classic-2.4.3.tgz", + "integrity": "sha512-QKRAJPSGPfDY2yCiPMIVyr+MqwZCIV2lxNzqbyUW0YkrlmdzzP3WuQJPMGLCjWgQp/5c9kpWMvMxjhpZx1R32Q==", + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-translations": "2.4.3", + "@docusaurus/types": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", "copy-text-to-clipboard": "^3.0.1", @@ -2440,17 +2440,17 @@ } }, "node_modules/@docusaurus/theme-common": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/theme-common/-/theme-common-2.4.1.tgz", - "integrity": "sha512-G7Zau1W5rQTaFFB3x3soQoZpkgMbl/SYNG8PfMFIjKa3M3q8n0m/GRf5/H/e5BqOvt8c+ZWIXGCiz+kUCSHovA==", - "dependencies": { - "@docusaurus/mdx-loader": "2.4.1", - "@docusaurus/module-type-aliases": "2.4.1", - "@docusaurus/plugin-content-blog": "2.4.1", - "@docusaurus/plugin-content-docs": "2.4.1", - "@docusaurus/plugin-content-pages": "2.4.1", - "@docusaurus/utils": "2.4.1", - "@docusaurus/utils-common": "2.4.1", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/theme-common/-/theme-common-2.4.3.tgz", + "integrity": "sha512-7KaDJBXKBVGXw5WOVt84FtN8czGWhM0lbyWEZXGp8AFfL6sZQfRTluFp4QriR97qwzSyOfQb+nzcDZZU4tezUw==", + "dependencies": { + "@docusaurus/mdx-loader": "2.4.3", + "@docusaurus/module-type-aliases": "2.4.3", + "@docusaurus/plugin-content-blog": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/plugin-content-pages": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-common": "2.4.3", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -2470,18 +2470,18 @@ } }, "node_modules/@docusaurus/theme-search-algolia": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.1.tgz", - "integrity": "sha512-6BcqW2lnLhZCXuMAvPRezFs1DpmEKzXFKlYjruuas+Xy3AQeFzDJKTJFIm49N77WFCTyxff8d3E4Q9pi/+5McQ==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.3.tgz", + "integrity": "sha512-jziq4f6YVUB5hZOB85ELATwnxBz/RmSLD3ksGQOLDPKVzat4pmI8tddNWtriPpxR04BNT+ZfpPUMFkNFetSW1Q==", "dependencies": { "@docsearch/react": "^3.1.1", - "@docusaurus/core": "2.4.1", - "@docusaurus/logger": "2.4.1", - "@docusaurus/plugin-content-docs": "2.4.1", - "@docusaurus/theme-common": "2.4.1", - "@docusaurus/theme-translations": "2.4.1", - "@docusaurus/utils": "2.4.1", - "@docusaurus/utils-validation": "2.4.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/logger": "2.4.3", + "@docusaurus/plugin-content-docs": "2.4.3", + "@docusaurus/theme-common": "2.4.3", + "@docusaurus/theme-translations": "2.4.3", + "@docusaurus/utils": "2.4.3", + "@docusaurus/utils-validation": "2.4.3", "algoliasearch": "^4.13.1", "algoliasearch-helper": "^3.10.0", "clsx": "^1.2.1", @@ -2500,9 +2500,9 @@ } }, "node_modules/@docusaurus/theme-translations": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/theme-translations/-/theme-translations-2.4.1.tgz", - "integrity": "sha512-T1RAGP+f86CA1kfE8ejZ3T3pUU3XcyvrGMfC/zxCtc2BsnoexuNI9Vk2CmuKCb+Tacvhxjv5unhxXce0+NKyvA==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/theme-translations/-/theme-translations-2.4.3.tgz", + "integrity": "sha512-H4D+lbZbjbKNS/Zw1Lel64PioUAIT3cLYYJLUf3KkuO/oc9e0QCVhIYVtUI2SfBCF2NNdlyhBDQEEMygsCedIg==", "dependencies": { "fs-extra": "^10.1.0", "tslib": "^2.4.0" @@ -2512,9 +2512,9 @@ } }, "node_modules/@docusaurus/types": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/types/-/types-2.4.1.tgz", - "integrity": "sha512-0R+cbhpMkhbRXX138UOc/2XZFF8hiZa6ooZAEEJFp5scytzCw4tC1gChMFXrpa3d2tYE6AX8IrOEpSonLmfQuQ==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/types/-/types-2.4.3.tgz", + "integrity": "sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", @@ -2530,22 +2530,12 @@ "react-dom": "^16.8.4 || ^17.0.0" } }, - "node_modules/@docusaurus/types/node_modules/@types/react": { - "version": "18.0.27", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", - "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, "node_modules/@docusaurus/utils": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/utils/-/utils-2.4.1.tgz", - "integrity": "sha512-1lvEZdAQhKNht9aPXPoh69eeKnV0/62ROhQeFKKxmzd0zkcuE/Oc5Gpnt00y/f5bIsmOsYMY7Pqfm/5rteT5GA==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/utils/-/utils-2.4.3.tgz", + "integrity": "sha512-fKcXsjrD86Smxv8Pt0TBFqYieZZCPh4cbf9oszUq/AMhZn3ujwpKaVYZACPX8mmjtYx0JOgNx52CREBfiGQB4A==", "dependencies": { - "@docusaurus/logger": "2.4.1", + "@docusaurus/logger": "2.4.3", "@svgr/webpack": "^6.2.1", "escape-string-regexp": "^4.0.0", "file-loader": "^6.2.0", @@ -2575,9 +2565,9 @@ } }, "node_modules/@docusaurus/utils-common": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/utils-common/-/utils-common-2.4.1.tgz", - "integrity": "sha512-bCVGdZU+z/qVcIiEQdyx0K13OC5mYwxhSuDUR95oFbKVuXYRrTVrwZIqQljuo1fyJvFTKHiL9L9skQOPokuFNQ==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/utils-common/-/utils-common-2.4.3.tgz", + "integrity": "sha512-/jascp4GbLQCPVmcGkPzEQjNaAk3ADVfMtudk49Ggb+131B1WDD6HqlSmDf8MxGdy7Dja2gc+StHf01kiWoTDQ==", "dependencies": { "tslib": "^2.4.0" }, @@ -2594,12 +2584,12 @@ } }, "node_modules/@docusaurus/utils-validation": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/@docusaurus/utils-validation/-/utils-validation-2.4.1.tgz", - "integrity": "sha512-unII3hlJlDwZ3w8U+pMO3Lx3RhI4YEbY3YNsQj4yzrkZzlpqZOLuAiZK2JyULnD+TKbceKU0WyWkQXtYbLNDFA==", + "version": "2.4.3", + "resolved": "https://registry.npmmirror.com/@docusaurus/utils-validation/-/utils-validation-2.4.3.tgz", + "integrity": "sha512-G2+Vt3WR5E/9drAobP+hhZQMaswRwDlp6qOMi7o7ZypB+VO7N//DZWhZEwhcRGepMDJGQEwtPv7UxtYwPL9PBw==", "dependencies": { - "@docusaurus/logger": "2.4.1", - "@docusaurus/utils": "2.4.1", + "@docusaurus/logger": "2.4.3", + "@docusaurus/utils": "2.4.3", "joi": "^17.6.0", "js-yaml": "^4.1.0", "tslib": "^2.4.0" @@ -3327,9 +3317,9 @@ } }, "node_modules/@types/hast": { - "version": "2.3.5", - "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-2.3.5.tgz", - "integrity": "sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==", + "version": "2.3.9", + "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-2.3.9.tgz", + "integrity": "sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw==", "dependencies": { "@types/unist": "^2" } @@ -3385,9 +3375,9 @@ "dev": true }, "node_modules/@types/mdast": { - "version": "3.0.12", - "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-3.0.12.tgz", - "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "version": "3.0.15", + "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", "dependencies": { "@types/unist": "^2" } @@ -3511,9 +3501,9 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" }, "node_modules/@types/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/@types/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", "dependencies": { "@types/node": "*" } @@ -3555,9 +3545,9 @@ } }, "node_modules/@types/unist": { - "version": "2.0.8", - "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-2.0.8.tgz", - "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + "version": "2.0.10", + "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" }, "node_modules/@types/ws": { "version": "8.5.4", @@ -3997,30 +3987,30 @@ } }, "node_modules/algoliasearch": { - "version": "4.19.1", - "resolved": "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-4.19.1.tgz", - "integrity": "sha512-IJF5b93b2MgAzcE/tuzW0yOPnuUyRgGAtaPv5UUywXM8kzqfdwZTO4sPJBzoGz1eOy6H9uEchsJsBFTELZSu+g==", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.19.1", - "@algolia/cache-common": "4.19.1", - "@algolia/cache-in-memory": "4.19.1", - "@algolia/client-account": "4.19.1", - "@algolia/client-analytics": "4.19.1", - "@algolia/client-common": "4.19.1", - "@algolia/client-personalization": "4.19.1", - "@algolia/client-search": "4.19.1", - "@algolia/logger-common": "4.19.1", - "@algolia/logger-console": "4.19.1", - "@algolia/requester-browser-xhr": "4.19.1", - "@algolia/requester-common": "4.19.1", - "@algolia/requester-node-http": "4.19.1", - "@algolia/transporter": "4.19.1" + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-4.22.0.tgz", + "integrity": "sha512-gfceltjkwh7PxXwtkS8KVvdfK+TSNQAWUeNSxf4dA29qW5tf2EGwa8jkJujlT9jLm17cixMVoGNc+GJFO1Mxhg==", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.22.0", + "@algolia/cache-common": "4.22.0", + "@algolia/cache-in-memory": "4.22.0", + "@algolia/client-account": "4.22.0", + "@algolia/client-analytics": "4.22.0", + "@algolia/client-common": "4.22.0", + "@algolia/client-personalization": "4.22.0", + "@algolia/client-search": "4.22.0", + "@algolia/logger-common": "4.22.0", + "@algolia/logger-console": "4.22.0", + "@algolia/requester-browser-xhr": "4.22.0", + "@algolia/requester-common": "4.22.0", + "@algolia/requester-node-http": "4.22.0", + "@algolia/transporter": "4.22.0" } }, "node_modules/algoliasearch-helper": { - "version": "3.14.0", - "resolved": "https://registry.npmmirror.com/algoliasearch-helper/-/algoliasearch-helper-3.14.0.tgz", - "integrity": "sha512-gXDXzsSS0YANn5dHr71CUXOo84cN4azhHKUbg71vAWnH+1JBiR4jf7to3t3JHXknXkbV0F7f055vUSBKrltHLQ==", + "version": "3.16.1", + "resolved": "https://registry.npmmirror.com/algoliasearch-helper/-/algoliasearch-helper-3.16.1.tgz", + "integrity": "sha512-qxAHVjjmT7USVvrM8q6gZGaJlCK1fl4APfdAA7o8O6iXEc68G0xMNrzRkxoB/HmhhvyHnoteS/iMTiHiTcQQcg==", "dependencies": { "@algolia/events": "^4.0.1" }, @@ -4205,13 +4195,13 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.15", - "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.15.tgz", - "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==", + "version": "10.4.16", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", "dependencies": { "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001520", - "fraction.js": "^4.2.0", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -4636,9 +4626,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001525", - "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz", - "integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==" + "version": "1.0.30001572", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz", + "integrity": "sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==" }, "node_modules/ccount": { "version": "1.1.0", @@ -7254,9 +7244,9 @@ } }, "node_modules/fraction.js": { - "version": "4.3.6", - "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.6.tgz", - "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "engines": { "node": "*" } @@ -7988,9 +7978,9 @@ } }, "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-1.1.0.tgz", + "integrity": "sha512-asnTHw2K8OlqT5kVnQwX+AGKQqpvLo95LbNzQ/C0ln3yzentZmAdd0ygoD004VC4Kkd4PV7J2iaPQkqwp9yuTw==", "dependencies": { "queue": "6.0.2" }, @@ -7998,7 +7988,7 @@ "image-size": "bin/image-size.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/immer": { @@ -11428,9 +11418,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, "node_modules/scheduler": { "version": "0.20.2", @@ -11455,9 +11445,9 @@ } }, "node_modules/search-insights": { - "version": "2.8.2", - "resolved": "https://registry.npmmirror.com/search-insights/-/search-insights-2.8.2.tgz", - "integrity": "sha512-PxA9M5Q2bpBelVvJ3oDZR8nuY00Z6qwOxL53wNpgzV28M/D6u9WUbImDckjLSILBF8F1hn/mgyuUaOPtjow4Qw==", + "version": "2.13.0", + "resolved": "https://registry.npmmirror.com/search-insights/-/search-insights-2.13.0.tgz", + "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==", "peer": true }, "node_modules/section-matter": { @@ -12498,9 +12488,9 @@ } }, "node_modules/ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmmirror.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", + "version": "1.0.37", + "resolved": "https://registry.npmmirror.com/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "engines": { "node": "*" } @@ -12900,7 +12890,7 @@ }, "node_modules/utility-types": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "resolved": "https://registry.npmmirror.com/utility-types/-/utility-types-3.10.0.tgz", "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", "engines": { "node": ">= 4" diff --git a/package.json b/package.json index 501f78e7f6..a4c0728b40 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "fetch": "ts-node scripts/fetch.ts" }, "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/preset-classic": "2.4.1", + "@docusaurus/core": "2.4.3", + "@docusaurus/preset-classic": "2.4.3", "@fontsource/inter": "^4.5.11", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^6.5.0", @@ -43,7 +43,7 @@ ] }, "devDependencies": { - "@docusaurus/module-type-aliases": "^2.3.0", + "@docusaurus/module-type-aliases": "^2.4.3", "@tsconfig/docusaurus": "^1.0.2", "@types/react": "^17.0.13", "@types/react-helmet": "^6.1.1", diff --git a/static/images/install/runtime_1.png b/static/images/install/runtime_1.png deleted file mode 100644 index 7e48ef7941..0000000000 Binary files a/static/images/install/runtime_1.png and /dev/null differ diff --git a/static/images/install/runtime_2.png b/static/images/install/runtime_2.png deleted file mode 100644 index 3143a16c96..0000000000 Binary files a/static/images/install/runtime_2.png and /dev/null differ diff --git a/static/images/install/runtime_3.png b/static/images/install/runtime_3.png deleted file mode 100644 index c134fe5e6b..0000000000 Binary files a/static/images/install/runtime_3.png and /dev/null differ diff --git a/static/images/install/runtime_4.png b/static/images/install/runtime_4.png deleted file mode 100644 index ff419b71b4..0000000000 Binary files a/static/images/install/runtime_4.png and /dev/null differ diff --git a/static/images/install/runtime_5.png b/static/images/install/runtime_5.png deleted file mode 100644 index f796a4fda6..0000000000 Binary files a/static/images/install/runtime_5.png and /dev/null differ diff --git a/static/images/install/runtime_6.png b/static/images/install/runtime_6.png deleted file mode 100644 index e9540575e0..0000000000 Binary files a/static/images/install/runtime_6.png and /dev/null differ diff --git a/static/images/install/runtime_7.png b/static/images/install/runtime_7.png deleted file mode 100644 index 6f91882b2a..0000000000 Binary files a/static/images/install/runtime_7.png and /dev/null differ diff --git a/static/images/install/runtime_8.png b/static/images/install/runtime_8.png deleted file mode 100644 index 82c4c0e8e8..0000000000 Binary files a/static/images/install/runtime_8.png and /dev/null differ diff --git a/static/images/install/runtime_9.png b/static/images/install/runtime_9.png deleted file mode 100644 index 8bb6b4f721..0000000000 Binary files a/static/images/install/runtime_9.png and /dev/null differ diff --git a/static/images/install/runtime_docker_1.png b/static/images/install/runtime_docker_1.png deleted file mode 100644 index f905cfe52a..0000000000 Binary files a/static/images/install/runtime_docker_1.png and /dev/null differ diff --git a/static/images/install/runtime_docker_2.png b/static/images/install/runtime_docker_2.png deleted file mode 100644 index 138464ff76..0000000000 Binary files a/static/images/install/runtime_docker_2.png and /dev/null differ diff --git a/static/images/install/runtime_docker_3.png b/static/images/install/runtime_docker_3.png deleted file mode 100644 index 0de143f97c..0000000000 Binary files a/static/images/install/runtime_docker_3.png and /dev/null differ diff --git a/static/images/install/runtime_docker_4.png b/static/images/install/runtime_docker_4.png deleted file mode 100644 index ed4f2d6af6..0000000000 Binary files a/static/images/install/runtime_docker_4.png and /dev/null differ diff --git a/static/images/install/runtime_docker_5.png b/static/images/install/runtime_docker_5.png deleted file mode 100644 index 29ad266a87..0000000000 Binary files a/static/images/install/runtime_docker_5.png and /dev/null differ diff --git a/versioned_docs/version-v1.0.0/instruction/03-runtime.md b/versioned_docs/version-v1.0.0/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.0.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.0.0/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.0.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.0.0/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..38661bcf85 100644 --- a/versioned_docs/version-v1.0.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.0.0/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_docs/version-v1.1.1/instruction/03-runtime.md b/versioned_docs/version-v1.1.1/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.1.1/instruction/03-runtime.md +++ b/versioned_docs/version-v1.1.1/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.1.1/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.1.1/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..38661bcf85 100644 --- a/versioned_docs/version-v1.1.1/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.1.1/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/01-runtime-protocol.md b/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/01-runtime-protocol.md index a5056ce3cc..88c9203932 100644 --- a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/01-runtime-protocol.md +++ b/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/01-runtime-protocol.md @@ -246,7 +246,7 @@ The request header of the Send Async message is identical to the request header ### Protobuf -The `eventmesh-protocol-gprc` module contains the [protobuf definition file](https://github.com/apache/eventmesh/blob/master/eventmesh-protocol-plugin/eventmesh-protocol-grpc/src/main/proto/eventmesh-client.proto) of the Eventmesh client. The `gradle build` command generates the gRPC codes, which are located in `/build/generated/source/proto/main`. The generated gRPC codes are used in `eventmesh-sdk-java` module. +The `eventmesh-protocol-gprc` module contains the [protobuf definition file](https://github.com/apache/eventmesh/blob/master/eventmesh-protocol-plugin/eventmesh-protocol-grpc/src/main/proto/eventmesh-client.proto) of the EventMesh client. The `gradle build` command generates the gRPC codes, which are located in `/build/generated/source/proto/main`. The generated gRPC codes are used in `eventmesh-sdk-java` module. ### Data Model diff --git a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/03-cloudevents.md b/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/03-cloudevents.md index bff91b4575..0f1a8a3c13 100644 --- a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/03-cloudevents.md +++ b/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/03-cloudevents.md @@ -13,7 +13,7 @@ CloudEvents support has been a highly desired feature by EventMesh users. There for users to prefer using a SDK with CloudEvents support: - CloudEvents is a more widely accepted and supported way to describe events. `eventmesh-sdk-java` - currently uses the `LiteMessage` structure to describe events, which is less standardized. + currently uses the `EventMeshMessage` structure to describe events, which is less standardized. - CloudEvents's Java SDK has a wider range of distribution methods. For example, EventMesh users currently need to use the SDK tarball or build from source for every EventMesh release. With CloudEvents support, it's easier for users to take a dependency on EventMesh's SDK using CloudEvents's public distributions (e.g. through a Maven configuration). @@ -29,7 +29,7 @@ for users to prefer using a SDK with CloudEvents support: | F-2 | EventMesh users should continue to have access to existing EventMesh client features (e.g. load balancing) with an SDK that supports CloudEvent | Feature Parity | | F-3 | EventMesh developers should be able to sync `eventmesh-sdk-java` and an SDK with CloudEvents support without much effort/pain | Maintainability | | F-4 | EventMesh support pluggable protocols for developers integrate other protocols (e.g. CloudEvents\EventMesh Message\OpenMessage\MQTT ...) | Functionality | -| F-5 | EventMesh support the unified api for publish/subscribe events to/from event store | Functionality | +| F-5 | EventMesh support the unified api for publish/subscribe events to/from Event Store | Functionality | ### Performance Requirements diff --git a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/04-event-bridge.md b/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/04-event-bridge.md index 0bacec2808..09d2a433eb 100644 --- a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/04-event-bridge.md +++ b/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/04-event-bridge.md @@ -2,33 +2,33 @@ ![event-bridge](/images/eventmesh-bridge.png) -Event Bridge 可以支持跨mesh集群的消息投递,下面展示这一功能的详细设计与体验步骤 +Event Bridge supports message delivery across mesh clusters. Below is a detailed design and experience steps for this feature. ![event-bridge-detail](/images/design-document/event-bridge-detail.png) -> 注:在本地体验这一功能时需要启动两台eventmesh实例,同时要修改`eventmesh-runtime`目录下的`eventmesh.properties`文件中的端口配置,避免端口冲突。便于下文描述,event-bridge特性按照上图信息进行表述。 +> Note: To experience this feature locally, you need to start two EventMesh instances and modify the port configuration in the `eventmesh-runtime` directory's `eventmesh.properties` file to avoid port conflicts. For the sake of the following descriptions, the event-bridge feature is presented according to the information in the above diagram. -## 01 远程订阅 +## 01 Remote Subscription -**描述**:向cluster2 eventmesh发起远程订阅指令,cluster2 eventmesh收到指令后会携带订阅信息调用cluster1 eventmesh的本地订阅接口 +**Description**: Initiates a remote subscription command to cluster2 EventMesh. Upon receiving the command, cluster2 EventMesh will invoke the local subscription interface of cluster1 EventMesh with the subscription information. **URL**: http://{cluster2 address}/eventmesh/subscribe/remote -**请求方式**:POST +**Request Method**: POST -**请求参数:**application/json 格式 +**Request Parameters**: application/json format -| 参数名 | 类型 | 是否必填 | 说明 | -| ------------- | ------ | -------- | ------------------------------------------------------------ | -| url | String | 是 | 标识订阅url信息,暂时无用,后续可移除,目前仅为强校验,实际会被(/eventmesh/bridge/publish)替换 | -| consumerGroup | String | 是 | 标识消费组信息,实际会被cluster2的eventmesh配置信息替换 | -| topic | List | 是 | 标识订阅信息列表 | -| mode | String | 是 | 标识消费模式,分为集群模式和广播模式 | -| topic | String | 是 | 标识订阅的topic | -| type | String | 是 | 标识消费类型,分为同步和异步 | -| remoteMesh | String | 否 | 标识远程mesh地址,优先根据topic从注册中心获取,获取不到使用该字段替换 | +| Parameter | Type | Required | Description | +| -------------- | ------ | -------- | ------------------------------------------------------------ | +| url | String | Yes | Identifies the subscription URL, temporarily useless, will be replaced by (/eventmesh/bridge/publish) later, currently only for strong validation, will actually be replaced by the cluster2 EventMesh configuration information | +| consumerGroup | String | Yes | Identifies the consumer group information, will be replaced by the configuration information of cluster2 EventMesh | +| topic | List | Yes | Identifies the subscription information list | +| mode | String | Yes | Identifies the consumption mode, divided into clustering mode and broadcast mode | +| topic | String | Yes | Identifies the subscribed topic | +| type | String | Yes | Identifies the consumption type, divided into synchronous and asynchronous | +| remoteMesh | String | No | Identifies the remote mesh address, prioritized by obtaining from the registration center based on the topic, if not obtained, use this field to replace | -**请求样例:** +**Request Example**: ```json { @@ -45,26 +45,26 @@ Event Bridge 可以支持跨mesh集群的消息投递,下面展示这一功能 } ``` -## 02 本地订阅 +## 02 Local Subscription -**描述**:向cluster2的EventMesh实例发起本地订阅指令,cluster2的EventMesh收到订阅指令后会启动本地监听从event store收下来的消息,并推送给订阅信息中的url。 +**Description**: Initiates a local subscription command to cluster2 EventMesh. Upon receiving the subscription command, cluster2 EventMesh will start locally listening for messages received from Event Store and push them to the URL in the subscription information. **URL**: http://{cluster2 address}/eventmesh/subscribe/local -**请求方式**:POST +**Request Method**: POST -**请求参数:**application/json 格式 +**Request Parameters**: application/json format -| 参数名 | 类型 | 是否必填 | 说明 | -| ------------- | ------ | -------- | ------------------------------------ | -| url | String | 是 | 标识订阅url信息 | -| consumerGroup | String | 是 | 标识消费组信息 | -| topic | List | 是 | 标识订阅信息列表 | -| mode | String | 是 | 标识消费模式,分为集群模式和广播模式 | -| topic | String | 是 | 标识订阅的topic | -| type | String | 是 | 标识消费类型,分为同步和异步 | +| Parameter | Type | Required | Description | +| -------------- | ------ | -------- | ------------------------------------------------------------ | +| url | String | Yes | Identifies the subscription URL | +| consumerGroup | String | Yes | Identifies the consumer group information | +| topic | List | Yes | Identifies the subscription information list | +| mode | String | Yes | Identifies the consumption mode, divided into clustering mode and broadcast mode | +| topic | String | Yes | Identifies the subscribed topic | +| type | String | Yes | Identifies the consumption type, divided into synchronous and asynchronous | -**请求样例:** +**Request Example**: ```JSON { @@ -80,17 +80,17 @@ Event Bridge 可以支持跨mesh集群的消息投递,下面展示这一功能 } ``` -## 03 发送消息 +## 03 Send Message -**描述**:向cluster1的EventMesh实例发送消息,cluster1的EventMesh收到消息后会发送到event store,再从event store收下来消息推送给cluster2的EventMesh url `/eventmesh/bridge/publish`。 +**Description**: Sends a message to cluster1 EventMesh. Upon receiving the message, cluster1 EventMesh will send it to Event Store, and then push the message received from Event Store to the URL `/eventmesh/bridge/publish` of cluster2 EventMesh. **URL**: http://{cluster1 address}/eventmesh/publish/TEST-TOPIC-HTTP-ASYNC -**请求方式**:POST +**Request Method**: POST -**请求参数:**application/json 格式 +**Request Parameters**: application/json format -**请求样例:** +**Request Example**: ```json { @@ -99,23 +99,23 @@ Event Bridge 可以支持跨mesh集群的消息投递,下面展示这一功能 } ``` -## 04远程去订阅 +## 04 Remote Unsubscribe -**描述**:向cluster2的EventMesh实例发送去除订阅指令,cluster2的EventMesh收到指令后会发送cluster1的EventMesh,cluster1的EventMesh会本地执行去除订阅 +**Description**: Sends an unsubscribe command to cluster2 EventMesh. Upon receiving the command, cluster2 EventMesh will send it to cluster1 EventMesh, and cluster1 EventMesh will locally execute the unsubscribe. **URL**: http://{cluster2 address}/eventmesh/unsubscribe/remote -**请求方式**:POST +**Request Method**: POST -**请求参数:**application/json 格式 +**Request Parameters**: application/json format -| 参数名 | 类型 | 是否必填 | 说明 | -| ------------- | ------ | -------- | ------------------------------------------------------------ | -| url | String | 是 | 标识要去除订阅url信息,暂时无用,后续可移除,目前仅为强校验,实际会被(/eventmesh/bridge/publish)替换 | -| consumerGroup | String | 是 | 标识要去除的消费组信息,实际会使用EventMesh cluster2的group信息替换 | -| topic | List | 是 | 标识订阅topic信息列表 | +| Parameter | Type | Required | Description | +| -------------- | ------ | -------- | ------------------------------------------------------------ | +| url | String | Yes | Identifies the URL to unsubscribe, temporarily useless, will be replaced by (/eventmesh/bridge/publish) later, currently only for strong validation, will actually be replaced by the group information of cluster2 eventmesh | +| consumerGroup | String | Yes | Identifies the consumer group information to unsubscribe from, will use the group information of EventMesh cluster2 to replace | +| topic | List | Yes | Identifies the subscription topic information list | -**请求样例:** +**Request Example**: ```json { @@ -127,23 +127,23 @@ Event Bridge 可以支持跨mesh集群的消息投递,下面展示这一功能 } ``` -## 05本地去订阅 +## 05 Local Unsubscribe -**描述**:向cluster2的EventMesh实例发送去除订阅指令,cluster2的EventMesh收到指令后会本地执行去除订阅 +**Description**: Sends an unsubscribe command to cluster2 EventMesh. Upon receiving the command, cluster2 EventMesh will locally execute the unsubscribe. **URL**: http://{cluster2 address}/eventmesh/unsubscribe/local -**请求方式**:POST +**Request Method**: POST -**请求参数:**application/json 格式 +**Request Parameters**: application/json format -| 参数名 | 类型 | 是否必填 | 说明 | -| ------------- | ------ | -------- | ---------------------- | -| url | String | 是 | 标识要去除订阅url信息 | -| consumerGroup | String | 是 | 标识要去除的消费组信息 | -| topic | List | 是 | 标识订阅topic信息列表 | +| Parameter | Type | Required | Description | +| -------------- | ------ | -------- | ---------------------------- | +| url | String | Yes | Identifies the URL to unsubscribe from | +| consumerGroup | String | Yes | Identifies the consumer group information to unsubscribe from | +| topic | List | Yes | Identifies the subscription topic information list | -**请求样例:** +**Request Example**: ```json { diff --git a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/05-webhook.md b/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/05-webhook.md index 84aab72720..f426b28f7b 100644 --- a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/05-webhook.md +++ b/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/05-webhook.md @@ -1,11 +1,16 @@ # Use Webhook to subscribe events ## Webhook usage process -### The first step: Configure Webhook related information in eventmesh and start +### The first step: Configure Webhook related information in EventMesh and start Configuration: ``` +# Webhook HTTP payload listening port +eventMesh.server.http.port=10105 +# Webhook config admin port +eventMesh.server.admin.http.port=10106 + # Whether to start the Webhook admin service eventMesh.webHook.admin.start=true @@ -30,7 +35,7 @@ Configuration information description: ```java /** * The path called by the manufacturer. Manufacturer event call address, [http or https]://[domain or IP]:[port]/webhook/[callbackPath] - * for example: http://127.0.0.1:10504/webhook/test/event , The full url needs to be filled in the manufacturer call input + * for example: http://127.0.0.1:10105/webhook/test/event , The full url needs to be filled in the manufacturer call input * callbackPath is the only */ private String callbackPath; @@ -75,7 +80,6 @@ Configuration information description: */ private String password; - /** * roll out event name, like topic to mq */ @@ -104,19 +108,19 @@ contentType: application/json input params: -| field | desc | type | necessary | default | +| field | desc | type | necessary | default | | -- | -- | -- | -- | -- | -| callbackPath | call address, unique address | string | Y | null | -| manufacturerName | manufacturer name | string | Y | null | -| manufacturerDomain | manufacturer domain name | string | Y | null | -| manufacturerEventName | manufacturer event name | string | Y | null | -| contentType | http connettype | string | N | application/json | -| description | configuration instructions | string | N | null | -| secret | signature string | string | N | null | -| userName | username | string | N | null | -| password | password | string | N | null | -| cloudEventName | cloudEvent name | string | Y | null | -| cloudEventIdGenerateMode | cloudEvent event object identification method, uuid or event id | string | N |manufacturerEventId| +| callbackPath | call address, unique address | string | Y | null | +| manufacturerName | manufacturer name | string | Y | null | +| manufacturerDomain | manufacturer domain name | string | Y | null | +| manufacturerEventName | manufacturer event name | string | Y | null | +| contentType | http connettype | string | N | application/json | +| description | configuration instructions | string | N | null | +| secret | signature string | string | N | null | +| userName | username | string | N | null | +| password | password | string | N | null | +| cloudEventName | cloudEvent name | string | Y | null | +| cloudEventIdGenerateMode | cloudEvent event object identification method, uuid or event id | string | N |manufacturerEventId| E.g: @@ -142,10 +146,10 @@ contentType: application/json input params: -| field | desc | type | necessary | default | +| field | desc | type | necessary | default | | -- | -- | -- | -- | -- | -| callbackPath | call address, unique address | string | Y | null | -| manufacturerName | the caller of this callbackPath belongs to | string | Y | null | +| callbackPath | call address, unique address | string | Y | null | +| manufacturerName | the caller of this callbackPath belongs to | string | Y | null | E.g: @@ -158,19 +162,19 @@ E.g: Output params: -| field | desc | type | necessary | default | +| field | desc | type | necessary | default | | -- | -- | -- | -- | -- | -| callbackPath | call address, unique address | string | Y | null | -| manufacturerName | manufacturer name | string | Y | null | -| manufacturerDomain | manufacturer domain name | string | Y | null | -| manufacturerEventName | manufacturer event name | string | Y | null | -| contentType | http connettype | string | N | application/json | -| description | configuration instructions | string | N | null | -| secret | signature key | string | N | null | -| userName | user name | string | N | null | -| password | password | string | N | null | -| cloudEventName | cloudEvent name | string | Y | null | -| cloudEventIdGenerateMode | cloudEvent event object identification method, uuid or event id | string | N | manufacturerEventId | +| callbackPath | call address, unique address | string | Y | null | +| manufacturerName | manufacturer name | string | Y | null | +| manufacturerDomain | manufacturer domain name | string | Y | null | +| manufacturerEventName | manufacturer event name | string | Y | null | +| contentType | http connettype | string | N | application/json | +| description | configuration instructions | string | N | null | +| secret | signature key | string | N | null | +| userName | user name | string | N | null | +| password | password | string | N | null | +| cloudEventName | cloudEvent name | string | Y | null | +| cloudEventIdGenerateMode | cloudEvent event object identification method, uuid or event id | string | N | manufacturerEventId | #### Query WebHook config by manufacturer @@ -182,11 +186,11 @@ contentType: application/json input params: -| field | desc | type | necessary | default | +| field | desc | type | necessary | default | | -- | -- | -- | -- | -- | -| manufacturerName | manufacturer name | string | Y | null | -| pageNum | page number of paging query | string | Y | null | -| pageSize | page size of each page | string | Y | null | +| manufacturerName | manufacturer name | string | Y | null | +| pageNum | page number of paging query | string | Y | null | +| pageSize | page size of each page | string | Y | null | E.g: @@ -200,19 +204,19 @@ E.g: Output params: -| field | desc | type | necessary | default | +| field | desc | type | necessary | default | | -- | -- | -- | -- | -- | -| callbackPath | call address, unique address | string | Y | null | -| manufacturerName | manufacturer name | string | Y | null | -| manufacturerDomain | manufacturer domain name | string | Y | null | -| manufacturerEventName | manufacturer event name | string | Y | null | -| contentType | http connettype | string | N | application/json | -| description | configuration instructions | string | N | null | -| secret | signature key | string | N | null | -| userName | user name | string | N | null | -| password | password | string | N | null | -| cloudEventName | cloudEvent name | string | Y | null | -| cloudEventIdGenerateMode | cloudEvent event object identification method, uuid or event id | string | N | manufacturerEventId | +| callbackPath | call address, unique address | string | Y | null | +| manufacturerName | manufacturer name | string | Y | null | +| manufacturerDomain | manufacturer domain name | string | Y | null | +| manufacturerEventName | manufacturer event name | string | Y | null | +| contentType | http connettype | string | N | application/json | +| description | configuration instructions | string | N | null | +| secret | signature key | string | N | null | +| userName | user name | string | N | null | +| password | password | string | N | null | +| cloudEventName | cloudEvent name | string | Y | null | +| cloudEventIdGenerateMode | cloudEvent event object identification method, uuid or event id | string | N | manufacturerEventId | #### Update WebHook config diff --git a/versioned_docs/version-v1.10.0/design-document/01-spi.md b/versioned_docs/version-v1.10.0/design-document/01-spi.md index 94da666e7f..8291456437 100644 --- a/versioned_docs/version-v1.10.0/design-document/01-spi.md +++ b/versioned_docs/version-v1.10.0/design-document/01-spi.md @@ -2,7 +2,7 @@ ## Introduction -In order to improve scalability,EventMesh introduce the SPI(Service Provider Interface)mechanism, which can help to automatically find the concrete implementation +In order to improve scalability, EventMesh introduce the SPI (Service Provider Interface) mechanism, which can help to automatically find the concrete implementation class of the extended interface at runtime and load it dynamically. In EventMesh, all extension modules are implemented by using plugin. User can develop custom plugins by simply implementing extended interfaces, and select the plugin to be run at runtime by simply declare at configuration. diff --git a/versioned_docs/version-v1.10.0/design-document/02-observability/01-metrics-export.md b/versioned_docs/version-v1.10.0/design-document/02-observability/01-metrics-export.md index 0fb8dbb5da..331eab3361 100644 --- a/versioned_docs/version-v1.10.0/design-document/02-observability/01-metrics-export.md +++ b/versioned_docs/version-v1.10.0/design-document/02-observability/01-metrics-export.md @@ -34,11 +34,11 @@ Power your metrics and alerting with a leading open-source monitoring solution. use the meter instrument provided by OpenTelemetry to observe the metrics exist in EventMesh then export to Prometheus. -1、Initialize a meter instrument +1. Initialize a meter instrument -2、set the Prometheus server +2. set the Prometheus server -3、different metrics observer built +3. different metrics observer built ## Appendix diff --git a/versioned_docs/version-v1.10.0/design-document/02-observability/04-zipkin.md b/versioned_docs/version-v1.10.0/design-document/02-observability/04-zipkin.md index f4d07252d7..07b130c6c7 100644 --- a/versioned_docs/version-v1.10.0/design-document/02-observability/04-zipkin.md +++ b/versioned_docs/version-v1.10.0/design-document/02-observability/04-zipkin.md @@ -10,7 +10,7 @@ Distributed tracing is a method used to profile and monitor applications built w To enable the trace exporter of EventMesh Runtime, set the `eventMesh.server.trace.enabled` field in the `conf/eventmesh.properties` file to `true`. -```conf +```properties # Trace plugin eventMesh.server.trace.enabled=true eventMesh.trace.plugin=zipkin @@ -18,7 +18,7 @@ eventMesh.trace.plugin=zipkin To customize the behavior of the trace exporter such as timeout or export interval, edit the `exporter.properties` file. -```conf +```properties # Set the maximum batch size to use eventmesh.trace.max.export.size=512 # Set the queue size. This must be >= the export batch size @@ -31,7 +31,7 @@ eventmesh.trace.export.interval=5 To send the exported trace data to Zipkin, edit the `eventmesh.trace.zipkin.ip` and `eventmesh.trace.zipkin.port` fields in the `conf/zipkin.properties` file to match the configuration of the Zipkin server. -```conf +```properties # Zipkin's IP and Port eventmesh.trace.zipkin.ip=localhost eventmesh.trace.zipkin.port=9411 diff --git a/versioned_docs/version-v1.10.0/design-document/02-observability/05-jaeger.md b/versioned_docs/version-v1.10.0/design-document/02-observability/05-jaeger.md index e9452c3554..74066310cf 100644 --- a/versioned_docs/version-v1.10.0/design-document/02-observability/05-jaeger.md +++ b/versioned_docs/version-v1.10.0/design-document/02-observability/05-jaeger.md @@ -10,7 +10,7 @@ For the installation of Jaeger, you can refer to the [official documentation](ht To enable the trace exporter of EventMesh Runtime, set the `eventMesh.server.trace.enabled` field in the `conf/eventmesh.properties` file to `true`. -```conf +```properties # Trace plugin eventMesh.server.trace.enabled=true eventMesh.trace.plugin=jaeger @@ -18,7 +18,7 @@ eventMesh.trace.plugin=jaeger To customize the behavior of the trace exporter such as timeout or export interval, edit the `exporter.properties` file. -```conf +```properties # Set the maximum batch size to use eventmesh.trace.max.export.size=512 # Set the queue size. This must be >= the export batch size @@ -31,7 +31,7 @@ eventmesh.trace.export.interval=5 To send the exported trace data to Jaeger, edit the `eventmesh.trace.jaeger.ip` and `eventmesh.trace.jaeger.port` fields in the `conf/jaeger.properties` file to match the configuration of the Jaeger server. -```conf +```properties # Jaeger's IP and Port eventmesh.trace.jaeger.ip=localhost eventmesh.trace.jaeger.port=14250 diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/00-connectors.md b/versioned_docs/version-v1.10.0/design-document/03-connect/00-connectors.md new file mode 100644 index 0000000000..92552483ae --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/00-connectors.md @@ -0,0 +1,51 @@ +# Connectors + +## Connector + +A connector is an image or instance that interacts with a specific external service or underlying data source (e.g., Databases) on behalf of user applications. A connector is either a Source or a Sink. + +Connector runs as a standalone service by `main()`. + +## Source + +A source connector obtains data from an underlying data producer, and delivers it to targets after original data has been transformed into CloudEvents. It doesn't limit the way how a source retrieves data. (e.g., A source may pull data from a message queue or act as an HTTP server waiting for data sent to it). + +## Sink + +A sink connector receives CloudEvents and does some specific business logics. (e.g., A MySQL Sink extracts useful data from CloudEvents and writes them to a MySQL database). + +## CloudEvents + +A specification for describing event data in common formats to provide interoperability across services, platforms and systems. + +## Implements + +Add a new connector by implementing the source/sink interface using [eventmesh-openconnect-java](https://github.com/apache/eventmesh/tree/master/eventmesh-openconnect/eventmesh-openconnect-java). + +## Technical Solution + +### Structure and process + +![source-sink connector architecture](../../../../static/images/design-document/connector-architecture.png) + +### Design Detail + +![eventmesh-connect-detail](../../../../static/images/design-document/connector-design-detail.png) + +### Description + +#### Worker + +Worker is divided into Source Worker and Sink Worker, which are triggered by the `Application` class and implement the methods of the `ConnectorWorker` interface respectively, which include the worker's running life cycle, and the worker carries the running of the connector. Workers can be lightweight and independent through mirroring Running, the eventmesh-sdk-java module is integrated internally, and the CloudEvents protocol is used to interact with EventMesh. Currently, the TCP client is used by default. In the future, support for dynamic configuration can be considered. + +#### Connector + +Connectors are divided into Source Connector and Sink Connector. Connectors have their own configuration files and run independently. Workers perform reflective loading and configuration analysis to complete Connector initialization and subsequent operation. Source Connector implements the poll method, and Sink Connector implements The put method uniformly uses `ConnectorRecord` to carry data. Both Source Connector and Sink Connector can operate independently. + +#### ConnectorRecord with CloudEvents + +`ConnectorRecord` is a connector layer data protocol. When workers interact with EventMesh, a protocol adapter needs to be developed to convert `ConnectorRecord` to CloudEvents protocol. + +#### Registry + +The Registry module is responsible for storing the synchronization progress of synchronizing data of different Connector instances, ensuring high availability between multiple Connector images or instances. diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/01-rabbitmq-connector.md b/versioned_docs/version-v1.10.0/design-document/03-connect/01-rabbitmq-connector.md new file mode 100644 index 0000000000..09d6643b37 --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/01-rabbitmq-connector.md @@ -0,0 +1,42 @@ +# RabbitMQ + +## RabbitMQSinkConnector: From EventMesh to RabbitMQ + +1. launch your RabbitMQ server and EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. start your `RabbitMQConnectorServer`, it will subscribe to the topic defined in `pubSubConfig.subject` of EventMesh Runtime and send data to `connectorConfig.queueName` in your RabbitMQ. +4. send a message to EventMesh with the topic defined in `pubSubConfig.subject` and then you will receive the message in RabbitMQ. + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: rabbitmqSink + appId: 5031 + userName: rabbitmqSinkUser + passWord: rabbitmqPassWord +connectorConfig: + connectorName: rabbitmqSink + host: your.rabbitmq.server + port: 5672 + username: coyrqpyz + passwd: passwd + virtualHost: coyrqpyz + exchangeType: TOPIC + # build-in exchangeName or name a new one after you create it in rabbitmq server. + exchangeName: amq.topic + # rabbitmq server will create the routingKey and queueName automatically after you connect to it if they aren't exist before. + routingKey: eventmesh + queueName: eventmesh + autoAck: true +``` + +## RabbitMQSourceConnector: From RabbitMQ to EventMesh + +1. launch your RabbitMQ server and EventMesh Runtime. +2. enable sourceConnector and check `source-config.yml` (Basically the same as `sink-config.yml`) +3. start your `RabbitMQConnectorServer`, it will subscribe to the queue defined in `connectorConfig.queueName` in your RabbitMQ and send data to `pubSubConfig.subject` of EventMesh Runtime. +4. send a CloudEvent message to the queue and then you will receive the message in EventMesh. \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/02-http-connector.md b/versioned_docs/version-v1.10.0/design-document/03-connect/02-http-connector.md new file mode 100644 index 0000000000..3aeeb5b82a --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/02-http-connector.md @@ -0,0 +1,67 @@ +# HTTP + +## HTTP Source Connector + +### Configuration + +Before using HTTP source connector, you need to configure the server. +- Please configure `sourceEnable` to `true` in `/resource/server-config.yml` to enable source functionality. +- Please configure the source connector in `/resource/source-config.yml`, only the configuration under `connectorConfig` is described here: + - `connectorName`, name of the connector. + - (required) `path`, path of the API. + - (required) `port`, port of the API. + - `idleTimeout`, idle TCP connection timeout in seconds. A connection will timeout and be closed if no data is received nor sent within the `idleTimeout` seconds. The default is 0, which means don't timeout. + +### Startup + +1. start EventMesh Runtime +2. start eventmesh-connector-http + +When finished, the HTTP source connector will act as an HTTP server. + +### Sending messages + +You can send messages to the source connector via HTTP. + +```yaml +connectorConfig: + connectorName: httpSource + path: /test + port: 3755 + idleTimeout: 5 +``` + +The above example configures a URL `http://localhost:3755/test` in `source-config.yml`. + +You can send messages in `binary` mode or `structured` mode as specified in [cloudevent-spec](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/http-protocol-binding.md). + +Here are two examples: + +1. Sending a message in `binary` mode. + +```shell +curl --location --request POST 'http://localhost:3755/test' \ +--header 'ce-id: 1' \ +--header 'ce-specversion: 1.0' \ +--header 'ce-type: com.example.someevent' \ +--header 'ce-source: /mycontext' \ +--header 'ce-subject: test_topic' \ +--header 'Content-Type: text/plain' \ +--data-raw 'testdata' +``` + +2. Sending a message in `structured` mode. + +```shell +curl --location --request POST 'http://localhost:3755/test' \ +--header 'Content-Type: application/cloudevents+json' \ +--data-raw '{ + "id": "1", + "specversion": "1.0", + "type": "com.example.someevent", + "source": "/mycontext", + "subject":"test_topic", + "datacontenttype":"text/plain", + "data": "testdata" +}' +``` diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/03-redis-connector.md b/versioned_docs/version-v1.10.0/design-document/03-connect/03-redis-connector.md new file mode 100644 index 0000000000..10aab6d33e --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/03-redis-connector.md @@ -0,0 +1,33 @@ +# Redis + +## RedisSinkConnector: From EventMesh to Redis topic queue + +1. start your Redis instance if needed and EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. start your `RedisConnectServer`, it will subscribe to the topic defined in `pubSubConfig.subject` of EventMesh Runtime and send data to `connectorConfig.topic` in your Redis. +4. send a message to EventMesh with the topic defined in `pubSubConfig.subject` and then you will receive the message in Redis. + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: redisSink + appId: 5031 + userName: redisSinkUser + passWord: redisPassWord +connectorConfig: + connectorName: redisSink + server: redis://127.0.0.1:6379 + # the topic in redis + topic: SinkTopic +``` + +## RedisSourceConnector: From Redis topic queue to EventMesh + +1. start your Redis instance if needed and EventMesh Runtime. +2. enable sourceConnector and check `source-config.yml` (Basically the same as `sink-config.yml`) +3. start your `RedisConnectServer`, it will subscribe to the topic defined in `connectorConfig.topic` in your Redis and send data to `pubSubConfig.subject` of EventMesh Runtime. +4. send a CloudEvent message to the topic in Redis, and you will receive the message in EventMesh. \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/04-mongodb-connector.md b/versioned_docs/version-v1.10.0/design-document/03-connect/04-mongodb-connector.md new file mode 100644 index 0000000000..4c4f8ac95c --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/04-mongodb-connector.md @@ -0,0 +1,36 @@ +# MongoDB + +## MongoDBSinkConnector: From EventMesh to MongoDB + +1. launch your MongoDB server and EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. start your MongoDBConnectorServer, it will subscribe to the topic defined in `pubSubConfig.subject` of EventMesh Runtime and send data to `connectorConfig.collection` in your MongoDB. +4. send a message to EventMesh with the topic defined in `pubSubConfig.subject` and then you will receive the message in MongoDB. + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TopicTest + idc: FT + env: PRD + group: mongodbSink + appId: 5031 + userName: mongodbSinkUser + passWord: mongodbPassWord +connectorConfig: + connectorName: mongodbSink + # REPLICA_SET or STANDALONE is supported + connectorType: STANDALONE + # mongodb://root:root@127.0.0.1:27018,127.0.0.1:27019 + url: mongodb://127.0.0.1:27018 + database: yourDB + collection: yourCol +``` + +## MongoDBSourceConnector: From MongoDB to EventMesh + +1. launch your MongoDB server and EventMesh Runtime. +2. enable sourceConnector and check `source-config.yml` (Basically the same as `sink-config.yml`) +3. start your `MongoDBSourceConnector`, it will subscribe to the collection defined in `connectorConfig.collection` in your MongoDB and send data to `pubSubConfig.subject` of EventMesh Runtime. +4. write a CloudEvent message to `yourCol` at `yourDB` in your MongoDB and then you will receive the message in EventMesh. \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/07-knative-connector.md b/versioned_docs/version-v1.10.0/design-document/03-connect/05-knative-connector.md similarity index 79% rename from versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/07-knative-connector.md rename to versioned_docs/version-v1.10.0/design-document/03-connect/05-knative-connector.md index a8e722da20..311872aeeb 100644 --- a/versioned_docs/version-v1.10.0/design-document/01-event-handling-and-integration/07-knative-connector.md +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/05-knative-connector.md @@ -1,10 +1,11 @@ -# Knative Connector +# Knative + +>With the changes in the design of the Knative connector, this document is currently temporarily outdated. ## Prerequisite ### Create Knative Source and Sink We use the *cloudevents-player* [Knative service](https://knative.dev/docs/serving/) as an example. If you do not know how to create *cloudevents-player* Knative service as source and sink, please follow the steps in this [link](https://knative.dev/docs/getting-started/first-source/#creating-your-first-source). - ### Set up EventMesh Configuration - Add the following lines to [eventmesh-starter/build.gradle](https://github.com/apache/eventmesh/blob/master/eventmesh-starter/build.gradle) file. ``` @@ -34,11 +35,11 @@ application { mainClass = project.hasProperty("mainClass") ? project.getProperty("mainClass") : 'NULL' } ``` -- Set ```eventMesh.connector.plugin.type=knative``` in [eventmesh-runtime/conf/eventmesh.properties](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) file. +- Set `eventMesh.connector.plugin.type=knative` in [eventmesh-runtime/conf/eventmesh.properties](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) file. ## Demo ### Publish an Event Message from Knative and Subscribe from EventMesh -#### Step 1: Start an Eventmesh-Runtime Server +#### Step 1: Start an EventMesh Runtime Server ```bash $ cd eventmesh-starter $ ../gradlew -PmainClass=org.apache.eventmesh.starter.StartUp run @@ -50,14 +51,14 @@ $ curl -i http://cloudevents-player.default.127.0.0.1.sslip.io -H "Content-Type: ``` #### Step 3: Subscribe from an EventMesh -- Set ```public static final String EVENTMESH_HTTP_ASYNC_TEST_TOPIC = "messages";``` in [ExampleConstants.java](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/common/ExampleConstants.java) file. +- Set `public static final String EVENTMESH_HTTP_ASYNC_TEST_TOPIC = "messages";` in [ExampleConstants.java](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/common/ExampleConstants.java) file. ```bash $ cd eventmesh-examples $ ../gradlew -PmainClass=org.apache.eventmesh.http.demo.sub.SpringBootDemoApplication run ``` #### Expected Result -The following message with ```data``` field as ```Hello CloudEvents!``` will be printed on the console of EventMesh server. +The following message with `data` field as `Hello CloudEvents!` will be printed on the console of EventMesh server. ```bash 2022-09-05 16:37:58,237 INFO [eventMesh-clientManage-] DefaultConsumer(DefaultConsumer.java:60) - \ [{"event":{"attributes":{"datacontenttype":"application/json","id":"123456789","mediaType":"application/json",\ @@ -66,7 +67,7 @@ The following message with ```data``` field as ```Hello CloudEvents!``` will be ``` ### Publish an Event Message from EventMesh and Subscribe from Knative -#### Step 1: Start an Eventmesh-Runtime Server +#### Step 1: Start an EventMesh Runtime Server ```bash $ cd eventmesh-starter $ ../gradlew -PmainClass=org.apache.eventmesh.starter.StartUp run @@ -85,7 +86,7 @@ $ curl http://cloudevents-player.default.127.0.0.1.sslip.io/messages ``` #### Expected Result -The following message with ```data``` field as ```Hello Knative from EventMesh!``` will be printed on the console of EventMesh server. +The following message with `data` field as `Hello Knative from EventMesh!` will be printed on the console of EventMesh server. ```bash 2022-09-05 16:52:41,633 INFO [eventMesh-clientManage-] DefaultConsumer(DefaultConsumer.java:60) - \ [{"event":{"attributes":{"datacontenttype":"application/json","id":"1234","mediaType":"application/json",\ diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/06-lark-connector.md b/versioned_docs/version-v1.10.0/design-document/03-connect/06-lark-connector.md new file mode 100644 index 0000000000..665b590a45 --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/06-lark-connector.md @@ -0,0 +1,36 @@ +# Feishu/Lark + +## Lark Sink Server Config And Start + +Before using eventmesh-connector-lark to sink events, you need to configure the server. + +- Please customize `sinkEnable``=`true`/`false` in `/resource/server-config.yml` to turn on/off the sink function. +- Regarding `/resource/sink-config.yml`, only the configuration under `sinkConnectorConfig` is explained here: + - `connectorName`, specify the connector name + - (required) `appId`, the appId obtained from lark + - (required) `appSecret`, the appSecret obtained from lark + - `receiveIdType`, the type of receiving Id, the default and recommended use is `open_id`. Optional open_id/user_id/union_id/email/chat_id. + - (Required) `receiveId`, receive Id, needs to correspond to `receiveIdType`. + - `sinkAsync`, whether to asynchronously sink events + - `maxRetryTimes`, the maximum number of retransmissions when the sink event fails. The default is 3 times. + - `retryDelayInMills`, when the sink event fails, the time interval for retransmitting the event. Default is 1s, unit is milliseconds. + +## Sink CloudEvent To Lark + +When using the eventmesh-connector-lark sinking event, you need to add the corresponding extension filed in CloudEvent: + +- When key=`templatetype4lark`, value=`text`/`markdown`, indicating the text type of the event. +- When text type is markdown, you can add extension: key=`markdownmessagetitle4lark`, value indicates the title of the event. +- When key=`atusers4lark`, value=`id-0,name-0;id-1,name-1`, indicating that the event requires `@`certain users. + - It is recommended to use **open_id** for id. + - When the text is of text type, the id can be **open_id/union_id/user_id**; when the text is of markdown type, the id can be **open_id/user_id**. In particular, when the application type is [custom robot](https://open.larksuite.com/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN) and the text is of markdown type, only the use of **open_id** to `@` the user is supported. + - When the text is of text type and the id is invalid, name will be used instead for display; when the text is of markdown type and the id is invalid, an exception will be thrown directly (you should try to ensure the correctness of the id, and name can be considered omitted). +- When key=`atall4lark`, value=`true`/`false`, indicating that the event requires `@` everyone. + +## Lark Open Platform API + +For the Lark open platform API involved in this module, please click the following link: + +- **Send Message**, please [view here](https://open.larksuite.com/document/server-docs/im-v1/message/create?appId=cli_a5e1bc31507ed00c) +- **text**, please [view here](https://open.larksuite.com/document/server-docs/im-v1/message-content-description/create_json#c9e08671) +- **markdown**, please [view here](https://open.larksuite.com/document/common-capabilities/message-card/message-cards-content/using-markdown-tags) \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/07-dingtalk-connector.md b/versioned_docs/version-v1.10.0/design-document/03-connect/07-dingtalk-connector.md new file mode 100644 index 0000000000..4e3b729a11 --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/07-dingtalk-connector.md @@ -0,0 +1,34 @@ +# DingTalk + +## DingtalkSinkConnector: From EventMesh to DingTalk + +1. launch your EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. send a message to EventMesh with the topic defined in `pubSubConfig.subject` + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-DINGTALK + idc: FT + env: PRD + group: dingTalkSink + appId: 5034 + userName: dingTalkSinkUser + passWord: dingTalkPassWord +sinkConnectorConfig: + connectorName: dingTalkSink + # Please refer to: https://open.dingtalk.com/document/orgapp/the-robot-sends-a-group-message + appKey: dingTalkAppKey + appSecret: dingTalkAppSecret + openConversationId: dingTalkOpenConversationId + robotCode: dingTalkRobotCode +``` + +### CloudEvent Attributes + +When using the eventmesh-connector-dingtalk sinking event, you need to add the corresponding extension filed in CloudEvent: + +- When key=`dingtalktemplatetype`, value=`text`/`markdown`, indicating the text type of the event. +- When text type is markdown, you can add extension: key=`dingtalkmarkdownmessagetitle`, value indicates the title of the event. \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/08-wecom-connector.md b/versioned_docs/version-v1.10.0/design-document/03-connect/08-wecom-connector.md new file mode 100644 index 0000000000..62e834ef0d --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/08-wecom-connector.md @@ -0,0 +1,30 @@ +# WeCom + +## WecomSinkConnector: From EventMesh to WeCom + +1. launch your EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. send a message to EventMesh with the topic defined in `pubSubConfig.subject` + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-WECOM + idc: FT + env: PRD + group: weComSink + appId: 5034 + userName: weComSinkUser + passWord: weComPassWord +sinkConnectorConfig: + connectorName: weComSink + # Please refer to: https://developer.work.weixin.qq.com/document/path/90236 + robotWebhookKey: weComRobotWebhookKey +``` + +### CloudEvent Attributes + +When using the eventmesh-connector-wecom sinking event, you need to add the corresponding extension filed in CloudEvent: + +- When key=`wecomtemplatetype`, value=`text`/`markdown`, indicating the text type of the event. \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/09-slack-connector.md b/versioned_docs/version-v1.10.0/design-document/03-connect/09-slack-connector.md new file mode 100644 index 0000000000..cee677985b --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/09-slack-connector.md @@ -0,0 +1,25 @@ +# Slack + +## SlackSinkConnector: From EventMesh to Slack + +1. launch your EventMesh Runtime. +2. enable sinkConnector and check `sink-config.yml`. +3. send a message to EventMesh with the topic defined in `pubSubConfig.subject` + +```yaml +pubSubConfig: + # default port 10000 + meshAddress: your.eventmesh.server:10000 + subject: TEST-TOPIC-SLACK + idc: FT + env: PRD + group: slackSink + appId: 5034 + userName: slackSinkUser + passWord: slackPassWord +sinkConnectorConfig: + connectorName: slackSink + # Please refer to: https://api.slack.com/messaging/sending + appToken: slackAppToken + channelId: slackChannelId +``` \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/design-document/03-connect/_category_.json b/versioned_docs/version-v1.10.0/design-document/03-connect/_category_.json new file mode 100644 index 0000000000..b47c4291f5 --- /dev/null +++ b/versioned_docs/version-v1.10.0/design-document/03-connect/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Connect", + "collapsed": false +} diff --git a/versioned_docs/version-v1.10.0/design-document/03-schema-registry.md b/versioned_docs/version-v1.10.0/design-document/03-schema-registry.md index 7c5d228260..b368152662 100644 --- a/versioned_docs/version-v1.10.0/design-document/03-schema-registry.md +++ b/versioned_docs/version-v1.10.0/design-document/03-schema-registry.md @@ -73,7 +73,7 @@ The proposal has two aspects. First is a separated Open Schema Registry, which includes storage and compatibility check for schema. This proposal is under developing. -Second is the integration of Open Schema in Eventmesh, which includes validation for schema. This proposal is to be developed. +Second is the integration of Open Schema in EventMesh, which includes validation for schema. This proposal is to be developed. As for the first proposal, some developing statuses are as follows. diff --git a/versioned_docs/version-v1.10.0/instruction/00-eclipse.md b/versioned_docs/version-v1.10.0/instruction/00-eclipse.md deleted file mode 100644 index 7ef27d5358..0000000000 --- a/versioned_docs/version-v1.10.0/instruction/00-eclipse.md +++ /dev/null @@ -1,42 +0,0 @@ -# Import EventMesh into eclipse - -We recommend using `Intellij IDEA` for development, if you wish to use `Eclipse`, you can refer to the following steps to import the project. - -### 1. Dependencies - -``` -64-bit JDK 1.8+. -Gradle is at least 7.0, 7.0.* recommended; -eclipse installed gradle plugin or eclipse comes with gradle plugin; -``` - -### 2. Download source code - -```shell -git@github.com:apache/eventmesh.git -``` - -### 3. Project compile eclipse environment - -Open a command line terminal and run `gradlew cleanEclipse eclipse` - -### 4. Configuration changes - -Modify the project name to match the `settings.gradle` configuration file parameter `rootProject.name`. - -### 5. Modify `eclipse.init` configuration file, configure lombok to 1.18.8 version for example - -``` --javaagent:lombok-1.18.8.jar --XBootclasspath/a:lombok-1.18.8.jar -``` - -### 6. 202106 version, `eclipse.init` add configuration parameters - -``` ---illegal-access=permit -``` - -### 7. Import projetc - -Open eclipse, import gradle project to IDE. \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/instruction/01-store.md b/versioned_docs/version-v1.10.0/instruction/01-store.md index 0abf341598..ab06d8c613 100644 --- a/versioned_docs/version-v1.10.0/instruction/01-store.md +++ b/versioned_docs/version-v1.10.0/instruction/01-store.md @@ -1,31 +1,33 @@ -# EventMesh Store +# Event Store -## 1 Dependencies +## 1. Prerequisites -```text -64-bit OS,we recommend Linux/Unix; -64-bit JDK 1.8+; -Gradle 7.0+, we recommend 7.0.* -4g+ available disk to deploy eventmesh-store -If you choose standalone mode, you could skip this file and go to the next step: Start Eventmesh-Runtime; if not, you could choose RocketMQ as the store layer. -``` +- 64-bit OS, we recommend Linux/Unix. + +- 64-bit JDK 8 or JDK 11 + +- 4GB+ available disk to deploy Event Store -## 2 Download +This document provides an example of deploying it with RocketMQ as Event Store, but you can also choose another [Event Store supported by EventMesh](../roadmap.md#event-store-implementation-status). If you choose default standalone mode, you could skip this file and go to the next step: Deploy EventMesh Runtime; if not, you could choose RocketMQ as the store layer. + +In a production environment, you should use an Event Store other than standalone to support greater throughput and higher availability. + +## 2. Download Download the Binary code (recommended: 4.9.*) from [RocketMQ Official](https://rocketmq.apache.org/download/). Here we take 4.9.4 as an example. -``` +```shell unzip rocketmq-all-4.9.4-bin-release.zip cd rocketmq-4.9.4/ ``` ![rocketmq_1](/images/install/rocketmq_1.png) -### 3 Start +## 3. Start Start Name Server: -```console +```shell nohup sh bin/mqnamesrv & tail -f ~/logs/rocketmqlogs/namesrv.log ``` @@ -34,13 +36,13 @@ tail -f ~/logs/rocketmqlogs/namesrv.log Start Broker: -```console +```shell nohup sh bin/mqbroker -n localhost:9876 & tail -f ~/logs/rocketmqlogs/broker.log ``` -The deployment of eventmesh-store has finished, please go to the next step: [Start Eventmesh-Runtime](03-runtime.md) +The deployment of Event Store has finished, please go to the next step: [Start EventMesh Runtime](./03-runtime.md) ## Reference -For more details about RocketMQ, please refer to \ No newline at end of file +For more details about RocketMQ, please refer to https://rocketmq.apache.org/docs/quick-start/. \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/instruction/02-store-with-docker.md b/versioned_docs/version-v1.10.0/instruction/02-store-with-docker.md index b728b3cca0..ebcee611bb 100644 --- a/versioned_docs/version-v1.10.0/instruction/02-store-with-docker.md +++ b/versioned_docs/version-v1.10.0/instruction/02-store-with-docker.md @@ -1,34 +1,32 @@ -# EventMesh Store with Docker +# Event Store with Docker -If you choose standalone mode, you could skip this file and go to the next step: Start Eventmesh-Runtime; if not, you could choose RocketMQ as the store layer. +## 1. Prerequisites -## 1. Dependencies +- 64-bit OS, we recommend Linux/Unix. +- 4GB+ available disk to deploy Event Store -``` -64-bit OS,we recommend Linux/Unix; -64-bit JDK 1.8+; -Gradle 7.0+, we recommend 7.0.* -4g+ available disk to deploy eventmesh-store -``` +This document provides an example of deploying it with RocketMQ as Event Store, but you can also choose another [Event Store supported by EventMesh](../roadmap.md#event-store-implementation-status). If you choose default standalone mode, you could skip this file and go to the next step: Deploy EventMesh Runtime; if not, you could choose RocketMQ as the store layer. + +In a production environment, you should use an Event Store other than standalone to support greater throughput and higher availability. ## 2. Deploy ### 2.1 Pull Images -Pull RocketMQ image from Docker Hub: +Pull RocketMQ image from Docker Hub: ```shell #Pull rocketmq image sudo docker pull apache/rocketmq:4.9.4 ``` -You can list and view existing local mirrors with the following command: +You can list and view existing local mirrors with the following command: ```shell sudo docker images ``` -If the terminal displays the image information as shown below, the EventMesh image has been successfully downloaded locally. +If the terminal displays the image information as shown below, the RocketMQ image has been successfully downloaded locally. ```shell REPOSITORY TAG IMAGE ID CREATED SIZE @@ -39,7 +37,7 @@ apache/rocketmq 4.9.4 a2a50ca263c3 13 months ago 548MB ### 2.2 Run Docker -Run namerv container: +Run namesrv container: ```shell @@ -68,6 +66,6 @@ sudo docker run -d -p 10911:10911 -p 10909:10909 \ ![rocketmq_docker_2](/images/install/rocketmq_docker_2.png) -Please note that the **rocketmq-broker ip** is **pod ip**. If you want to modify this ip, you can set it your custom value in **broker.conf**。 +Please note that the `rocketmq-broker ip` is `pod ip`. If you want to modify this ip, you can set it your custom value in `broker.conf`。 -By now, the deployment of eventmesh-store has finished, please go to the next step: [Start Eventmesh-Runtime Using Docker](04-runtime-with-docker.md) +By now, the deployment of Event Store has finished, please go to the next step: [Start EventMesh Runtime Using Docker](./04-runtime-with-docker.md) diff --git a/versioned_docs/version-v1.10.0/instruction/03-runtime.md b/versioned_docs/version-v1.10.0/instruction/03-runtime.md index 0b0e455731..64a1f271a1 100644 --- a/versioned_docs/version-v1.10.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.10.0/instruction/03-runtime.md @@ -1,209 +1,271 @@ -# EventMesh Runtime +# EventMesh Runtime Quick Start -The EventMesh Runtime is a stateful mesh node in an EventMesh cluster that is responsible for event transfer between the Source Connector and the Sink Connector, and can use EventMesh Storage as a storage queue for events. +EventMesh Runtime is a stateful Mesh node in the EventMesh cluster, responsible for event transmission between Source Connectors and Sink Connectors. It uses Event Store as a storage queue for events. -## 1 Run on your local machine +![EventMesh Runtime](../../../static/images/design-document/runtime.png) -### 1.1 Run from source code +## 1. Binary Distribution Deployment -#### 1.1.1 Dependencies +### 1.1 Environment -``` -64-bit OS,we recommend Linux/Unix; -64-bit JDK 1.8+; -Gradle 7.0+, we recommend 7.0.*; -``` -#### 1.1.2 Download source code +- Recommended to use 64-bit Linux/Unix systems +- 64-bit JDK 8 or JDK 11 -Download and extract the source code of the latest release from [EventMesh download](https://eventmesh.apache.org/download). For example, with the current latest version, you will get `apache-eventmesh-1.9.0-source.tar.gz`. +### 1.2 Download -#### 1.1.3 Run form local +Download the latest version of the Binary Distribution from the [EventMesh Download](https://eventmesh.apache.org/download) page and extract it: -**1.1.3.1 Description of the project structure:** +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-bin.tar.gz +tar -xvzf apache-eventmesh-1.10.0-bin.tar.gz +cd apache-eventmesh-1.10.0 +``` -- eventmesh-common : eventmesh public classes and methods module -- eventmesh-connector-api : eventmesh connector plugin interface definition module -- eventmesh-connector-plugin : eventmesh connector plugin module -- eventmesh-runtime : eventmesh runtime module -- eventmesh-sdk-java : eventmesh java client sdk -- eventmesh-starter : eventmesh local startup and runtime project portal -- eventmesh-spi : eventmesh SPI loader module +### 1.3 Configuration -> Note: Plugin modules follow the SPI specification defined by eventmesh, custom SPI interfaces need to be marked with the annotation @EventMeshSPI. -> Plugin instances need to be configured in the corresponding module under /main/resources/META-INF/eventmesh with a mapping file of the relevant interfaces to their implementation classes, with the name of the file being the full class name of the SPI interface. -> The content of the file is the mapping from the plugin instance name to the plugin instance, see eventmesh-connector-rocketmq plugin module for details. +This document provides an example of deploying it with RocketMQ as Event Store, but you can also choose another [Event Store supported by EventMesh](../roadmap.md#event-store-implementation-status). If you choose a non-standalone mode, ensure that [RocketMQ is successfully started](https://rocketmq.apache.org/docs/quick-start/) and accessible via IP address. If you stick to the default standalone mode, RocketMQ doesn't need to be started. -**1.1.3.2 Plugin Description** +#### 1.3.1 EventMesh Runtime Configuration -***1.1.3.2.1 Installing the plugin*** +This configuration file includes settings for the EventMesh Runtime environment and integrated plugins. -There are two ways to install the plugin +```shell +vim conf/eventmesh.properties +``` -- classpath loading: Local developers can install the plugin by declaring it in the eventmesh-starter module build.gradle, e.g., declare that it uses the rocketmq plugin +Specify RocketMQ as Event Store: -```gradle - implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq ``` -- File loading: By installing the plugin to the plugin directory, EventMesh will automatically load the plugins in the plugin directory according to the conditions at runtime, you can install the plugin by executing the following command +Check if the default ports in the configuration file are occupied. If occupied, modify them to unused ports: + +| Property | Default | Remarks | +| ---------------------------------- | ------- | ------------------- | +| eventMesh.server.tcp.port | 10000 | TCP listening port | +| eventMesh.server.http.port | 10105 | HTTP listening port | +| eventMesh.server.grpc.port | 10205 | gRPC listening port | +| eventMesh.server.admin.http.port | 10106 | HTTP management port | + +#### 1.3.2 Event Store Configuration + +In the case of RocketMQ, the configuration file includes parameters required to connect to the RocketMQ namesrv. + +Edit `rocketmq-client.properties`: ```shell -. /gradlew clean jar dist && . /gradlew installPlugin +vim conf/rocketmq-client.properties ``` -***1.1.3.2.2 Using Plugins *** +If the namesrv address you are running is different from the default value in the configuration file, modify it to the actual running namesrv address. -EventMesh will load plugins in the dist/plugin directory by default, you can change the plugin directory with `-DeventMeshPluginDir=your_plugin_directory`. Examples of plugins to be used at runtime can be found in the -`confPath` directory under `eventmesh.properties`. For example declare the use of the rocketmq plugin at runtime with the following settings. +| Property | Default | Remarks | +| ----------------------------------------- | ------------------------------ | ----------------------------------- | +| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv address | -```properties -#connector plugin -eventMesh.connector.plugin.type=rocketmq -``` +### 1.4 Start -**1.1.3.3 Configuring the VM startup parameters** +Execute the `start.sh` script to start EventMesh Runtime: -```properties --Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml --Deventmesh.log.home=eventmesh-runtime/logs --Deventmesh.home=eventmesh-runtime --DconfPath=eventmesh-runtime/conf +```shell +bash bin/start.sh ``` -> Note: If your operating system is Windows, you may need to replace the file separator with '\'. - -**1.1.3.4 Getting up and running** +If the script only prints the following three lines without any other error messages, it means the script has executed successfully: +```shell +EventMesh using Java version: 8, path: /usr/local/openjdk-8/bin/java +EVENTMESH_HOME : /data/app/eventmesh +EVENTMESH_LOG_HOME : /data/app/eventmesh/logs ``` -Run org.apache.eventmesh.starter. + +Next, view the logs output by EventMesh to check its runtime status: + +```shell +tail -n 50 -f logs/eventmesh.out ``` -### 1.2 Run form local binary +When the log output shows `server state:RUNNING`, it means EventMesh Runtime has started successfully. -#### 1.1.1 Dependencies +Stop EventMesh Runtime: -``` -64-bit OS,we recommend Linux/Unix; -64-bit JDK 1.8+; -Gradle 7.0+, we recommend 7.0.*; +```shell +bash bin/stop.sh ``` -Gradle is the build automation tool used by Apache EventMesh. Please refer to the [offical guide](https://docs.gradle.org/current/userguide/installation.html) to install the latest release of Gradle. +When the script prints `shutdown server ok!`, it means EventMesh Runtime has stopped. -### 1.1.2 Download Source Code +## 2. Build Binary Distribution -Download and extract the source code of the latest release from [EventMesh download](https://eventmesh.apache.org/download). For example, with the current latest version, you will get `apache-eventmesh-1.9.0-source.tar.gz`. +### 2.1 Environment -```console -tar -xvzf apache-eventmesh-1.9.0-source.tar.gz -cd apache-eventmesh-1.9.0-src/ -``` +- Recommended to use 64-bit Linux/Unix systems +- 64-bit JDK 8 or JDK 11 +- [Gradle](https://docs.gradle.org/current/userguide/installation.html) 7.0+ (optional), the build commands provided in this document use the Gradle Wrapper, and you don't need to configure the Gradle environment yourself. You can also check the recommended Gradle version for your EventMesh version in the `gradle/wrapper/gradle-wrapper.properties` file and use your local Gradle version for compilation. -Build the source code with Gradle. +### 2.2 Download -```console -gradle clean dist -``` +Download the Source Code from [EventMesh Download](https://eventmesh.apache.org/download) and extract it: -![runtime_2](/images/install/runtime_2.png) +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-source.tar.gz +tar -xvzf apache-eventmesh-1.10.0-source.tar.gz +cd apache-eventmesh-1.10.0-src/ +``` -Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. +You can also choose to clone the code from GitHub: -```console -cd dist -vim conf/eventmesh.properties +```shell +git clone https://github.com/apache/eventmesh.git +cd eventmesh/ ``` -### 1.1.3 Build and Load Plugins +### 2.3 Build -Apache EventMesh introduces the SPI (Service Provider Interface) mechanism, which enables EventMesh to discover and load the plugins at runtime. The plugins could be installed with these methods: +EventMesh is developed based on JDK8, and the binary distribution is also built based on JDK8. It is recommended to run EventMesh Runtime in a JDK8 environment. -- Gradle Dependencies: Declare the plugins as the build dependencies in `eventmesh-starter/build.gradle`. +#### Run in a JDK8 Environment -```gradle -dependencies { - implementation project(":eventmesh-runtime") +Some source code needs to be generated under JDK11: - // Example: Load the RocketMQ plugin - implementation project(":eventmesh-connectors:eventmesh-connector-rocketmq") -} +```shell +./gradlew clean generateGrammarSource --parallel --daemon ``` -- Plugin directory: EventMesh loads the plugins in the `dist/plugin` directory based on `eventmesh.properties`. The `installPlugin` task of Gradle builds and moves the plugins into the `dist/plugin` directory. +The `generateGrammarSource` task will generate the source code required for `ANTLR` under the `org.apache.eventmesh.connector.jdbc.antlr4.autogeneration` package. + +Next, build EventMesh Runtime under JDK8: -```console -gradle installPlugin +```shell +./gradlew clean dist -x spotlessJava -x generateGrammarSource --parallel --daemon ``` -### 1.1.4 启动Runtime -Execute the `start.sh` script to start the EventMesh Runtime server. +After the build is complete, proceed to [2.4 Package Plugins](#24-package-plugins). -```console -bash bin/start.sh -``` +> You can switch between JDK versions using `update-alternatives` or `JAVA_HOME` and check the current JDK version with `java -version`. -![runtime_4](/images/install/runtime_4.png) +#### Run in a JDK11 Environment -View the output log: +If you want to use JDK11 as the runtime environment for EventMesh, execute: -```console -tail -f logs/eventmesh.out +```shell +./gradlew clean dist --parallel --daemon ``` -![runtime_3](/images/install/runtime_3.png) -## 2 Remote deployment +After the build is complete, proceed to [2.4 Package Plugins](#24-package-plugins). -### 2.1 Dependencies +### 2.4 Package Plugins -``` -64-bit OS,we recommend Linux/Unix; -64-bit JDK 1.8+; -Gradle 7.0+, we recommend 7.0.*; -4g+ available disk to deploy eventmesh-store; +The `installPlugin` task will copy the built plugins to the `dist` directory: + +```shell +./gradlew installPlugin ``` -### 2.2 Download +EventMesh will load the plugins from the `plugin` directory based on the configuration in `eventmesh.properties`. -Download and extract the executable binaries of the latest release from [EventMesh download](https://eventmesh.apache.org/download).For example, with the current latest version, you will get `apache-eventmesh-1.9.0.tar.gz`. +After a successful build, the `dist` directory in the project root contains the binary files for EventMesh. For configuration and startup, refer to [Binary Distribution Deployment](#1-binary-distribution-deployment). +## 3. Start from Source Code -```console -tar -xvzf apache-eventmesh-1.9.0-bin.tar.gz -cd apache-eventmesh-1.9.0 -``` +### 3.1 Dependencies -### 2.3 Deploy +- Recommended to use 64-bit Linux/Unix systems +- 64-bit JDK 8 or JDK 11 +- [Gradle](https://docs.gradle.org/current/userguide/installation.html) 7.0+ (optional), the build commands provided in this document use the Gradle Wrapper, and you don't need to configure the Gradle environment yourself. You can also check the recommended Gradle version for your EventMesh version in the `gradle/wrapper/gradle-wrapper.properties` file and use your local Gradle version for compilation. +- It is recommended to use an IDE (Integrated Development Environment) to import EventMesh. `Intellij IDEA` is recommended as the IDE. -Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. The executable binaries contain all plugins in the bundle, thus there's no need to build them from source code. +### 3.2 Download -```console -vim conf/eventmesh.properties +Clone the code from GitHub: + +```shell +git clone https://github.com/apache/eventmesh.git +cd eventmesh/ ``` -Execute the `start.sh` script to start the EventMesh Runtime server. +You can also download the Source Code release from [EventMesh Download](https://eventmesh.apache.org/download) and extract it: -```console -bash bin/start.sh +```shell +wget https://dlcdn.apache.org/eventmesh/1.10.0/apache-eventmesh-1.10.0-source.tar.gz +tar -xvzf apache-eventmesh-1.10.0-source.tar.gz +cd apache-eventmesh-1.10.0-src/ ``` -If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. +### 3.3 Project Structure Explanation -![runtime_6](/images/install/runtime_6.png) +| Main Module | Description | +| ------------------------ | ------------------------------------------------------------ | +| eventmesh-starter | Entry point for running EventMesh locally | +| eventmesh-runtime | EventMesh Runtime, the runtime module | +| eventmesh-connectors | [Connectors](../design-document/03-connect/00-connectors.md) for connecting event sources and sinks, supporting [various services and platforms](../roadmap.md#connector-implementation-status) | +| eventmesh-storage-plugin | [Event Store](../roadmap.md#event-store-implementation-status) plugin for EventMesh Runtime | +| eventmesh-sdks | Multi-language client SDKs for EventMesh, including Java, Go, C and Rust | +| eventmesh-examples | Examples of SDK usage | +| eventmesh-spi | Module for loading EventMesh SPI | +| eventmesh-common | Module for common classes and methods | +> Plugin modules follow the SPI specification defined by EventMesh, and custom SPI interfaces need to be annotated with `@EventMeshSPI`. +> +> Plugin instances need to be configured in the corresponding module under the `/main/resources/META-INF/eventmesh` directory with a mapping file for interface and implementation classes. The file name is the fully qualified class name of the SPI interface. +> +> The content of the file is the mapping from the plugin instance name to the plugin instance. For details, refer to the `eventmesh-storage-rocketmq` plugin module. -View the output log: +### 3.4 Plugin Explanation -```console -cd /root/apache-eventmesh-1.9.0/logs -tail -f eventmesh.out +#### 3.4.1 Install Plugins + +EventMesh has an SPI mechanism that allows EventMesh to discover and load plugins. There are two ways to install plugins: + +- Classpath loading: During local development, you can add dependencies in the `build.gradle` of the `eventmesh-starter` module. For example, to add the Kafka Storage Plugin: + +```gradle +dependencies { + implementation project(":eventmesh-runtime") + // Example: Add the Kafka Storage Plugin + implementation project(":eventmesh-storage-plugin:eventmesh-storage-kafka") +} ``` -![runtime_7](/images/install/runtime_7.png) -You can stop the run with the following command: +- File loading: By installing the plugin to the plugin directory, EventMesh will automatically load the plugins in the plugin directory based on certain conditions during runtime. Please refer to [2.3 Build](#23-build) and [2.4 Package Plugins](#24-package-plugins). -```console -bash bin/stop.sh +>When you make changes to the source code, it is recommended to add the `build` task to the command provided in [2.3 Build](#23-build) to recompile and run unit tests. For example: +> +>```shell +>./gradlew clean build dist -x spotlessJava -x generateGrammarSource --parallel --daemon +>``` + +#### 3.4.2 Use Plugins + +EventMesh will load the plugins by default from the `dist/plugin` directory. You can change the plugin directory using `-DeventMeshPluginDir=your_plugin_directory`. The plugin instances needed at runtime can be configured in the `confPath` directory in the `eventmesh.properties` file. For example, by setting the following, you declare the use of the RocketMQ as Event Store: + +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq +``` + +### 3.5 Configure VM Options + +```properties +-Dlog4j.configurationFile=eventmesh-runtime/conf/log4j2.xml +-Deventmesh.log.home=eventmesh-runtime/logs +-Deventmesh.home=eventmesh-runtime +-DconfPath=eventmesh-runtime/conf ``` -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) +If the operating system is Windows, replace the forward slash with a backslash `\`. + +### 3.6 Start + +Run the `main()` method of the `org.apache.eventmesh.starter.StartUp` class in the `eventmesh-starter` module to start EventMesh Runtime. + +### 3.7 Stop + +When the following logs are printed to the console, EventMesh Runtime has stopped. + +```log +DEBUG StatusConsoleListener Shutdown hook enabled. Registering a new one. +WARN StatusConsoleListener Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger +``` \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.10.0/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..9a2a87dc57 100644 --- a/versioned_docs/version-v1.10.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.10.0/instruction/04-runtime-with-docker.md @@ -1,130 +1,168 @@ # EventMesh Runtime with Docker -The documentation introduces the steps to install the latest release of EventMesh Runtime with Docker and connect to Apache RocketMQ. It's recommended to use a Linux-based system with [Docker Engine](https://docs.docker.com/engine/install/). Please follow the [Docker tutorial](https://docs.docker.com/get-started/) to get familiar with the basic concepts (registry, volume, etc.) and commands of Docker. +You can deploy EventMesh Runtime using Docker. This document provides an example of deploying it with RocketMQ as Event Store, but you can also choose another [Event Store supported by EventMesh](../roadmap.md#event-store-implementation-status). -## 1. Dependencies +## 1. Prerequisites -``` -64-bit OS,we recommend Linux/Unix; -64-bit JDK 1.8+; -Gradle 7.0+, we recommend 7.0.* -4g+ available disk to deploy eventmesh-store -If you choose standalone mode, you could skip this file and go to the next step: Start Eventmesh-Runtime; if not, you could choose RocketMQ as the store layer. -``` +1. It is recommended to use a 64-bit Linux system. +2. Ensure Docker Engine is installed. Refer to the [official Docker documentation](https://docs.docker.com/engine/install/) for the installation process. +3. Familiarity with basic Docker concepts and command-line operations (e.g., registry, mounting) is recommended but not mandatory, as the required commands are provided. +4. If you choose a non-standalone mode, ensure that [RocketMQ is successfully started](https://rocketmq.apache.org/docs/quick-start/) and accessible via IP address. If you stick to the default standalone mode, RocketMQ doesn't need to be deployed. -## 2. Pull EventMesh Image +## 2. Pull the EventMesh Runtime Image -Download the pre-built image of [`eventmesh`](https://hub.docker.com/r/eventmesh/eventmesh) from Docker Hub with `docker pull`: +First, open a command line and use the following `pull` command to download the [latest version of EventMesh](https://eventmesh.apache.org/events/release-notes/) from [Docker Hub](https://hub.docker.com/r/apache/eventmesh/tags). -```console -sudo docker pull eventmesh/eventmesh:v1.4.0 +```shell +sudo docker pull apache/eventmesh:latest ``` -To verify that the `eventmesh/eventmesh` image is successfully installed, list the downloaded images with `docker images`: +You can use the following command to list and view the locally available images. -```console +```shell +sudo docker images +``` + +If the terminal displays image information similar to the following, it indicates that the EventMesh image has been successfully downloaded locally. + +```shell $ sudo docker images -REPOSITORY TAG IMAGE ID CREATED SIZE -eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB +REPOSITORY TAG IMAGE ID CREATED SIZE +apache/eventmesh latest f32f9e5e4694 2 days ago 917MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) +## 3. Mount Configuration Files -## 3. Edit Configuration +If you are starting EventMesh Runtime in standalone mode and haven't customized the configuration, you can proceed to the next step. -Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. +First, create the EventMesh configuration file directory on the host machine. This directory can be freely specified: ```shell -sudo mkdir -p /data/eventmesh/rocketmq/conf -cd /data/eventmesh/rocketmq/conf -sudo touch eventmesh.properties -sudo touch rocketmq-client.properties +sudo mkdir -p /data/eventmesh/conf +cd /data/eventmesh/conf ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) +### 3.1 EventMesh Runtime Configuration -### 4. Configure `eventmesh.properties` +This configuration file includes parameters required for the EventMesh Runtime environment and integration with other plugins. -The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. +Download the configuration file (replace `1.10.0` in the download link with the version you are using): ```shell -sudo vim eventmesh.properties +sudo wget https://raw.githubusercontent.com/apache/eventmesh/1.10.0-prepare/eventmesh-runtime/conf/eventmesh.properties ``` -| Configuration Key | Default Value | Description | -|-|-|-| -| `eventMesh.server.http.port` | 10105 | EventMesh HTTP server port | -| `eventMesh.server.tcp.port` | 10000 | EventMesh TCP server port | -| `eventMesh.server.grpc.port` | 10205 | EventMesh gRPC server port | +Edit `eventmesh.properties`: -### 5. Configure `rocketmq-client.properties` +```shell +sudo vim eventmesh.properties +``` -The `rocketmq-client.properties` file contains the properties of the Apache RocketMQ nameserver. +Specify RocketMQ as Event Store: -```shell -sudo vim rocketmq-client.properties +```properties +# storage plugin +eventMesh.storage.plugin.type=rocketmq ``` -Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/1.3.0/eventmesh-runtime/conf/rocketmq-client.properties) and change the value of `eventMesh.server.rocketmq.namesrvAddr` to the nameserver address of RocketMQ. +Check if the default ports in the configuration file are occupied. If occupied, modify them to unused ports: -| Configuration Key | Default Value | Description | -|-|-|-| -| `eventMesh.server.rocketmq.namesrvAddr` | `127.0.0.1:9876;127.0.0.1:9876` | The address of RocketMQ nameserver | +| Property | Default | Remarks | +| ---------------------------------- | ------- | ------------------- | +| eventMesh.server.tcp.port | 10000 | TCP listening port | +| eventMesh.server.http.port | 10105 | HTTP listening port | +| eventMesh.server.grpc.port | 10205 | gRPC listening port | +| eventMesh.server.admin.http.port | 10106 | HTTP management port | -## 6. Run and Manage EventMesh Container +### 3.2 Event Store Configuration -Run an EventMesh container from the `eventmesh/eventmesh` image with the `docker run` command. The `-p` option of the command binds the container port with the host machine port. The `-v` option of the command mounts the configuration files from files in the host machine. +In the case of RocketMQ, the configuration file includes parameters required to connect to the RocketMQ namesrv. + +Download the configuration file (replace `1.10.0` in the download link with the version you are using): ```shell -sudo docker run -d -p 10000:10000 -p 10105:10105 \ --v `pwd`/data/eventmesh/rocketmq/conf/eventmesh.properties:/data/app/eventmesh/conf/eventmesh.properties \ --v `pwd`/data/eventmesh/rocketmq/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties \ -eventmesh/eventmesh:v1.4.0 +sudo wget https://raw.githubusercontent.com/apache/eventmesh/1.10.0-prepare/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/resources/rocketmq-client.properties ``` -The `docker ps` command lists the details (id, name, status, etc.) of the running containers. The container id is the unique identifier of the container. +Edit `rocketmq-client.properties`: ```shell -$ sudo docker ps -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll +sudo vim rocketmq-client.properties ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) +If the namesrv address you are running is different from the default value in the configuration file, modify it to the actual running namesrv address. -As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. +| Property | Default | Remarks | +| ----------------------------------------- | ------------------------------ | ----------------------------------- | +| eventMesh.server.rocketmq.namesrvAddr | 127.0.0.1:9876;127.0.0.1:9876 | RocketMQ namesrv address | -## 7. Managing EventMesh Containers +>If you are unable to download the configuration files using the provided links, you can find all the configuration files in the `conf` path of the EventMesh binary distribution. -After successfully running an EventMesh container, you can manage the container by entering it, viewing logs, deleting it, and so on. +## 4. Run the EventMesh Runtime Container +Use the following command to start the EventMesh container: -To connect to the EventMesh container: +```shell +sudo docker run -d --name eventmesh -p 10000:10000 -p 10105:10105 -p 10205:10205 -p 10106:10106 -v /data/eventmesh/conf/eventmesh.properties:/data/app/eventmesh/conf/eventmesh.properties -v /data/eventmesh/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties -t apache/eventmesh:latest +``` + +Explanation of `docker run` command parameters: + +- `-p :`: Bind the container port to the host port. If you modified the default ports in EventMesh Runtime configuration or if the host's ports are already occupied, modify them accordingly. +- `-v :`: Mount the configuration files from the host to the container. If the path where you store EventMesh configuration files is not `/data/eventmesh/conf`, modify the host path accordingly. If you haven't customized the configuration files, please remove this parameter. +- `--name eventmesh`: Custom name for the container. This name must be unique. +- `-t apache/eventmesh:latest`: Image used by the container. + +After executing the `docker run` command, the container ID will be returned. Use the following command to view the status of all running containers: ```shell -sudo docker exec -it [container id or name] /bin/bash +sudo docker ps ``` -To read the log of the EventMesh container: +It will print: ```shell -tail -f ../logs/eventmesh.out +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +b7a1546ee96a apache/eventmesh:latest "bash bin/start.sh" 10 seconds ago Up 8 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105-10106->10105-10106/tcp, :::10105-10106->10105-10106/tcp, 0.0.0.0:10205->10205/tcp, :::10205->10205/tcp eventmesh ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) +If the EventMesh Runtime container is not in the list printed by this command, it means the container failed to start. You can use the following command to view the logs at the time of startup (replace `eventmesh` with the container name or ID you specified): -To stop or remove the container: +```shell +sudo docker logs eventmesh +``` + +## 5. View EventMesh Logs + +After successfully starting the EventMesh container, you can follow these steps to view the logs output by EventMesh and check the runtime status. + +Enter the container (replace `eventmesh` with the container name or ID you specified): ```shell -sudo docker stop [container id or name] +sudo docker exec -it eventmesh /bin/bash +``` -sudo docker rm -f [container id or name] +View the logs: + +```shell +cd logs +tail -n 50 -f eventmesh.out ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) +When the log output shows `server state:RUNNING`, it means EventMesh Runtime has started successfully. + +## 6. Build EventMesh Runtime Image (Optional) + +EventMesh is developed based on JDK8. The binary distribution and container image are built based on JDK8 and are also compatible with JDK11. -## 8. Explore more +To run the container in a JDK8 environment, execute the following command in the root directory of the EventMesh source code: -Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. +```shell +sudo docker build -t yourname/eventmesh:yourtag -f docker/Dockerfile_jdk8 . +``` -I hope you enjoy the process and get more out of it! \ No newline at end of file +If you want to use JDK11 as the container's runtime environment, execute: + +```shell +sudo docker build -t yourname/eventmesh:yourtag -f docker/Dockerfile_jdk11 . +``` \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/instruction/05-demo.md b/versioned_docs/version-v1.10.0/instruction/05-demo.md index 0b270e32be..4853d9bc02 100644 --- a/versioned_docs/version-v1.10.0/instruction/05-demo.md +++ b/versioned_docs/version-v1.10.0/instruction/05-demo.md @@ -1,16 +1,16 @@ -# Run eventmesh-sdk-java demo +# Run Java SDK Demo [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.eventmesh/eventmesh-sdk-java/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.apache.eventmesh/eventmesh-sdk-java) -> EventMesh-sdk-java as the client,and comminucate with eventmesh-runtime,to finish the message sub and pub +> eventmesh-sdk-java acts as a client of EventMesh Runtime and communicates with it, to publish and subscribe the messages. > -> EventMesh-sdk-java support both async and broadcast. +> The eventmesh-sdk-java supports ASYNC messages and BROADCAST messages. ASYNC messages indicate that producers only send messages and do not care about receiving reply messages. BROADCAST messages mean that producers send a message once, and all consumers subscribed to the broadcast topic will receive the message. > -> EventMesh-sdk-java support HTTP, TCP and gRPC. +> eventmesh-sdk-java supports HTTP, TCP and gRPC protocols. -The test demos of TCP, HTTP 和 GRPC are in the module **eventmesh-examples**: +The test demos of TCP, HTTP and GRPC are in the module `eventmesh-examples`. -## 1. TCP DEMO +## 1. TCP ### 1.1 ASYNC @@ -42,8 +42,11 @@ Run the main method of org.apache.eventmesh.tcp.demo.pub.eventmeshmessage.AsyncP More information about EventMesh-TCP, please refer to [EventMesh TCP](../sdk-java/03-tcp.md) +## 2 HTTP -## 2 HTTP DEMO +>For HTTP, the eventmesh-sdk-java implements sending and subscribing to asynchronous events. +> +>In the demo, the `content` field of the Java class `EventMeshMessage` represents a special protocol. Therefore, if you are using the eventmesh-sdk-java's http-client, you only need to design the content of the protocol and provide the consumer's application at the same time. ### 2.1 ASYNC @@ -60,9 +63,17 @@ Run the main method of org.apache.eventmesh.http.demo.pub.eventmeshmessage.Async ``` More information about EventMesh-HTTP, please refer to [EventMesh HTTP](../sdk-java/02-http.md) -## 3 GRPC DEMO +## 3 GRPC + +>The eventmesh-sdk-java implements the gRPC protocol. It can asynchronously or synchronously send events to the EventMesh Runtime. +> +>It can subscribe to consume events through Webhook and event streaming, and also supports the CNCF CloudEvents protocol. + +### 3.1 ASYNC Publish & Webhook Subscribe -### 3.1 ASYNC PUBLISH & WEBHOOK SUBSCRIBE +>Producers can asynchronously send events to the EventMesh Runtime without waiting for the events to be stored in the Event Store. +> +>For Webhook consumers, events will be pushed to the consumer's HTTP Endpoint URL, i.e., the consumer's `subscribeUrl`. This method is similar to the previously mentioned Http EventMesh client. - Start publisher to publish message (we have created the topic TEST-TOPIC-GRPC-ASYNC by default, you can also create other topic to test) @@ -76,7 +87,11 @@ Run the main method of org.apache.eventmesh.grpc.pub.eventmeshmessage.AsyncPubli Run the main method of org.apache.eventmesh.grpc.sub.app.SpringBootDemoApplication ``` -### 3.2 SYNC PUBLISH & STREAM SUBSCRIBE +### 3.2 SYNC Publish & Stream Subscribe + +>Producers synchronously send events to the EventMesh Runtime while waiting for the events to be stored in the Event Store. +> +>For event stream consumers, events are pushed in a streaming to the `ReceiveMsgHook` client. This method is similar to the EventMesh client. - Start Request-Reply publisher to publish message (we have created the topic TEST-TOPIC-GRPC-RR by default, you can also create other topic to test) @@ -90,21 +105,23 @@ Run the main method of org.apache.eventmesh.grpc.pub.eventmeshmessage.RequestRep Run the main method of org.apache.eventmesh.grpc.sub.EventmeshAsyncSubscribe ``` -### 3.3 PUBLISH BATCH MESSAGE +### 3.3 Publish BATCH Message + +>Asynchronously batch publish multiple events to the EventMesh Runtime. -- Start publisher to publish batch message (we have created the TEST-TOPIC-GRPC-ASYNC by default, you can also create other topic to test) +- Start publisher to publish batch message (we have created the TEST-TOPIC-GRPC-ASYNC by default, you can also create other topic to test.) ``` Run the main method of org.apache.eventmesh.grpc.pub.eventmeshmessage.BatchPublishInstance ``` -More information about EventMesh-gRPC, please refer to [EventMesh gRPC](../sdk-java/04-grpc.md) +More information about EventMesh-gRPC, please refer to [EventMesh gRPC](../sdk-java/04-grpc.md). -## 4. Run these demos by yourself +## 4. Run Demo with shell scripts -Please refer to [EventMesh Store](./01-store.md) and [EventMesh Runtime](./03-runtime.md) to finish the necessary deployment before try our demo +Please refer to [Event Store](./01-store.md) and [EventMesh Runtime](./03-runtime.md) to finish the necessary deployment before try our demo. -After finishing the deployment of store and runtime, you can run our demos in module `eventmesh-examples`: +After finishing the deployment of Store and Runtime, you can run our demos in module `eventmesh-examples`: gradle: @@ -118,7 +135,7 @@ cd ./dist/bin ![demo_1](/images/install/demo_1.png) ### 4.1 TCP -TCP Sub +#### TCP Sub ```shell bash tcp_eventmeshmessage_sub.sh @@ -131,7 +148,7 @@ tail -f demo_tcp_pub.out ``` ![demo_2](/images/install/demo_2.png) -TCP Pub +#### TCP Pub ```shell bash tcp_pub_eventmeshmessage.sh @@ -147,7 +164,7 @@ tail -f demo_tcp_sub.out ### 4.2 TCP Broadcast -TCP Sub Broadcast +#### TCP Sub Broadcast ```shell sh tcp_sub_eventmeshmessage_broadcast.sh @@ -161,7 +178,7 @@ tail -f demo_tcp_sub_broadcast.out ![demo_4](/images/install/demo_4.png) -TCP Pub Broadcast +#### TCP Pub Broadcast ```shell sh tcp_pub_eventmeshmessage_broadcast.sh @@ -177,7 +194,7 @@ tail -f demo_tcp_pub_broadcast.out ### 4.3 HTTP -HTTP Sub +#### HTTP Sub ```shell sh http_sub.sh @@ -191,7 +208,7 @@ tail -f demo_http_sub.out ![demo_6](/images/install/demo_6.png) -HTTP Pub +#### HTTP Pub ```shell sh http_pub_eventmeshmessage.sh diff --git a/versioned_docs/version-v1.10.0/instruction/06-operator.md b/versioned_docs/version-v1.10.0/instruction/06-operator.md new file mode 100644 index 0000000000..2b98a69af5 --- /dev/null +++ b/versioned_docs/version-v1.10.0/instruction/06-operator.md @@ -0,0 +1,97 @@ +# Integrate EventMesh with K8S + +### 1. Dependencies + +``` +docker +golang (version 1.19) +kubernetes (kubectl) +There is some compatibility between kubernetes an docker, please check the version compatibility between them and download the corresponding version to ensure that they work properly together. +``` + +### 2. Start + +Go to the eventmesh-operator directory. + +```shell +cd eventmesh-operator +``` + +Install CRD into the specified k8s cluster. + +```shell +make install + +# Uninstall CRDs from the K8s cluster +make uninstall +``` + +If you get error `eventmesh-operator/bin/controller-gen: No such file or directory`, Run the following command: + +```shell +# download controller-gen locally if necessary. +make controller-gen +# download kustomize locally if necessary. +make kustomize +``` + +View crds information: + +```shell +# run the following command to view crds information: +kubectl get crds +NAME CREATED AT +connectors.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z +runtimes.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z +``` + +Create and delete CRs: + +Custom resource objects are located at: /config/samples + +When deleting CR, simply replace create with delete. + +```shell +# Create CR for eventmesh-runtime、eventmesh-connector-rocketmq,Creating a clusterIP lets eventmesh-runtime communicate with other components. +make create + +#success: +configmap/runtime-config created +runtime.eventmesh-operator.eventmesh/eventmesh-runtime created +service/runtime-cluster-service created +configmap/connector-rocketmq-config created +connectors.eventmesh-operator.eventmesh/connector-rocketmq created + +# View the created Service. +kubectl get service +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +runtime-cluster-service ClusterIP 10.109.209.72 10000/TCP 17s + +# Delete CR +make delete +``` + +Run eventmesh-operator create pods. + +```shell +# run controller +make run +# log +go fmt ./... +go vet ./... +go run ./main.go +INFO controller-runtime.metrics Metrics server is starting to listen {"addr": ":9020"} +INFO setup starting manager +INFO Starting server {"kind": "health probe", "addr": "[::]:8081"} +INFO Starting server {"path": "/metrics", "kind": "metrics", "addr": "[::]:9020"} +INFO runtime Creating a new eventMeshRuntime StatefulSet. {"StatefulSet.Namespace": "default", "StatefulSet.Name": "eventmesh-runtime-0-a"} +INFO connector Creating a new Connector StatefulSet. {"StatefulSet.Namespace": "default", "StatefulSet.Name": "connector-rocketmq"} +INFO runtime Successful reconciliation! +INFO connector Successful reconciliation! + +# After the pods are successfully started, run the following command to view pods. +kubectl get pods +NAME READY STATUS RESTARTS AGE +connector-rocketmq-0 1/1 Running 0 12m +eventmesh-runtime-0-a-0 1/1 Running 0 12m +``` diff --git a/versioned_docs/version-v1.10.0/instruction/07-faq.md b/versioned_docs/version-v1.10.0/instruction/07-faq.md new file mode 100644 index 0000000000..c5aa893527 --- /dev/null +++ b/versioned_docs/version-v1.10.0/instruction/07-faq.md @@ -0,0 +1,42 @@ +# Frequently Asked Questions + +## Importing into Eclipse + +We recommend using `Intellij IDEA` for development. If you prefer to use `Eclipse`, you can follow the steps below to import the project. + +### Prerequisites + +- 64-bit JDK 1.8+ +- Gradle 7.0+ +- Eclipse with Gradle plugin installed + +### Download + +```shell +git clone https://github.com/apache/eventmesh.git +``` + +### Project Compilation for Eclipse Environment + +Open the command-line terminal and run `./gradlew cleanEclipse eclipse`. + +### Configuration Modifications + +Modify the project name to match the parameters in the `settings.gradle` configuration file, specifically the `rootProject.name` parameter. + +### Modify the `eclipse.init` Configuration File + +Configure Lombok, using version 1.18.8 as an example: + +``` +-javaagent:lombok-1.18.8.jar +-XBootclasspath/a:lombok-1.18.8.jar +``` + +### Eclipse Configuration for Version 202106 + +Add the configuration parameter to `eclipse.init`: `--illegal-access=permit` + +### Import + +Open Eclipse and import the EventMesh project into the IDE. \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/roadmap.md b/versioned_docs/version-v1.10.0/roadmap.md index b3b922294f..6fb92e3345 100644 --- a/versioned_docs/version-v1.10.0/roadmap.md +++ b/versioned_docs/version-v1.10.0/roadmap.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Development Roadmap -The development roadmap of Apache EventMesh is an overview of the planned features and milestones involved in the next several releases. The recent features and bug fixes are documented in the [release notes](https://eventmesh.apache.org/events/release-notes/v1.10.0/). The order of the features listed below doesn't correspond to their priorities. +The development roadmap of Apache EventMesh is an overview of the planned features and milestones involved in the next several releases. The recent features and bug fixes are documented in the [Release Notes](https://eventmesh.apache.org/events/release-notes/v1.10.0/). The order of the features listed below doesn't correspond to their priorities. ## List of Features and Milestones @@ -49,3 +49,48 @@ The development roadmap of Apache EventMesh is an overview of the planned featur | Planned | Event Query Language (EQL) | [GitHub Issue](https://github.com/apache/eventmesh/) | | Planned | WebAssembly Runtime | [GitHub Issue](https://github.com/apache/eventmesh/) | +## Connector Implementation Status + +| Service / Middleware | Source | Sink | +|:------------------------------------------:|:------:|:------:| +| [RocketMQ](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-rocketmq) | ✅ | ✅ | +| [Kafka](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-kafka) | ✅ | ✅ | +| [Pulsar](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pulsar) | ✅ | ✅ | +| [RabbitMQ](./design-document/connect/rabbitmq-connector) | ✅ | ✅ | +| [HTTP](./design-document/connect/http-connector) | ✅ | ⬜ | +| [JDBC](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-jdbc) | ⬜ | ✅ | +| [Spring](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-spring) | ✅ | ✅ | +| [OpenFunction](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-openfunction) | ✅ | ✅ | +| [File](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-file) | ✅ | ✅ | +| Email | ⬜ | ⬜ | +| [Redis](./design-document/connect/redis-connector) | ✅ | ✅ | +| [S3 File](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-s3) | ⬜ | ✅ | +| ClickHouse | ⬜ | ⬜ | +| [MongoDB](./design-document/connect/mongodb-connector) | ✅ | ✅ | +| [Prometheus](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-prometheus) | ✅ | ⬜ | +| [Knative](./design-document/connect/knative-connector) | ✅ | ✅ | +| [Pravega](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-pravega) | ✅ | ✅ | +| More connectors will be added... | N/A | N/A | + +| Platform / Product | Source | Sink | +|:------------------------------------------:|:------:|:------:| +| [Feishu/Lark](./design-document/connect/lark-connector) | ⬜ | ✅ | +| [DingTalk](./design-document/connect/dingtalk-connector) | ⬜ | ✅ | +| [WeCom](./design-document/connect/wecom-connector) | ⬜ | ✅ | +| [WeChat](https://github.com/apache/eventmesh/tree/master/eventmesh-connectors/eventmesh-connector-wechat) | ⬜ | ✅ | +| GitHub | ⬜ | ⬜ | +| ChatGPT | ⬜ | ⬜ | +| [Slack](./design-document/connect/slack-connector) | ⬜ | ✅ | +| More connectors will be added... | N/A | N/A | + +## Event Store Implementation Status + +| Service / Middleware | Ingress | Topic Management | +|:------------------------:|:------:|:------:| +| RocketMQ | ✅ | ✅ | +| Kafka | ✅ | ✅ | +| Standalone | ✅ | ✅ | +| Pulsar | ✅ | ⬜ | +| RabbitMQ | ✅ | ⬜ | +| Redis | ✅ | ⬜ | +| Support for more Event Stores... | N/A | N/A | \ No newline at end of file diff --git a/versioned_docs/version-v1.10.0/sdk-java/01-intro.md b/versioned_docs/version-v1.10.0/sdk-java/01-intro.md index 2c1a74bbef..aefd8108ec 100644 --- a/versioned_docs/version-v1.10.0/sdk-java/01-intro.md +++ b/versioned_docs/version-v1.10.0/sdk-java/01-intro.md @@ -12,9 +12,9 @@ EventMesh SDK for Java is a collection of Java libraries to integrate EventMesh ​ To install EventMesh SDK for Java with Gradle, declare `org.apache.eventmesh:eventmesh-sdk-java` as `implementation` in the dependencies block of the module's `build.gradle` file. -```groovy +```gradle dependencies { - implementation 'org.apache.eventmesh:eventmesh-sdk-java:1.4.0' + implementation 'org.apache.eventmesh:eventmesh-sdk-java:1.10.0' } ``` @@ -30,12 +30,10 @@ To install EventMesh SDK for Java with Maven, declare `org.apache.eventmesh:even org.apache.eventmesh eventmesh-sdk-java - 1.4.0 + 1.10.0 ``` - - diff --git a/versioned_docs/version-v1.10.0/sdk-java/02-http.md b/versioned_docs/version-v1.10.0/sdk-java/02-http.md index 5e5ae8b4db..01866d7916 100644 --- a/versioned_docs/version-v1.10.0/sdk-java/02-http.md +++ b/versioned_docs/version-v1.10.0/sdk-java/02-http.md @@ -1,6 +1,6 @@ # HTTP Protocol -EventMesh SDK for Java implements the HTTP producer and consumer of asynchronous messages. Both the producer and consumer require an instance of `EventMeshHttpClientConfig` class that specifies the configuration of EventMesh HTTP client. The `liteEventMeshAddr`, `userName`, and `password` fields should match the `eventmesh.properties` file of EventMesh runtime. +EventMesh SDK for Java implements the HTTP producer and consumer of asynchronous messages. Both the producer and consumer require an instance of `EventMeshHttpClientConfig` class that specifies the configuration of EventMesh HTTP client. The `liteEventMeshAddr`, `userName`, and `password` fields should match the `eventmesh.properties` file of EventMesh Runtime. ```java import org.apache.eventmesh.client.http.conf.EventMeshHttpClientConfig; @@ -53,7 +53,7 @@ public class HTTP { } ``` -The EventMesh runtime will send a POST request that contains the message in the [CloudEvents format](https://github.com/cloudevents/spec) to the callback URL. The [`SubController.java` file](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java) implements a Spring Boot controller that receives and parses the callback messages. +The EventMesh Runtime will send a POST request that contains the message in the [CloudEvents format](https://github.com/cloudevents/spec) to the callback URL. The [`SubController.java` file](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java) implements a Spring Boot controller that receives and parses the callback messages. ## HTTP Producer @@ -95,7 +95,7 @@ public class HTTP { ## Using Curl Command -You can also publish/subscribe event without eventmesh SDK. +You can also publish/subscribe event without EventMesh SDK. ### Publish @@ -103,7 +103,7 @@ You can also publish/subscribe event without eventmesh SDK. curl -H "Content-Type:application/json" -X POST -d '{"name": "admin", "pass":"12345678"}' http://127.0.0.1:10105/eventmesh/publish/TEST-TOPIC-HTTP-ASYNC ``` -After you start the eventmesh runtime server, you can use the curl command publish the event to the specific topic with the HTTP POST method and the package body must be in JSON format. The publish url like (http://127.0.0.1:10105/eventmesh/publish/TEST-TOPIC-HTTP-ASYNC), and you will get the publish successful result. +After you start the EventMesh Runtime server, you can use the curl command publish the event to the specific topic with the HTTP POST method and the package body must be in JSON format. The publish url like (http://127.0.0.1:10105/eventmesh/publish/TEST-TOPIC-HTTP-ASYNC), and you will get the publish successful result. ### Subscribe @@ -111,5 +111,6 @@ After you start the eventmesh runtime server, you can use the curl command publi curl -H "Content-Type:application/json" -X POST -d '{"url": "http://127.0.0.1:8088/sub/test", "consumerGroup":"TEST-GROUP", "topic":[{"mode":"CLUSTERING","topic":"TEST-TOPIC-HTTP-ASYNC","type":"ASYNC"}]}' http://127.0.0.1:10105/eventmesh/subscribe/local ``` -After you start the eventmesh runtime server, you can use the curl command to subscribe the specific topic list with the HTTP POST method, and the package body must be in JSON format. The subscribe url like (http://127.0.0.1:10105/eventmesh/subscribe/local), and you will get the subscribe successful result. You should pay attention to the `url` field in the package body, which means you need to set up an HTTP service at the specified URL, you can see the example in the `eventmesh-examples` module. +After you start the EventMesh Runtime server, you can use the curl command to subscribe the specific topic list with the HTTP POST method, and the package body must be in JSON format. The subscribe url like (http://127.0.0.1:10105/eventmesh/subscribe/local), and you will get the subscribe successful result. You should pay attention to the `url` field in the package body, which means you need to set up an HTTP service at the specified URL. +You can see the example in the `eventmesh-examples` module. diff --git a/versioned_docs/version-v1.10.0/sdk-java/03-tcp.md b/versioned_docs/version-v1.10.0/sdk-java/03-tcp.md index 87a682dc15..64a3efcf7f 100644 --- a/versioned_docs/version-v1.10.0/sdk-java/03-tcp.md +++ b/versioned_docs/version-v1.10.0/sdk-java/03-tcp.md @@ -1,6 +1,6 @@ # TCP Protocol -EventMesh SDK for Java implements the TCP producer and consumer of synchronous, asynchronous, and broadcast messages. Both the producer and consumer require an instance of `EventMeshTCPClientConfig` class that specifies the configuration of EventMesh TCP client. The `host` and `port` fields should match the `eventmesh.properties` file of EventMesh runtime. +EventMesh SDK for Java implements the TCP producer and consumer of synchronous, asynchronous, and broadcast messages. Both the producer and consumer require an instance of `EventMeshTCPClientConfig` class that specifies the configuration of EventMesh TCP client. The `host` and `port` fields should match the `eventmesh.properties` file of EventMesh Runtime. ```java import org.apache.eventmesh.client.tcp.conf.EventMeshTCPClientConfig; diff --git a/versioned_docs/version-v1.10.0/sdk-java/04-grpc.md b/versioned_docs/version-v1.10.0/sdk-java/04-grpc.md index 79d0d4ae57..477f243e13 100644 --- a/versioned_docs/version-v1.10.0/sdk-java/04-grpc.md +++ b/versioned_docs/version-v1.10.0/sdk-java/04-grpc.md @@ -1,6 +1,6 @@ # gRPC Protocol -EventMesh SDK for Java implements the gRPC producer and consumer of synchronous, asynchronous, and broadcast messages. Both the producer and consumer require an instance of `EventMeshGrpcClientConfig` class that specifies the configuration of EventMesh gRPC client. The `liteEventMeshAddr`, `userName`, and `password` fields should match the `eventmesh.properties` file of EventMesh runtime. +EventMesh SDK for Java implements the gRPC producer and consumer of synchronous, asynchronous, and broadcast messages. Both the producer and consumer require an instance of `EventMeshGrpcClientConfig` class that specifies the configuration of EventMesh gRPC client. The `liteEventMeshAddr`, `userName`, and `password` fields should match the `eventmesh.properties` file of EventMesh Runtime. ```java import org.apache.eventmesh.client.grpc.config.EventMeshGrpcClientConfig; @@ -24,7 +24,7 @@ public class CloudEventsAsyncSubscribe implements ReceiveMsgHook { ### Stream Consumer -The EventMesh runtime sends the message from producers to the stream consumer as a series of event streams. The consumer should implement the `ReceiveMsgHook` class, which is defined in [`ReceiveMsgHook.java`](https://github.com/apache/eventmesh/blob/master/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/ReceiveMsgHook.java). +The EventMesh Runtime sends the message from producers to the stream consumer as a series of event streams. The consumer should implement the `ReceiveMsgHook` class, which is defined in [`ReceiveMsgHook.java`](https://github.com/apache/eventmesh/blob/master/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/consumer/ReceiveMsgHook.java). ```java public interface ReceiveMsgHook { @@ -77,7 +77,7 @@ public class CloudEventsAsyncSubscribe implements ReceiveMsgHook { ### Webhook Consumer -The `subscribe` method of the `EventMeshGrpcConsumer` class accepts a list of `SubscriptionItem` that defines the topics to be subscribed and an optional callback URL. If the callback URL is provided, the EventMesh runtime will send a POST request that contains the message in the [CloudEvents format](https://github.com/cloudevents/spec) to the callback URL. The [`SubController.java` file](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/sub/app/controller/SubController.java) implements a Spring Boot controller that receives and parses the callback messages. +The `subscribe` method of the `EventMeshGrpcConsumer` class accepts a list of `SubscriptionItem` that defines the topics to be subscribed and an optional callback URL. If the callback URL is provided, the EventMesh Runtime will send a POST request that contains the message in the [CloudEvents format](https://github.com/cloudevents/spec) to the callback URL. The [`SubController.java` file](https://github.com/apache/eventmesh/blob/master/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/sub/app/controller/SubController.java) implements a Spring Boot controller that receives and parses the callback messages. ```java import org.apache.eventmesh.client.grpc.consumer.EventMeshGrpcConsumer; diff --git a/versioned_docs/version-v1.10.0/upgrade-guide/01-upgrade-guide.md b/versioned_docs/version-v1.10.0/upgrade-guide/01-upgrade-guide.md index e300cdf57e..187a80c2d0 100644 --- a/versioned_docs/version-v1.10.0/upgrade-guide/01-upgrade-guide.md +++ b/versioned_docs/version-v1.10.0/upgrade-guide/01-upgrade-guide.md @@ -8,8 +8,8 @@ ## 2. Service upgrade installation -The upgrade and startup of the EventMesh runtime module can be done in accordance with the [deployment guide](https://eventmesh.apache.org/docs/instruction/runtime). +The upgrade and startup of the EventMesh Runtime module can be done in accordance with the [Deployment Guide](https://eventmesh.apache.org/docs/instruction/runtime). -For differences and changes between versions, please refer to the [release notes](https://eventmesh.apache.org/events/release-notes) of different versions. Compatibility between versions can be achieved. +For differences and changes between versions, please refer to the [Release Notes](https://eventmesh.apache.org/events/release-notes) of different versions. Compatibility between versions can be achieved. -If you need to use the latest features, follow the release note to upgrade to the corresponding version That’s it, and different plug-in module components can be packaged and configured separately. You can refer to the corresponding [feature design documents and guidelines](https://eventmesh.apache.org/docs/design-document/) +If you need to use the latest features, follow the release note to upgrade to the corresponding version That’s it, and different plug-in module components can be packaged and configured separately. You can refer to the corresponding [Feature design documents and Guidelines](https://eventmesh.apache.org/docs/design-document/). diff --git a/versioned_docs/version-v1.2.0/instruction/03-runtime.md b/versioned_docs/version-v1.2.0/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.2.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.2.0/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.2.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.2.0/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..38661bcf85 100644 --- a/versioned_docs/version-v1.2.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.2.0/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_docs/version-v1.3.0/instruction/03-runtime.md b/versioned_docs/version-v1.3.0/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.3.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.3.0/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.3.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.3.0/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..38661bcf85 100644 --- a/versioned_docs/version-v1.3.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.3.0/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_docs/version-v1.4.0/instruction/03-runtime.md b/versioned_docs/version-v1.4.0/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.4.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.4.0/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.4.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.4.0/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..38661bcf85 100644 --- a/versioned_docs/version-v1.4.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.4.0/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_docs/version-v1.5.0/instruction/03-runtime.md b/versioned_docs/version-v1.5.0/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.5.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.5.0/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.5.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.5.0/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..38661bcf85 100644 --- a/versioned_docs/version-v1.5.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.5.0/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_docs/version-v1.6.0/instruction/03-runtime.md b/versioned_docs/version-v1.6.0/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.6.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.6.0/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.6.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.6.0/instruction/04-runtime-with-docker.md index 3e85e99df7..8746ff6ef2 100644 --- a/versioned_docs/version-v1.6.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.6.0/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/r/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_docs/version-v1.7.0/instruction/03-runtime.md b/versioned_docs/version-v1.7.0/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.7.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.7.0/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.7.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.7.0/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..38661bcf85 100644 --- a/versioned_docs/version-v1.7.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.7.0/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_docs/version-v1.8.0/instruction/03-runtime.md b/versioned_docs/version-v1.8.0/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.8.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.8.0/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.8.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.8.0/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..38661bcf85 100644 --- a/versioned_docs/version-v1.8.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.8.0/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_docs/version-v1.9.0/instruction/03-runtime.md b/versioned_docs/version-v1.9.0/instruction/03-runtime.md index 0b0e455731..dce9e6f54a 100644 --- a/versioned_docs/version-v1.9.0/instruction/03-runtime.md +++ b/versioned_docs/version-v1.9.0/instruction/03-runtime.md @@ -105,8 +105,6 @@ Build the source code with Gradle. gradle clean dist ``` -![runtime_2](/images/install/runtime_2.png) - Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. ```console @@ -142,14 +140,11 @@ Execute the `start.sh` script to start the EventMesh Runtime server. bash bin/start.sh ``` -![runtime_4](/images/install/runtime_4.png) - View the output log: ```console tail -f logs/eventmesh.out ``` -![runtime_3](/images/install/runtime_3.png) ## 2 Remote deployment @@ -188,22 +183,15 @@ bash bin/start.sh If you see "EventMeshTCPServer[port=10000] started...." , then the setup was successful. -![runtime_6](/images/install/runtime_6.png) - - View the output log: ```console cd /root/apache-eventmesh-1.9.0/logs tail -f eventmesh.out ``` -![runtime_7](/images/install/runtime_7.png) You can stop the run with the following command: ```console bash bin/stop.sh ``` - -![runtime_8](/images/install/runtime_8.png) -![runtime_9](/images/install/runtime_9.png) diff --git a/versioned_docs/version-v1.9.0/instruction/04-runtime-with-docker.md b/versioned_docs/version-v1.9.0/instruction/04-runtime-with-docker.md index 7d2c1d1a5a..38661bcf85 100644 --- a/versioned_docs/version-v1.9.0/instruction/04-runtime-with-docker.md +++ b/versioned_docs/version-v1.9.0/instruction/04-runtime-with-docker.md @@ -28,8 +28,6 @@ REPOSITORY TAG IMAGE ID CREATED SIZE eventmesh/eventmesh v1.4.0 6e2964599c78 16 months ago 937MB ``` -![runtime_docker_1](/images/install/runtime_docker_1.png) - ## 3. Edit Configuration Edit the `eventmesh.properties` to change the configuration (e.g. TCP port, client blacklist) of EventMesh Runtime. To integrate RocketMQ as a connector, these two configuration files should be created: `eventmesh.properties` and `rocketmq-client.properties`. @@ -41,8 +39,6 @@ sudo touch eventmesh.properties sudo touch rocketmq-client.properties ``` -![runtime_docker_2](/images/install/runtime_docker_2.png) - ### 4. Configure `eventmesh.properties` The `eventmesh.properties` file contains the properties of EventMesh runtime environment and integrated plugins. Please refer to the [default configuration file](https://github.com/apache/eventmesh/blob/master/eventmesh-runtime/conf/eventmesh.properties) for the available configuration keys. @@ -90,8 +86,6 @@ CONTAINER ID IMAGE COMMAND CREATED 5bb6b6092672 eventmesh/eventmesh:v1.4.0 "/bin/sh -c 'sh star…" 5 seconds ago Up 3 seconds 0.0.0.0:10000->10000/tcp, :::10000->10000/tcp, 0.0.0.0:10105->10105/tcp, :::10105->10105/tcp eager_driscoll ``` -![runtime_docker_3](/images/install/runtime_docker_3.png) - As you can see from this message, the ```container id``` is ``5bb6b6092672``, and the ```name`` is ``eager_driscoll``, and they can both be used to uniquely identify this container. **Note**: On your computer, their values may be different from the ones here. ## 7. Managing EventMesh Containers @@ -111,8 +105,6 @@ To read the log of the EventMesh container: tail -f ../logs/eventmesh.out ``` -![runtime_docker_4](/images/install/runtime_docker_4.png) - To stop or remove the container: ```shell @@ -121,8 +113,6 @@ sudo docker stop [container id or name] sudo docker rm -f [container id or name] ``` -![runtime_docker_5](/images/install/runtime_docker_5.png) - ## 8. Explore more Now that EventMesh is running through a container, you can refer to the [``eventmesh-examples`` module](https://github.com/apache/eventmesh/tree/master/eventmesh-examples) to write and test your own code. diff --git a/versioned_sidebars/version-v1.10.0-sidebars.json b/versioned_sidebars/version-v1.10.0-sidebars.json index c4f2c9c665..fde499425f 100644 --- a/versioned_sidebars/version-v1.10.0-sidebars.json +++ b/versioned_sidebars/version-v1.10.0-sidebars.json @@ -44,6 +44,18 @@ } ] }, + { + "type": "category", + "label": "Connect", + "collapsible": true, + "collapsed": false, + "items": [ + { + "type": "autogenerated", + "dirName": "design-document/03-connect" + } + ] + }, "design-document/schema-registry", "design-document/spi", "design-document/stream"