Announcing Zeebe 0.11.0: Snapshot Replication for Fast Failover, Updated Default Mapping Behavior, and Easy Access to Deployment Events

The Zeebe team is pleased to announce the Zeebe 0.11.0 release, which includes:

  • Snapshot replication for fast failover
  • An updated default output mapping for task and workflow instance payloads for simpler workflow creation
  • Easier access to deployment events, including a list of all workflows deployed to Zeebe
  • Accessing and setting the payload of workflow or job as generic map or POJO

In the rest of this post, we’ll cover release highlights in more detail and point you to resources for getting started with Zeebe.

You can download the release here, and be sure to check out the installation guide if you have any questions about getting started.

What’s New In Zeebe 0.11.0

Snapshot Replication For Fast Failover

(Note: if you’re new to Zeebe’s leader / follower concepts, we recommend you take a look at this section of the documentation, which provides background info for this feature.)

We’ve already written a bit about the mechanisms that make Zeebe fault tolerant, and the new snapshot replication feature speeds up Zeebe’s startup time after a failure. Snapshots make it possible for brokers in Zeebe to recover state more efficiently and without reprocessing all events stored in a log.

Prior to Zeebe 0.11.0, only leader brokers have access to snapshots. That means that when a follower broker becomes a leader, it must reprocess all events in a log to build up internal state. In some cases, this rebuilding of state can take a significant amount of time.

Snapshots are now replicated to followers (along with the log itself) so that follower brokers can more quickly become leaders and resume processing.

See more in this issue.

Changing Default Output Mapping from “replace” to “merge”

This new behavior, inspired by user feedback in the forum, seeks to make workflow design simpler for users. When merging a task payload with a workflow instance payload, the Zeebe now uses a top-level merge by default instead of replacement.

This is best described with an example:

Zeebe Output Mapping Behavior, Before and After

This output behavior is configurable. A user can also specify:

  • OVERWRITE, which will overwrite the workflow instance payload with the task payload
  • NONE, which means that the task worker doesn’t produce any output, and the task result would be dropped

Deployment events (e.g. a list of all workflows deployed to Zeebe) available via a “deployment subscription”

This feature supports a case where, for example, a user wants to display all workflows currently deployed to Zeebe in an external application. Prior to 0.11.0, this required polling a workflow repository API to fetch all workflows. There were some problems with this approach:

  • It introduced unnecessary overhead on both client and broker because it fetched all workflows over and over
  • If the number of deployed workflows exceeded the maximum size of a response message, the expected behavior was unclear

It’s now possible to subscribe to Zeebe’s internal-topic, and this subscription will receive all deployed workflows.

ZeebeClient.newClient()
   .newManagementSubscription()
   .name("deployment-subscription")
   .deploymentEventHandler(System.out::println)
   .open();

This will print out all deployment events for all topics.

Learn more in this issue.

Access and set payload of workflow or job as generic map or POJO

This feature allows users to easily modify the payload without handling the (de)serialization themselves. Previously, payloads were only available as a JSON string.

ZeebeClient.newClient().topicClient().jobClient()
 .newWorker()
 .jobType("payment-service")
 .handler((jobClient, job) -> {
   // Access payload as generic map
   final Map<String, Object> payload = job.getPayloadAsMap();
   // or deserialize it to a POJO
   // final PayloadObject payload = job.getPayloadAsType(PayloadObject.class);

   payload.put("totalPrice", 46.50);

   jobClient.newCompleteCommand(job)
     .payload(payload)
     .send()
     .join();
 })
 .open();

Get Started With Zeebe

Ready to get started? The following links will help you get going with Zeebe.

If you have questions about Zeebe, visit the Community page to learn how to contact us via the forum or our public Slack channels.

If you’d like to stay on top of what’s new with Zeebe, you can subscribe to our newsletter, follow us on Twitter, or subscribe to the Zeebe blog via RSS.

  • Title slide that reads "Why Camunda 8"

    Why R-KOM Chose Camunda Platform 8

    In this blog series, we highlight the customers who have chosen to utilize Camunda Platform 8 and explore the challenges those companies are attempting to overcome using process orchestration. For the latest installment of Why Camunda 8, we spoke with R-KOM, a telecommunications company based in Regensburg, Germany. When R-KOM was founded in 1997, its shareholders pooled their telecommunications infrastructure, which had evolved over decades with utility networks for water, electricity, and gas. Initially, R-KOM’s services were limited to business and the public sector, but now it has developed further in line with demand. Over the years, the company’s high-performance infrastructure and a broad range of products have grown. Today, R-KOM has a number of city networks in Eastern Bavaria...

    Read more
  • Title slide that reads "Why Camunda 8"

    Why Gruner + Jahr Chose Camunda 8

    In this new blog series, we explore the reasons why customers are migrating to Camunda 8. For our first installment of Why Camunda 8, we talked to Gruner + Jahr, one of the largest premium magazine publishers in Europe. G+J includes such established (German) print and digital brands as STERN, GEO, BRIGITTE, ESSEN & TRINKEN, and SCHÖNER WOHNEN, as well as younger brands such as CHEFKOCH, BARBARA, BEEF, 11FREUNDE. In addition to the numerous print and digital media offerings, G+J offers products and licenses such as the SCHÖNER WOHNEN collection. The digital business contributes more than half of revenues and is exhibiting continued strong growth. Indeed, the company’s digital products lead the rankings in all publishing segments, from news through...

    Read more
  • Camunda Platform 8.1.0-alpha3 Released

    We’re excited to announce the release of Camunda Platform 8.1.0-alpha3. If you’d like to get started with Camunda Platform 8.1.0-alpha3 right away, you can sign up for a free trial now. Create Process Instance Starting at User-Defined Elements An often requested feature is now available as a preview with Camunda Platform 8.1.0-alpha3: create a process instance starting at user-defined elements. When creating a process instance through the CreateProcessInstance RPC, the process instance is started at the default none start event. For testing purposes, you may want to start at one (or multiple) of the other elements. This feature is now available through both the CreateProcessInstance RPC and the CreateProcessInstanceWithResult RPC. It is available for use in the Zeebe Java client...

    Read more

Ready to get started?

Still have questions?