plumber

A swiss army knife CLI tool for interacting with Kafka, RabbitMQ and other messaging systems.

MIT License

Stars
2K

Bot releases are hidden (Show)

plumber - v0.20.0: Batch account access!

Published by blinktag over 3 years ago

Now you can manage common Batch.sh account tasks directly from Plumber!

Command Description
plumber batch login Login and save credentials to ~/.batchsh/config.json
plumber batch logout Logout and clear saved credentials
plumber batch list collection List collections
plumber batch create collection --name "My events" --schema-id "0e31f330-aca0-468c-a186-a26e889a19e9" Create collection
plumber batch search --collection-id="..." --query="*" Search a collection
plumber batch list schema List schemas
plumber batch list replay List replays
plumber batch list destination List destinations
plumber batch create destination kafka Create kafka destination
plumber batch create destination aws-sqs Create SQS destination
plumber batch create destination rabbit Create RabbitMQ destination
plumber batch create destination http Create HTTP destination
plumber batch create replay Create and start a new replay
plumber - Redis relay

Published by dselans over 3 years ago

This release adds support for relaying Redis pubsub channels to Batch.

To run plumber relay with redis in Docker:

docker run -d --name plumber-redis -p 8080:8080 \
    -e PLUMBER_RELAY_REDIS_ADDRESS=localhost:6379 \
    -e PLUMBER_RELAY_REDIS_CHANNELS=channel1,channel2 \
    -e PLUMBER_RELAY_TYPE=redis \
    -e PLUMBER_RELAY_TOKEN=$YOUR-BATCHSH-TOKEN-HERE \
    batchcorp/plumber

Dockerhub: docker pull batchcorp/plumber:a934947

plumber - Relay mode fixes and cli flag improvements

Published by blinktag over 3 years ago

Breaking changes:

  • remove --output-type for reading; remove --input-type for writing. Both are unnecessary and the intent can be gathered from other flags.

Features:

  • Kafka: Ability to specify an offset to begin reading from
  • GCP: Environment variable PUBSUB_EMULATOR_HOST can now be specified to connect to a pubsub emulator instead of GCP
  • Retries for GRPC calls in relay mode

Bug fixes:

  • --queue-declare now actually declares the queue for rabbit
  • Increasing max record size for relay payloads
plumber - Batching for all relays, stats, improved kafka

Published by dselans over 3 years ago

This is a fairly large (and awesome) release.

In this release:

  • New --stats flag (and PLUMBER_STATS env var) which will cause plumber to periodically dump consume/produce speed stats.
  • Lots of kafka improvements to improve read and relay throughput
    • Several new env vars that can be tweaked to further improve throughput and/or reliability
  • Batching support for relay
  • Pretty config printing - all relay modes will now print out the config they're using on console
    • plumber now has a lot of options - some messaging platforms (such as kafka) have 20+ flags/options - it is nice to be able to see what options are actually being used at runtime.

Enjoy!

plumber - Fixing quiet flag

Published by blinktag over 3 years ago

plumber - Support for relaying GCP PubSub messages to Batch collections

Published by blinktag over 3 years ago

plumber - Support for Azure relay, improved Kafka read and relay

Published by dselans over 3 years ago

  1. Support for relaying Azure Service Bus to Batch.sh
  2. Improved Kafka read and relay speeds; works with Confluent cloud!
    1. Kafka read and relay is highly configurable for improved throughput
  3. Improved docs (including env var docs!)

Docker: https://hub.docker.com/r/batchcorp/plumber/

plumber - Updating GRPC token name

Published by blinktag over 3 years ago

plumber - Support for NATS and Redis PubSub

Published by blinktag over 3 years ago

plumber - Support for Azure Service Bus and AWS SNS

Published by blinktag almost 4 years ago

plumber - Kafka relay support

Published by blinktag almost 4 years ago

plumber - Kafka authentication support

Published by blinktag almost 4 years ago

plumber - Support for ActiveMQ using stomp protocol

Published by blinktag almost 4 years ago

plumber - RabbitMQ app ID and consumer tag support

Published by blinktag almost 4 years ago

  • Added --app-id flag for RabbitMQ write mode
  • Added --consumer-tag flag for RabbitMQ read mode
plumber - Adding support for Avro

Published by blinktag about 4 years ago

  • Added Avro support for all backends
  • Avro schema can be used by setting the --avro-schema ./yourschema.avsc
plumber - Adding --queue-declare flag for RabbitMQ

Published by blinktag about 4 years ago

plumber - RabbitMQ relay + reconnect support

Published by blinktag about 4 years ago

  • Relay mode now supports RabbitMQ!
  • RabbitMQ now gracefully handles network disconnects and will reattempt connections every 60s
  • Introduced new library batchcorp/rabbit to plumber
  • Bug fixes for SQS
  • README.md cleanup
  • Added --remote-account-id flag for SQS
  • Added support for specifying multiple protobuf dirs
plumber - Relay support

Published by dselans about 4 years ago

Big release - relay support in plumber!

It is now possible to run plumber in "relay" mode. In this mode, plumber will attach to a target messaging system and relay all of the messages/events it sees to Batch via gRPC.

You can run plumber in either foreground mode:

$ plumber relay aws-sqs --queue-name PlumberTestQueue --token 48b30466-e3cb-4a58-9905-123456781234 --auto-delete

Or you can run it via Docker:

docker run --name plumber -p 8080:8080 \
    -e PLUMBER_RELAY_TYPE=aws-sqs \
    -e PLUMBER_RELAY_TOKEN=48b30466-e3cb-4a58-9905-123456781234 \
    -e PLUMBER_RELAY_SQS_QUEUE_NAME=PlumberTestQueue \
    -e PLUMBER_RELAY_SQS_AUTO_DELETE=true \
    -d batchcorp/plumber:latest
plumber - Support for AWS SQS

Published by dselans about 4 years ago

Support for both reading and writing to/from AWS SQS:

# Writing plaintext
$ plumber write message aws-sqs --queue-name PlumberTestQueue --input-data "hello world"

# Writing protobuf
$ plumber write message aws-sqs --queue-name PlumberTestQueue --input-file ./test-assets/messages/sample-outbound.json --input-type jsonpb --output-type protobuf --protobuf-dir ./test-assets/protos/ --protobuf-root-message Outbound

# Reading plaintext
$ plumber read message aws-sqs --queue-name PlumberTestQueue --auto-delete
INFO[0000] Listening for message(s) ...                  pkg=awssqs/read.go
hello world

# Reading protobuf
$ plumber read message aws-sqs --queue-name PlumberTestQueue --protobuf-dir ./test-assets/protos --protobuf-root-message Outbound --output-type protobuf
INFO[0000] Listening for message(s) ...                  pkg=awssqs/read.go
{
  "replayId": "30ddb850-1aca-4ee5-870c-1bb7b339ee5d",
  "blob": "eyJoZWxsbyI6ImRhbiJ9Cg=="
}

For full info: plumber read message aws-sqs --help and plumber write message aws-sqs --help