diff --git a/docs/developer/build-your-own-connector.md b/docs/developer/build-your-own-connector.md deleted file mode 100644 index 536b5817c46..00000000000 --- a/docs/developer/build-your-own-connector.md +++ /dev/null @@ -1,110 +0,0 @@ -# Build your own connector - -EDC is a set of modules that, wedged together can build up different components to be used to create your dataspace or -to join to an existent one. - -This guide will explain how to set up a **connector**, that would be able to communicate with other connectors to -negotiate contracts and transfer data. - -A connector is logically divided in 3 parts: - -- control-plane -- data-plane -- data-plane-selector - -The connector can run as a single deployable composed by the 3 parts or as separated units, the latter will permit -to scale data-planes independently of control-planes. - -## Prerequisites - -Java 17+ -Gradle 8+ - -## Build and run a monolithic connector - -The easiest way to build up a connector is to build all their parts into a single deployment unit. -To do this, create a new gradle project with a `build.gradle.kts` file in it: - -```kotlin -plugins { - `java-library` - id("application") - id("com.github.johnrengelman.shadow") version "8.1.1" -} - -repositories { - mavenCentral() -} - -// pick-up the latest version from https://github.com/eclipse-edc/Connector/releases -val edcVersion = "" - -dependencies { - // the core control-plane module set - implementation("org.eclipse.edc:control-plane-core:${edcVersion}") - - // the dsp protocol module - implementation("org.eclipse.edc:dsp:${edcVersion}") - - // a test implementation of the `IdentityService` - implementation("org.eclipse.edc:iam-mock:${edcVersion}") - - // management api, will permit to manage the connector through a REST interface - implementation("org.eclipse.edc:management-api:${edcVersion}") - - // the core data-plane-selector module set - implementation("org.eclipse.edc:data-plane-selector-core:${edcVersion}") - - // the core data-plane module set - implementation("org.eclipse.edc:data-plane-core:${edcVersion}") -} - -// configure the main class -application { - mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") -} - -// build the application as a single jar that will be available in `build/libs/connector.jar` -tasks.withType { - mergeServiceFiles() - archiveFileName.set("connector.jar") -} - -``` - -Build: - -``` -gradle build -``` - -Run: - -``` -java -jar build/libs/connector.jar -``` - -### Setting database - -The connector you just built stores all the data in memory by default. This is obviously not enough to use the connector -in an environment that's not your local machine. -Currently, there are two different database extensions for the control-plane: - -- `control-plane-sql`: Sql database ([postgresql](https://www.postgresql.org/) is the only dialect currently supported) -- `control-plane-cosmos`: [Microsoft CosmosDB](https://azure.microsoft.com/products/cosmos-db) database - -### Setting data-plane - -To make the *control-plane* interact with the *data-plane*, it will need at least one of these extensions: - -- `data-plane-transfer-client`: provides a client to delegate data transfer to the *data-plane*. -- `data-plane-transfer-sync`: provides services to use the *data-plane* as a proxy for querying data from the provider - data source. - -The *data-plane* will need extensions to being able to read/write data from/to different protocols/services, e.g.: - -- `data-plane-api`: will make the *data-plane* expose APIs that are needed to actually transfer data -- `data-plane-http`: support HTTP protocol -- `data-plane-azure-storage`: support [Azure Blob Storage](https://azure.microsoft.com/products/storage/blobs/) service -- `data-plane-aws-s3`: support [AWS S3](https://aws.amazon.com/s3/) service -- other custom provided *data-plane* extensions