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

by Sebastian Menski on Jul 4 2018 in Releases.

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

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:

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’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.