This document summarizes a presentation about Alpakka, a Reactive Enterprise Integration library for Java and Scala based on Reactive Streams and Akka Streams. Alpakka provides connectors to various data sources and messaging systems that allow them to be accessed and processed using Akka Streams. Examples of connectors discussed include Kafka, MQTT, JMS, Elasticsearch and various cloud platforms. The document also provides an overview of Akka Streams and how they allow building responsive, asynchronous and resilient data processing pipelines.
3. Akka Streams
Akka Streams is library to model and run high-
performance, non-blocking data flows supporting
back-pressure, with concise APIs for Java and
Scala.
4. Alpakka
Alpakka is a Reactive Enterprise Integration
library for Java and Scala, based on Reactive
Streams and Akka.
The short version: “Endpoints for Akka Streams”
5. • Alpakka Tech Lead @ Lightbend
• Stockholm, Sweden
Enno Runne
8. Responsive: The system responds in a timely
manner if at all possible. Responsiveness is the
cornerstone of usability and utility, but more than
that, responsiveness means that problems may
be detected quickly and dealt with effectively.
Responsive systems focus on providing rapid
and consistent response times, establishing
reliable upper bounds so they deliver a
consistent quality of service. This consistent
behaviour in turn simplifies error handling, builds
end user confidence, and encourages further
interaction.
https://www.reactivemanifesto.org/
12. Customer support via chat
Message-driven architecture
• enables resource utilisation
• is easier to scale
• allows for distribution
13. Lightbend Reactive Architecture
A free, online learning experience by Lightbend and IBM
https://lightbend.com/learn/lightbend-reactive-architecture
16. Extends Reactive Streams to be used
• for local file access
• over TCP as TCP supports flow control
• for HTTP with Akka HTTP
• for gRPC with Akka gRPC
Akka Streams
Akka Streams
Akka HTTP
Akka gRPC
Alpakka
(reactive integrations)
• Domain Specific Language to describe streams
• Mechanics to map these stream to be executed on top of actors
• Full support to connect to any Reactive Streams compliant library
17. When to use what abstraction
modelling power
complexity
actors
streams
(completable)
futures
java.concurrency
18. Data flow
Step 1 Step 4Step 2 Step 3
Buffering data
• May cure the immediate issue
• All buffering is limited
19. Dynamic push/pull
• Push when downstream is faster
• Pull when upstream is faster
Downstream
Source SinkFlow Flow
Streaming with back-pressure
21. Part of the JDK since version 9 (java.util.concurrent.Flow)
http://reactive-streams.org/
Compliant libraries allow full interoperability.
Reactive Streams
A standard for asynchronous
stream processing with non-
blocking back-pressure.
22. What is a
stream?
Photo by blucolt - originally posted to Flickr as spearfish creek, CC BY-SA 2.0
50,000 / s
10 / s
1 / month
52. Alpakka
Alpakka is a Reactive Enterprise Integration
library for Java and Scala, based on Reactive
Streams and Akka.
The short version: “Endpoints for Akka Streams”
53. Alpakka connectors for cloud services
Amazon DynamoDB
Amazon Kinesis data
streams & firehose
AWS Lambda
Amazon S3
Amazon SNS
Amazon SQS
Google Cloud Pub/Sub
+ gRPC-based
Google Firebase Cloud
Messaging
Google Cloud Storage
Azure Storage Queue
55. Alpakka connectors for messaging
(Eclipse Paho &
Akka native)
AMQP
(RabbitMQ)
IronMQ
JMS
Java Messaging Service
… not as fancy logos, but very well suited for the streaming approach.
56. Community connectors to Akka Streams
Apache Camel
Eventuate
FS2
Pulsar
… if you know of more, please tell us.