{"id":17887,"date":"2026-02-24T11:12:54","date_gmt":"2026-02-24T19:12:54","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=17887"},"modified":"2026-02-24T11:13:12","modified_gmt":"2026-02-24T19:13:12","slug":"building-better-pipelines-with-alpakka-couchbase-and-akka-streams","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/","title":{"rendered":"Building Better Pipelines with Alpakka Couchbase and Akka Streams"},"content":{"rendered":"<p><span style=\"font-weight: 400\">The Couchbase Developer Experience team is dedicated to providing Couchbase users with a rich open-source ecosystem for their clusters. Recently, we have been working to update the Alpakka Couchbase integration with support for the latest features in Couchbase Server.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The updated Couchbase integration is available as part of the 10.0.1 release of Alpakka. In this post, we will review a simple project that uses the \u201ctravel-sample\u201d dataset to provide an overview of basic usage of the integration and its components.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The most comprehensive information about the integration and its API, including additional usage examples, can be found in the Alpakka documentation: <\/span><a href=\"https:\/\/doc.akka.io\/libraries\/alpakka\/current\/couchbase.html\"><span style=\"font-weight: 400\">https:\/\/doc.akka.io\/libraries\/alpakka\/current\/couchbase.html<\/span><\/a><\/p>\n<h1><span style=\"font-weight: 400\">Prerequisites<\/span><\/h1>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Couchbase cluster with travel-sample bucket<\/span><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/doc.akka.io\/operations\/cli\/installation.html\"><span style=\"font-weight: 400\">Akka CLI<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Java 21, <\/span><a href=\"https:\/\/adoptium.net\/marketplace\/\"><span style=\"font-weight: 400\">Eclipse Adoptium<\/span><\/a><span style=\"font-weight: 400\"> is recommended by Akka developers<\/span><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/maven.apache.org\/install.html\"><span style=\"font-weight: 400\">Apache Maven<\/span><\/a><span style=\"font-weight: 400\"> version 3.9 or later<\/span><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/curl.se\/download.html\"><span style=\"font-weight: 400\">curl<\/span><\/a><span style=\"font-weight: 400\"> command-line tool<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Git or GitHub Desktop<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Note: The Akka dependencies are available from Akka\u2019s secure library repository. To access them you need to use a secure, tokenized URL as specified at<\/span><a href=\"https:\/\/account.akka.io\/token\"> <span style=\"font-weight: 400\">https:\/\/account.akka.io\/token<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In order to demonstrate using Couchbase in Alpakka, the project uses the travel-sample dataset that can be added to any Couchbase cluster from its settings. More information about it can be found in \u0421ouchbase documentation: <\/span><a href=\"https:\/\/docs.couchbase.com\/java-sdk\/current\/ref\/travel-app-data-model.html\"><span style=\"font-weight: 400\">https:\/\/docs.couchbase.com\/java-sdk\/current\/ref\/travel-app-data-model.html<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">The sample project implements two endpoints. One of them lets us search for airports by city, country, airport name, or its international codes and the other returns full information about an airport by its identifier.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The source code for our example project can be found at this URL: <\/span><a href=\"https:\/\/github.com\/couchbaselabs\/alpakka-example\"><span style=\"font-weight: 400\">https:\/\/github.com\/couchbaselabs\/alpakka-example<\/span><\/a><span style=\"font-weight: 400\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The following command can be used to clone it with git:<\/span><\/p>\n<p><span style=\"font-weight: 400\">&#8220;`<\/span><\/p>\n<p><span style=\"font-weight: 400\">git clone <\/span><a href=\"https:\/\/github.com\/couchbaselabs\/alpakka-example.git\"><span style=\"font-weight: 400\">https:\/\/github.com\/couchbaselabs\/alpakka-example.git<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">&#8220;`<\/span><\/p>\n<h1><span style=\"font-weight: 400\">Alpakka Overview<\/span><\/h1>\n<p><span style=\"font-weight: 400\">The<\/span><a href=\"https:\/\/doc.akka.io\/libraries\/alpakka\/current\/\"> <span style=\"font-weight: 400\">Alpakka project<\/span><\/a><span style=\"font-weight: 400\"> is an initiative to implement stream-aware and reactive integration pipelines for Java and Scala. It is built on top of<\/span><a href=\"https:\/\/doc.akka.io\/libraries\/akka-core\/current\/stream\/index.html\"> <span style=\"font-weight: 400\">Akka Streams<\/span><\/a><span style=\"font-weight: 400\">, and has been designed from the ground up to understand streaming natively and provide a DSL for reactive and stream-oriented programming, with built-in support for backpressure.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Akka Streams are structured around three main components: Source, Sink, and Flow. A Source emits data, a Sink consumes it, and a Flow transforms the data as it moves through the stream, allowing for efficient and asynchronous processing.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Our integration provides all three types of components:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">CouchbaseSource component performs Couchbase SQL++ queries and uses the results as source for data in a stream<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">CouchbaseFlow fetches documents by their identifiers, and also upserts, replaces and deletes them<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">CouchbaseSink provides similar CouchbaseFlow sets of operations that can be used as last step in a stream<\/span><\/li>\n<\/ul>\n<h1><span style=\"font-weight: 400\">Alpakka-Couchbase Configuration<\/span><\/h1>\n<p><span style=\"font-weight: 400\">The project source code contains file `src\/main\/resources\/application.conf` with the following couchbase configuration:<\/span><\/p>\n<pre class=\"lang:default decode:true\">alpakka.couchbase {\r\n session {\r\n   nodes = [\"localhost\"]\r\n   username = \"Administrator\"\r\n   password = \"password\"\r\n }\r\n}<\/pre>\n<p><span style=\"font-weight: 400\">This configuration should work with a single-node developer cluster that uses default settings and runs on the same machine as the Alpakka application. Alternatively, it may be modified with credentials for a Couchbase Capella cloud-hosted cluster. More information about credentials and connecting to Couchbase can be found in Couchbase Capella (<\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/get-started\/connect.html\"><span style=\"font-weight: 400\">https:\/\/docs.couchbase.com\/cloud\/get-started\/connect.html<\/span><\/a><span style=\"font-weight: 400\">) and Couchbase Server (<\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/guides\/connect.html#connecting-via-client\"><span style=\"font-weight: 400\">https:\/\/docs.couchbase.com\/server\/current\/guides\/connect.html#connecting-via-client<\/span><\/a><span style=\"font-weight: 400\">) documentation.<\/span><\/p>\n<h1><span style=\"font-weight: 400\">Airport Controller<\/span><\/h1>\n<p><span style=\"font-weight: 400\">The sample code that interacts with a configured Couchbase connection can be found in the `AirportController` class, located at `src\/main\/java\/travelsample\/api\/AirportController.java`.\u00a0 The Alpakka-Couchbase integration uses `CouchbaseSessionSettings` objects to reference specific Couchbase connections. The session settings object can be reused between different endpoints and actors, so it is created in the constructor of the controller and stored into a field:<\/span><\/p>\n<pre class=\"lang:default decode:true\">public AirportController(ActorSystem system) {\r\n   sessionSettings = CouchbaseSessionSettings.create(system)\r\n           .withEnrichAsyncCs(DiscoverySupport.getNodes(system));\r\n}\r\n<\/pre>\n<p><span style=\"font-weight: 400\">The `searchAirport` method in this class implements the `\/search?query=&lt;text&gt;` endpoint and demonstrates using SQL++ with positional arguments in Alpakka:\u00a0<\/span><\/p>\n<pre class=\"lang:default decode:true\">String searchTerm = requestContext().queryParams().getString(\"query\").orElseThrow();\r\nreturn CouchbaseSource.fromQuery(\r\n  sessionSettings, \r\n  \"travel-sample\",\r\n  \"SELECT * FROM inventory.airport where airportname LIKE '%' $1 '%' OR faa = $1 or icao = $1 or city LIKE '%' $1 '%'\", \r\n  QueryOptions.queryOptions().parameters(JsonArray.from(searchTerm)\r\n)).runWith(Sink.seq(), system).toCompletableFuture().get(TIMEOUT, TimeUnit.SECONDS);<\/pre>\n<p><span style=\"font-weight: 400\">To perform a SQL++ query, we first create an instance of `CouchbaseSource` class and configure it with the information required to connect to the cluster (sessionSettings), the query we want to execute, and arguments for that query passed as a QueryOptions object. Both positional and named arguments are supported according to the Couchbase Java SDK documentation for the `QueryOptions` class.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Then, we use Alpakka\u2019s `runSink` method on the created source to run the query and pull its results as a stream of objects.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The second controller method, `getById`, implements the `\/byId\/{id}` endpoint, which takes an airport identifier and returns information about an airport stored in a document with that identifier.<\/span><\/p>\n<pre class=\"lang:default decode:true \">return Source.from(Collections.singletonList(id))\r\n       .via(CouchbaseFlow.fromId(\r\n    sessionSettings, \r\n    \"travel-sample\", \r\n    \"inventory\", \r\n    \"Airport\"\r\n  ))\r\n    .runWith(Sink.seq(), system)\r\n    .thenApply(List::getFirst)\r\n    .thenApply(CouchbaseDocument::getDocument)\r\n    .toCompletableFuture().get(TIMEOUT, TimeUnit.SECONDS);<\/pre>\n<p><span style=\"font-weight: 400\">We can use Alpakka\u2019s `Source::from` method with a singleton list containing the requested identifier to create a source instance.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Then we use the `Source.via` method to route the source Akka stream (in this case of a single identifier) through a `CouchbaseFlow` object that is configured similarly to the `CouchbaseSource` class in the `searchAirport` method. The instance of `CouchbaseFlow` will accept the requested identifier from the stream, fetch the corresponding document from the configured collection, and return it to the stream, replacing the identifier with an instance of `CouchbaseDocument` object, which contains both the identifier and associated document.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Combining `CouchbaseSink`, `CouchbaseFlow`, and other documented Couchbase objects as steps in the Akka streams together with actors from other Alpakka components allows for the creation of pipelines that can use Couchbase to store and fetch information, as well as use its powerful features for analytics and search.<\/span><\/p>\n<h1><span style=\"font-weight: 400\">Documentation and issue tracking<\/span><\/h1>\n<p><span style=\"font-weight: 400\">The Alpakka documentation (<\/span><a href=\"https:\/\/doc.akka.io\/libraries\/alpakka\/current\/couchbase.html\"><span style=\"font-weight: 400\">https:\/\/doc.akka.io\/libraries\/alpakka\/current\/couchbase.html<\/span><\/a><span style=\"font-weight: 400\">) contains more information about using this integration, including <\/span><a href=\"https:\/\/doc.akka.io\/libraries\/alpakka\/current\/couchbase.html#upsert\"><span style=\"font-weight: 400\">upserting<\/span><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/doc.akka.io\/libraries\/alpakka\/current\/couchbase.html#replace\"><span style=\"font-weight: 400\">modifying<\/span><\/a><span style=\"font-weight: 400\"> and <\/span><a href=\"https:\/\/doc.akka.io\/libraries\/alpakka\/current\/couchbase.html#delete\"><span style=\"font-weight: 400\">deleting<\/span><\/a><span style=\"font-weight: 400\"> documents in a Couchbase cluster.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Any suggestions about the integration or issues with it can be shared via the <\/span><a href=\"https:\/\/github.com\/akka\/alpakka\/labels\/p%3Acouchbase\"><span style=\"font-weight: 400\">Alpakka GitHub Issues page<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Couchbase Developer Experience team is dedicated to providing Couchbase users with a rich open-source ecosystem for their clusters. Recently, we have been working to update the Alpakka Couchbase integration with support for the latest features in Couchbase Server. The [&hellip;]<\/p>\n","protected":false},"author":79476,"featured_media":17890,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2201],"tags":[],"ppma_author":[9509],"class_list":["post-17887","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tools-sdks"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v26.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Building Better Pipelines with Alpakka Couchbase and Akka Streams - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building Better Pipelines with Alpakka Couchbase and Akka Streams\" \/>\n<meta property=\"og:description\" content=\"The Couchbase Developer Experience team is dedicated to providing Couchbase users with a rich open-source ecosystem for their clusters. Recently, we have been working to update the Alpakka Couchbase integration with support for the latest features in Couchbase Server. The [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-24T19:12:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-24T19:13:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dima Chechetkin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dima Chechetkin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/\"},\"author\":{\"name\":\"chedim\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/016ca5fea7f6971798017e07ac6f3a7b\"},\"headline\":\"Building Better Pipelines with Alpakka Couchbase and Akka Streams\",\"datePublished\":\"2026-02-24T19:12:54+00:00\",\"dateModified\":\"2026-02-24T19:13:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/\"},\"wordCount\":928,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png\",\"articleSection\":[\"Tools &amp; SDKs\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/\",\"name\":\"Building Better Pipelines with Alpakka Couchbase and Akka Streams - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png\",\"datePublished\":\"2026-02-24T19:12:54+00:00\",\"dateModified\":\"2026-02-24T19:13:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building Better Pipelines with Alpakka Couchbase and Akka Streams\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/016ca5fea7f6971798017e07ac6f3a7b\",\"name\":\"chedim\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/0b2649df4aecc596b6985f8feacd0bfe\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d03a561b839e9b17366b92ec7d50f23befe9dfcb8e7c1d29e2e0396e378bb831?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d03a561b839e9b17366b92ec7d50f23befe9dfcb8e7c1d29e2e0396e378bb831?s=96&d=mm&r=g\",\"caption\":\"chedim\"},\"description\":\"Senior Developer Advocate at Couchbase\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/chedim\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building Better Pipelines with Alpakka Couchbase and Akka Streams - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/","og_locale":"en_US","og_type":"article","og_title":"Building Better Pipelines with Alpakka Couchbase and Akka Streams","og_description":"The Couchbase Developer Experience team is dedicated to providing Couchbase users with a rich open-source ecosystem for their clusters. Recently, we have been working to update the Alpakka Couchbase integration with support for the latest features in Couchbase Server. The [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/","og_site_name":"The Couchbase Blog","article_published_time":"2026-02-24T19:12:54+00:00","article_modified_time":"2026-02-24T19:13:12+00:00","og_image":[{"width":2400,"height":1256,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png","type":"image\/png"}],"author":"Dima Chechetkin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Dima Chechetkin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/"},"author":{"name":"chedim","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/016ca5fea7f6971798017e07ac6f3a7b"},"headline":"Building Better Pipelines with Alpakka Couchbase and Akka Streams","datePublished":"2026-02-24T19:12:54+00:00","dateModified":"2026-02-24T19:13:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/"},"wordCount":928,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png","articleSection":["Tools &amp; SDKs"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/","url":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/","name":"Building Better Pipelines with Alpakka Couchbase and Akka Streams - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png","datePublished":"2026-02-24T19:12:54+00:00","dateModified":"2026-02-24T19:13:12+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/02\/Building-Better-Pipelines-with-Alpakka-Couchbase.png","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/building-better-pipelines-with-alpakka-couchbase-and-akka-streams\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Building Better Pipelines with Alpakka Couchbase and Akka Streams"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/016ca5fea7f6971798017e07ac6f3a7b","name":"chedim","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/0b2649df4aecc596b6985f8feacd0bfe","url":"https:\/\/secure.gravatar.com\/avatar\/d03a561b839e9b17366b92ec7d50f23befe9dfcb8e7c1d29e2e0396e378bb831?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d03a561b839e9b17366b92ec7d50f23befe9dfcb8e7c1d29e2e0396e378bb831?s=96&d=mm&r=g","caption":"chedim"},"description":"Senior Developer Advocate at Couchbase","url":"https:\/\/www.couchbase.com\/blog\/author\/chedim\/"}]}},"authors":[{"term_id":9509,"user_id":79476,"is_guest":0,"slug":"chedim","display_name":"Dima Chechetkin","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/d03a561b839e9b17366b92ec7d50f23befe9dfcb8e7c1d29e2e0396e378bb831?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/17887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/79476"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=17887"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/17887\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/17890"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=17887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=17887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=17887"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=17887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}