Adding built-in Connectors
Built-in connectors offer better performance when compared to standalone ones, which is why in some cases it's desirable to have a custom build of Conduit that includes additional built-in connectors.
The simplest way to achieve so is to write a small application that embeds Conduit (i.e. uses Conduit as a library) and adds one or more connectors to its default configuration.
In the example below we will add the HTTP connector to Conduit as a built-in connector.
First, we initialize a Go module with go mod init github.com/conduitio-labs/custom-conduit
.
Then , we need to add Conduit and the HTTP connector as dependencies:
go get github.com/conduitio/conduit
go get github.com/conduitio-labs/conduit-connector-http
go mod tidy
Once that is done, we need to write a main
function that:
- Adds the HTTP connector the default Conduit configuration
- Runs Conduit with the custom configuration.
That's done in the code below:
package main
import (
http "github.com/conduitio-labs/conduit-connector-http"
"github.com/conduitio/conduit/pkg/conduit"
)
func main() {
// Get the default configuration, including all built-in connectors
cfg := conduit.DefaultConfig()
// Add the HTTP connector to list of built-in connectors
cfg.ConnectorPlugins["http"] = http.Connector
conduit.Serve(cfg)
}
This custom version of Conduit can be built with go build -o custom-conduit main.go
. If
you run the built binary, you can check that the HTTP connector has been
included in the build by listing all the connector plugins:
curl 'http://localhost:8080/v1/connectors/plugins'
[
{
"name": "builtin:http@(devel)",
"summary": "HTTP source and destination connectors for Conduit.",
"description": "Conduit HTTP source and destination connectors, they connect to an HTTP URL and send HTTP requests.",
"version": "(devel)",
"author": "",
"destinationParams": {},
"sourceParams": {}
}
// other plugins
]