Skip to Content
Learning Ratpack
book

Learning Ratpack

by Dan Woods
June 2016
Intermediate to advanced
368 pages
8h 45m
English
O'Reilly Media, Inc.
Content preview from Learning Ratpack

Chapter 7. Asynchronous Programming, Promises, and Executions

Asynchronous frameworks for the JVM are plagued by the fact that Java has no language-level support for continuations. This means that when asynchronous APIs are employed, a callback handler (or “completion handler”) must be provided to the receiver in order to return the data to the caller. This invoke-and-callback process introduces a nondeterministic data flow, where concurrency must be carefully considered when building and returning data. It also introduces nondeterminism to the processing control flow, where it can be difficult, if not impossible, for the framework to know whether an asynchronous operation is still processing.

Consider the code in Example 7-1, which outlines the contract for an asynchronous service, and shows the associated user code.

Example 7-1. An asynchronous demonstration using a callback
public interface AsyncDatabaseService {
  void findByUsername(String username, Consumer<User> callback); 1
}

RatpackServer.start(spec -> spec
  .registry(...)
  .handlers(chain -> chain
    .get(":username", ctx -> {
      AsyncDatabaseService db = ctx.get(AsyncDatabaseService.class);
      String username = ctx.getPathTokens().get("username");
      db.findByUsername(username, user -> { 2
        ctx.render(user);
      });
    })
  )
);

Let’s ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Learning Dapr

Learning Dapr

Haishi Bai, Yaron Schneider
Roslyn Cookbook

Roslyn Cookbook

Manish Vasani, Ovais Mehboob Ahmed Khan
Groovy – kurz & gut

Groovy – kurz & gut

Jörg Staudemeyer

Publisher Resources

ISBN: 9781491921654Errata Page