An HTTP server which acts as a gateway for publishing messages via a js-pubsub adapter.
This service wraps the js-pubsub-manager library which bundles support for the following adapters:
- Local
- /dev/null
- Redis
- Google Cloud
It exposes a /messages/(channel) end-point where messages can be POSTed to.
eg:
POST /messages/test HTTP/1.1 Content-Type: application/json { "messages": [ "Hello World", { "another": "message" } ] } This is an async end-point which queues messages for background publishing.
The js-pubsub-http adapter is a client-side implementation for publishing messages via this service.
The service is available as a docker image OR an npm package.
npm install @superbalist/js-pubsub-rest-proxyWhen you start the js-pubsub-rest-proxy image, you can adjust the configuration of the instance by passing one or more environment variables on the docker run command line.
| Env Var | Default | Description |
|---|---|---|
| PORT | 3000 | The port the web server will listen on |
| LOG_LEVEL | info | The log level (silly, debug, verbose, info, warn, error) |
| SENTRY_DSN | null | |
| MAX_POST_SIZE | 10mb | The max post size for request payloads |
| PUBSUB_CONNECTION | redis | The pub/sub connection to use (/dev/null, local, redis, gcloud) |
| REDIS_HOST | localhost | |
| REDIS_PORT | 6379 | |
| GOOGLE_CLOUD_PROJECT_ID | null | |
| GOOGLE_APPLICATION_CREDENTIALS | null | The full path to the file containing the Google Cloud credentials |
| GOOGLE_CLOUD_CLIENT_IDENTIFIER | null | The client identifier used when talking to Google Cloud |
| VALIDATION_ERROR_SCHEMA_URL | false | The url for invalid event schema below. Enables validation |
| VALIDATION_ERROR_CHANNEL | validation_error | The channel to publish validation errors to |
| PUBLISH_INVALID | true | Publish invalid events (true, false) |
| RABBITMQ_FALLBACK | false | Whether the fallback should be used or now (true, false) |
| RABBITMQ_URL | pubsub-rest-proxy-rabbitmq | Url with rabbitmq fallback |
| RABBITMQ_USER | guest | Rabbitmq user |
| RABBITMQ_PASSWORD | guest | Should be a base64 encoded string (guest == Z3Vlc3Q=) |
- Start a container using the Redis Pub/Sub adapter
$ docker run \ -d \ --rm \ --name js-pubsub-rest-proxy \ -e PUBSUB_CONNECTION='redis' \ -e REDIS_HOST='127.0.0.1' \ -e REDIS_PORT='6379' \ superbalist/js-pubsub-rest-proxy- Start a container using the Google Cloud Pub/Sub adapter
$ docker run \ -d \ --rm \ --name js-pubsub-rest-proxy \ -e PUBSUB_CONNECTION='gcloud' \ -e GOOGLE_CLOUD_PROJECT_ID='your-project-id-here' \ -e GOOGLE_APPLICATION_CREDENTIALS='/etc/gcloud_credentials.json' \ superbalist/js-pubsub-rest-proxy"properties": { "schema": { "type": "string", "format": "uri" }, "meta": { "type": "object" }, "event": { "type": "object" }, "errors": { "type": "array" } }