Alpakka: streaming connectors for Akka, with a Caveat Emptor warning
Alpakka is a Reactive Enterprise Integration library for Java and Scala, based on Reactive Streams and Akka.
At a glance
- What is it?
- Alpakka is a library of stream aware connectors for Java and Scala, built on Akka Streams with backpressure and Reactive Streams plus java.util.concurrent.Flow interop, and the repository keeps a section headed Caveat Emptor stating that components are not always binary compatible between releases and a module may be dropped without prior deprecation.
- Who is it for?
- Alpakka earns its place for a team already on Akka Streams that needs a connector it does not want to own, since the value is a backpressure aware Source and Sink rather than a polling client, and the connector list spans cloud storage, queues and databases.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Scala, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.
Star history
- akka/alpakka1,269 ★ · +0
| Repository | 2026-10-17 | 2026-11-07 |
|---|---|---|
| akka/alpakka | 1.3k | 1.3k |
0 Stars in the last 21 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The README calls itself out with a warning
Most library READMEs end with a licence line. This one has a Caveat Emptor section before the build instructions, and it is the most useful paragraph on the page. Alpakka components are not always binary compatible between releases, API changes that are not backward compatible may be introduced as the team refines and simplifies based on feedback, and a module may be dropped in any release without prior deprecation. If not stated otherwise, the Lightbend subscription does not cover support for Alpakka modules. Read that as a specification of what you are agreeing to: a connector library whose surface moves between versions, with no deprecation window on removals, and support that your existing contract may not cover. The stated goal is to improve the stability and test coverage for Alpakka APIs over time, which is an aspiration rather than a guarantee.
Dozens of modules, one per system, all listed at the top level
The root of the repository is a directory per integration, which is the clearest evidence of scope. AWS modules include awslambda, s3, sns, sqs, dynamodb, kinesis and aws-event-bridge. Google Cloud has google-cloud-storage, google-cloud-bigquery, google-cloud-bigquery-storage, google-common and the pub-sub pair, google-cloud-pub-sub and its gRPC variant. Azure has azure-storage and azure-storage-queue. Data stores include cassandra, couchbase, dynamodb, elasticsearch, hbase, geode, hdfs, mongodb, slick, solr and influxdb. Messaging and files cover amqp, jms, jakarta-jms, mqtt and mqtt-streaming, ironmq, pravega, file, ftp, csv, json-streaming and avroparquet. Then there is simple-codecs, a reference project, and two benchmark directories, csv-bench and mqtt-streaming-bench. Whether you need any of this is the evaluation: a large surface means a large set of versions to track, and the compatibility caveat applies to all of it.
Building locally needs a token from account.akka.io
The build token section is a real obstacle for anyone wanting to work on the code or build from source. You fetch a token at account.akka.io/token and place it into the file ~/.sbt/1.0/akka-commercial.sbt, in the form the README shows:
ThisBuild / resolvers += "lightbend-akka".at("your token resolver here")That is a commercial account step before a single dependency resolves, which means contributing starts with a sales conversation rather than a pull request. The rest of the build is conventional sbt, with build.sbt at the root, an artifact-bom/ directory for dependency management, a.scala-steward.conf for automated library bumps,.scalafmt.conf and a.jvmopts file, plus RELEASING.md for the release procedure. The docker-compose.yml then defines services used to run the tests locally.
The test suite needs real brokers, and docker-compose names them
The compose file is the honest measure of what the connectors claim to cover. It defines a RabbitMQ 3 for the AMQP tests, Cassandra 4.1, Couchbase community 7.6.2 with a preparation service that waits for the node, initialises the cluster and creates the akka and akkaquery buckets and scopes, LocalStack 0.10.6 configured for the events service for the event bridge tests, and a Go based SNS/SQS stand in. Each service maps its real port, so the tests talk to the same protocol surface a production system would. Running docker compose up is therefore the quickest way to see which integrations are genuinely exercised on every commit rather than only in a marketing list.
Backpressure and Flow interop are the design claims worth checking
The technical positioning is in the Alpakka section: it implements stream aware and reactive integration pipelines for Java and Scala on top of Akka Streams, designed from the ground up to understand streaming natively, with a DSL for reactive and stream-oriented programming and built-in backpressure. The interoperability claim is more specific and more useful: Akka Streams is a Reactive Streams and JDK 9+ java.util.concurrent.Flow compliant implementation and therefore fully interoperable with other implementations. For an integration library that is the difference between a connector that respects downstream speed and one that buffers without limit. The reference documentation is available in both Scala and Java flavours, which tells you the two languages are first class rather than a Java binding bolted onto a Scala library.
One documentation bug worth knowing about
The Documentation section links the reference docs and the Getting Started pages, then says that releases of the Akka HTTP library in this repository are listed on the GitHub releases page. That is wrong: this repository is Alpakka, not Akka HTTP, and its releases are Alpakka releases. It is a small thing, but it is the kind of copy and paste error that costs a reader ten minutes of searching, and it is a fair signal about how carefully the non code parts of the documentation are maintained. The parts that matter, the module list, the compatibility caveat and the licence, are all accurate.
Against the generic connector frameworks
Two alternatives, with different trade-offs. One is to write the connectors yourself as Akka Streams Sources and Sinks, which you have to do eventually anyway for anything the library does not cover, and which gives you full control but leaves backpressure, error handling and checkpointing as your problem. The other is a standalone connector framework outside the actor model, where the same integration is written once and runs beside your Akka application over the network, at the cost of a process boundary, an extra deployment and one more failure mode. Alpakka's position between them is that the connector is a stream stage in your graph, so it composes with everything else and inherits backpressure. If your integration surface is small, hand written streams win. If it is a long tail of systems nobody wants to own, this library is the reason not to.
Editorial conclusion
Alpakka earns its place for a team already on Akka Streams that needs a connector it does not want to own, since the value is a backpressure aware Source and Sink rather than a polling client, and the connector list spans cloud storage, queues and databases. Skip it if you cannot accept the Caveat Emptor terms, which say outright that components are not always binary compatible between releases and that a module may be dropped in any release without prior deprecation, and note that the Lightbend subscription does not cover Alpakka modules unless stated otherwise. Before adopting, confirm your Akka version against the current library version on the Akka Dependencies page, since the README is explicit that the current versions are listed there and not in this repository, and budget for the fact that building from source needs a token from account.akka.io in ~/.sbt/1.0/akka-commercial.sbt. Releases are recent, with v10.0.5 published on 2026-08-17 and a push on 2026-10-08.
Frequently asked questions
Is Alpakka binary compatible between releases?
Not always. The README's Caveat Emptor section states that components are not always binary compatible between releases, that non backward compatible API changes may be introduced, and that a module may be dropped in any release without prior deprecation.
What licence is Alpakka under?
Alpakka is licensed under the Business Source License 1.1, with the Akka License FAQ as the reference. Tests and documentation are under a separate licence, with details in the LICENSE file in each documentation and test root directory.
What do I need to build Alpakka from source?
A token fetched from account.akka.io/token placed in ~/.sbt/1.0/akka-commercial.sbt as a lightbend-akka resolver, plus sbt. Running the tests additionally requires the broker and database services defined in the repository's docker-compose.yml, including RabbitMQ, Cassandra, Couchbase and LocalStack.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/akka-alpakka)Star history chart for your README
[](https://hysenlabs.com/projects/akka-alpakka)Was this useful?