Benthos alternatives and similar packages
Based on the "Messaging" category.
Alternatively, view Benthos alternatives based on common mentions on social networks and blogs.
sarama9.7 9.2 Benthos VS saramaSarama is a Go library for Apache Kafka.
gorush9.4 6.9 Benthos VS gorushA push notification server written in Go (Golang).
Centrifugo9.4 8.0 Benthos VS CentrifugoScalable real-time messaging server in a language-agnostic way. Set up once and forever.
machinery9.4 0.0 Benthos VS machineryMachinery is an asynchronous task queue/job queue based on distributed message passing.
Watermill9.2 8.8 Benthos VS WatermillBuilding event-driven applications the easy way in Go.
Asynq9.2 6.1 Benthos VS AsynqSimple, reliable, and efficient distributed task queue in Go
NATS Go Client9.1 6.8 Benthos VS NATS Go ClientGolang client for NATS, the cloud native messaging system.
Confluent Kafka Golang ClientConfluent's Apache Kafka Golang client
NATS9.1 6.8 Benthos VS NATSGolang client for NATS, the cloud native messaging system.
gopush-cluster8.7 0.0 Benthos VS gopush-clusterGolang push server cluster
Mercure8.7 8.4 Benthos VS MercureAn open, easy, fast, reliable and battery-efficient solution for real-time communications
go-nsq8.6 2.1 Benthos VS go-nsqThe official Go package for NSQ
APNs28.6 4.2 Benthos VS APNs2⚡ HTTP/2 Apple Push Notification Service (APNs) push provider for Go — Send push notifications to iOS, tvOS, Safari and OSX apps, using the APNs HTTP/2 protocol.
Uniqush-Push8.1 0.0 Benthos VS Uniqush-PushUniqush is a free and open source software system which provides a unified push service for server side notification to apps on mobile devices.
EventBus7.9 0.0 Benthos VS EventBus[Go] Lightweight eventbus with async compatibility for Go
zmq47.6 2.5 Benthos VS zmq4A Go interface to ZeroMQ version 4
dbus7.5 3.5 Benthos VS dbusNative Go bindings for D-Bus
Chanify7.4 2.5 Benthos VS ChanifyChanify is a safe and simple notification tools. This repository is command line tools for Chanify.
Gollum7.4 0.0 Benthos VS GollumAn n:m message multiplexer written in Go
amqp7.2 7.3 Benthos VS amqpAn AMQP 0-9-1 Go client maintained by the RabbitMQ team. Originally by @streadway: `streadway/amqp`
mangos6.9 5.1 Benthos VS mangosmangos is a pure Golang implementation of nanomsg's "Scalablilty Protocols"
PingMe6.7 5.0 Benthos VS PingMePingMe is a CLI which provides the ability to send messages or alerts to multiple messaging platforms & email.
emitter6.3 0.0 Benthos VS emitterEmits events in Go way, with wildcard, predicates, cancellation possibilities and many other good wins
pubsub6.3 0.0 Benthos VS pubsubA simple pubsub package for go.
oplog6.0 0.0 Benthos VS oplogA generic oplog/replication system for microservices
Quamina5.9 7.8 Benthos VS QuaminaHome of Quamina, a fast pattern-matching library in Go
messagebus5.7 0.0 Benthos VS messagebusGo simple async message bus
Bus5.6 0.0 Benthos VS Bus🔊Minimalist message bus implementation for internal communication with zero-allocation magic on Emit
rabtap5.5 5.3 Benthos VS rabtapRabbitMQ wire tap and swiss army knife
guble5.1 0.0 Benthos VS gublewebsocket based messaging server written in golang
redisqueue4.8 0.0 Benthos VS redisqueueredisqueue provides a producer and consumer of a queue that uses Redis streams
rabbus4.6 0.0 Benthos VS rabbusA tiny wrapper over amqp exchanges and queues 🚌 ✨
grabbit4.4 0.0 Benthos VS grabbitA lightweight transactional message bus on top of RabbitMQ
go-mq4.3 0.0 Benthos VS go-mqDeclare AMQP entities like queues, producers, and consumers in a declarative way. Can be used to work with RabbitMQ.
drone-line4.2 0.0 Benthos VS drone-lineSending line notifications using a binary, docker or Drone CI.
nsq-event-bus4.2 0.0 Benthos VS nsq-event-busA tiny wrapper around NSQ topic and channel :rocket:
go-events4.1 0.0 Benthos VS go-events:mega: Pure nodejs EventEmmiter for the Go Programming Language.
RapidMQ3.8 0.0 Benthos VS RapidMQRapidMQ is a pure, extremely productive, lightweight and reliable library for managing of the local messages queue
event3.5 0.0 Benthos VS eventThe implementation of the pattern observer
go-notify3.5 0.0 Benthos VS go-notifyPackage notify provides an implementation of the Gnome DBus Notifications Specification.
Ratus3.5 10.0 Benthos VS RatusRatus is a RESTful asynchronous task queue server. It translated concepts of distributed task queues into a set of resources that conform to REST principles and provides a consistent HTTP API for various backends based on embedded or external storage engines.
go-res3.4 0.0 Benthos VS go-resRES Service protocol library for Go
hare3.2 5.5 Benthos VS hare🐇 CLI tool for websockets and Go package
Commander3.1 0.0 Benthos VS CommanderBuild event-driven and event streaming applications with ease
structured pubsub3.1 0.0 Benthos VS structured pubsubPublish and subscribe functionality within a single process in Go.
go-vitotrol2.7 3.2 Benthos VS go-vitotrolgolang client library to Viessmann Vitotrol web service
go-longpoll2.6 0.0 Benthos VS go-longpollParked: PubSub queuing with long-polling subscribers (not bound to http)
ami2.3 0.0 Benthos VS amiGo client to reliable queues based on Redis Cluster Streams
jazz2.1 0.0 Benthos VS jazzAbstraction layer for simple rabbitMQ connection, messaging and administration
gosd2.0 0.0 Benthos VS gosdA library for scheduling when to dispatch a message to a channel
Access the most powerful time series database as a service
Do you think we are missing an alternative of Benthos or a related project?
Benthos is a high performance and resilient stream processor, able to connect various sources and sinks in a range of brokering patterns and perform hydration, enrichments, transformations and filters on payloads.
It comes with a powerful mapping language, is easy to deploy and monitor, and ready to drop into your pipeline either as a static binary, docker image, or serverless function, making it cloud native as heck.
Benthos is declarative, with stream pipelines defined in as few as a single config file, allowing you to specify connectors and a list of processing stages:
input: gcp_pubsub: project: foo subscription: bar pipeline: processors: - mapping: | root.message = this root.meta.link_count = this.links.length() root.user.age = this.user.age.number() output: redis_streams: url: tcp://TODO:6379 stream: baz max_in_flight: 20
Delivery guarantees can be a dodgy subject. Benthos processes and acknowledges messages using an in-process transaction model with no need for any disk persisted state, so when connecting to at-least-once sources and sinks it's able to guarantee at-least-once delivery even in the event of crashes, disk corruption, or other unexpected server faults.
This behaviour is the default and free of caveats, which also makes deploying and scaling Benthos much simpler.
Supported Sources & Sinks
AWS (DynamoDB, Kinesis, S3, SQS, SNS), Azure (Blob storage, Queue storage, Table storage), GCP (Pub/Sub, Cloud storage, Big query), Kafka, NATS (JetStream, Streaming), NSQ, MQTT, AMQP 0.91 (RabbitMQ), AMQP 1, Redis (streams, list, pubsub, hashes), Cassandra, Elasticsearch, HDFS, HTTP (server and client, including websockets), MongoDB, SQL (MySQL, PostgreSQL, Clickhouse, MSSQL), and many more.
Connectors are being added constantly, if something you want is missing then open an issue.
If you want to dive fully into Benthos then don't waste your time in this dump, check out the documentation site.
For guidance on how to configure more advanced stream processing concepts such as stream joins, enrichment workflows, etc, check out the cookbooks section.
For guidance on building your own custom plugins in Go check out the public APIs.
Grab a binary for your OS from here. Or use this script:
curl -Lsf https://sh.benthos.dev | bash
Or pull the docker image:
docker pull jeffail/benthos
Benthos can also be installed via Homebrew:
brew install benthos
For more information check out the getting started guide.
benthos -c ./config.yaml
Or, with docker:
# Using a config file docker run --rm -v /path/to/your/config.yaml:/benthos.yaml jeffail/benthos # Using a series of -s flags docker run --rm -p 4195:4195 jeffail/benthos \ -s "input.type=http_server" \ -s "output.type=kafka" \ -s "output.kafka.addresses=kafka-server:9092" \ -s "output.kafka.topic=benthos_topic"
Benthos serves two HTTP endpoints for health checks:
/pingcan be used as a liveness probe as it always returns a 200.
/readycan be used as a readiness probe as it serves a 200 only when both the input and output are connected, otherwise a 503 is returned.
Benthos exposes lots of metrics either to Statsd, Prometheus or for debugging purposes an HTTP endpoint that returns a JSON formatted object.
Benthos also emits tracing events to a tracer of your choice (currently only Jaeger is supported) which can be used to visualise the processors within a pipeline.
Benthos provides lots of tools for making configuration discovery, debugging and organisation easy. You can read about them here.
Build with Go (any currently supported version):
git clone [email protected]:benthosdev/benthos cd benthos make
Benthos uses golangci-lint for linting, which you can install with:
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
And then run it with
It's pretty easy to write your own custom plugins for Benthos in Go, for information check out the API docs, and for inspiration there's an example repo demonstrating a variety of plugin implementations.
By default Benthos does not build with components that require linking to external libraries, such as the
zmq4 input and outputs. If you wish to build Benthos locally with these dependencies then set the build tag
# With go go install -tags "x_benthos_extra" github.com/benthosdev/benthos/v4/cmd/[email protected] # Using make make TAGS=x_benthos_extra
Note that this tag may change or be broken out into granular tags for individual components outside of major version releases. If you attempt a build and these dependencies are not present you'll see error messages such as
ld: library not found for -lzmq.
There's a multi-stage
Dockerfile for creating a Benthos docker image which results in a minimal image from scratch. You can build it with:
Then use the image:
docker run --rm \ -v /path/to/your/benthos.yaml:/config.yaml \ -v /tmp/data:/data \ -p 4195:4195 \ benthos -c /config.yaml
Contributions are welcome, please [read the guidelines](CONTRIBUTING.md), come and chat (links are on the community page), and watch your back.