UDP
The UDP connector provides Akka Stream flows that allow to send and receive UDP datagrams.
Project Info: Alpakka UDP | |
---|---|
Artifact | com.lightbend.akka
akka-stream-alpakka-udp
1.1.2
|
JDK versions | OpenJDK 8 |
Scala versions | 2.12.7, 2.11.12, 2.13.0 |
JPMS module name | akka.stream.alpakka.udp |
License | |
Readiness level |
Since 0.20, 2018-07-04
|
Home page | https://doc.akka.io/docs/alpakka/current |
API documentation | |
Forums | |
Release notes | In the documentation |
Issues | Github issues |
Sources | https://github.com/akka/alpakka |
Artifacts
- sbt
libraryDependencies += "com.lightbend.akka" %% "akka-stream-alpakka-udp" % "1.1.2"
- Maven
<dependency> <groupId>com.lightbend.akka</groupId> <artifactId>akka-stream-alpakka-udp_2.12</artifactId> <version>1.1.2</version> </dependency>
- Gradle
dependencies { compile group: 'com.lightbend.akka', name: 'akka-stream-alpakka-udp_2.12', version: '1.1.2' }
The table below shows direct dependencies of this module and the second tab shows all libraries it depends on transitively.
- Direct dependencies
Organization Artifact Version License com.typesafe.akka akka-stream_2.12 2.5.23 Apache License, Version 2.0 org.scala-lang scala-library 2.12.7 BSD 3-Clause - Dependency tree
com.typesafe.akka akka-stream_2.12 2.5.23 Apache License, Version 2.0 com.typesafe.akka akka-actor_2.12 2.5.23 Apache License, Version 2.0 com.typesafe config 1.3.3 Apache License, Version 2.0 org.scala-lang.modules scala-java8-compat_2.12 0.8.0 BSD 3-clause org.scala-lang scala-library 2.12.7 BSD 3-Clause org.scala-lang scala-library 2.12.7 BSD 3-Clause com.typesafe.akka akka-protobuf_2.12 2.5.23 Apache License, Version 2.0 org.scala-lang scala-library 2.12.7 BSD 3-Clause com.typesafe ssl-config-core_2.12 0.3.7 Apache-2.0 com.typesafe config 1.3.3 Apache License, Version 2.0 org.scala-lang.modules scala-parser-combinators_2.12 1.1.1 BSD 3-clause org.scala-lang scala-library 2.12.7 BSD 3-Clause org.scala-lang scala-library 2.12.7 BSD 3-Clause org.reactivestreams reactive-streams 1.0.2 CC0 org.scala-lang scala-library 2.12.7 BSD 3-Clause org.scala-lang scala-library 2.12.7 BSD 3-Clause
Sending
Datagrams can be sent to remote destinations by using a Udp.sendFlow
or Udp.sendSink
which can be found in the Udp
factory object.
- Scala
-
val destination = new InetSocketAddress("my.server", 27015) val messagesToSend = 100 Source(1 to messagesToSend) .map(i => ByteString(s"Message $i")) .map(Datagram(_, destination)) .runWith(Udp.sendSink())
- Java
-
final InetSocketAddress destination = new InetSocketAddress("my.server", 27015); final Integer messagesToSend = 100; Source.range(1, messagesToSend) .map(i -> ByteString.fromString("Message " + i)) .map(bs -> Datagram.create(bs, destination)) .runWith(Udp.sendSink(system), materializer);
Receiving
First create an address which will be used to bind and listen for incoming datagrams.
- Scala
-
val bindToLocal = new InetSocketAddress("localhost", 0)
- Java
-
final InetSocketAddress bindToLocal = new InetSocketAddress("localhost", 0);
A Flow created from Udp.bindFlow
will bind to the given address. All datagrams coming from the network to the bound address will be sent downstream. Datagrams received from the upstream will be sent to their corresponding destination addresses.
The flow materializes to the Future[InetSocketAddress]
CompletionStage<InetSocketAddress>
which will eventually hold the address the flow was finally bound to.
- Scala
-
val bindFlow: Flow[Datagram, Datagram, Future[InetSocketAddress]] = Udp.bindFlow(bindToLocal)
- Java
-
final Flow<Datagram, Datagram, CompletionStage<InetSocketAddress>> bindFlow = Udp.bindFlow(bindToLocal, system);
Running the example code
The code in this guide is part of runnable tests of this project. You are welcome to browse the code, edit and run it in sbt.
- Scala
-
sbt > udp/testOnly *.UdpSpec
- Java
-
sbt > udp/testOnly *.UdpTest