Announcing the Zeebe 0.21 Release

by Josh Wulf on Oct 9 2019 in Releases.

Today, we’re happy to announce the release of Zeebe 0.21 and Operate 1.1.0.

Refer to the Zeebe docs for instructions to download a release.

In this blog post we’ll highlight the changes since the 0.20 release.

New and Changed in Zeebe 0.21

Java 11

Prior to 0.21, Zeebe was built with Java 8. Zeebe is now built with Java 11 LTS. Please note that client applications that embed the Zeebe Java client library can still be written and compiled with Java 8.

TLS Support on Gateway and Clients

Prior to 0.21, the communication between clients and the gateway was unencrypted.

To make Zeebe secure by default, and make running it in an unsecured configuration for development an explicit operation, the 0.21 release adds TLS (Transport Layer Security) on the gateway and in the clients. This authenticates the gateway to the clients, and encrypts the traffic between the clients and the gateway, using a certificate that you provide.

TLS is disabled by default in the broker, but enabled by default in the Go and Java clients, as well as zbctl.

Note that that this will be a breaking change for existing client applications and automation scripts that are upgraded to use 0.21. You will need to either configure TLS on the broker and the clients, or else explicitly configure the clients and zbctl to use an insecure connection.

To instruct the Java and Go clients to use an insecure connection, set the enviroment variable:

 ZEEBE_INSECURE_CONNECTION=true

The CLI tool zbctl will also respect this enviroment variable, or you can pass the --insecure flag to it.

OAuth Support in Clients

Some users requested the ability to authenticate clients before allowing them to access the gateway.

In 0.21, we add support for OAuth to the clients. This allows you to run workers that are not on the same private network as the gateway, while securing the gateway from unauthorised access.At this stage, you need to provide your own reverse proxy (such as nginx) with a validator to use it. There is no support for OAuth in the broker or gateway.

Broker Backpressure

Prior to 0.21, under high load, when the broker received more requests than it could process before client timeout, it accepted all requests and wrote them to the logstream. This lead to a state where the broker was doing a lot of work processing already timed out requests, which were then resent by the client.

This could cause high load to cascade.

In 0.21, we’ve implemented an adaptive algorithm to provide backpressure when the broker detects high latency in the stream processor.

When the broker detects that the stream processor is experiencing high latency, it will respond to further client commands with 8: RESOURCE_EXHAUSTED.

This avoids the broker accepting commands that are likely to time out.

FailJob and CompleteJob commands are whitelisted and will never be dropped.

You will need to code a retry strategy to deal with this backpressure in your client applications.

Long-polling Workers

Prior to 0.21, clients would poll for jobs, and the gateway would send back a response indicating that there were no jobs available in a short period of time. This resulted in high network traffic and high CPU load on the broker. (See this blog post for some metrics).

In 0.21, we added support for long-polling. Clients now use long-polling by default.

New BPMN Symbol: Multi-instance marker

Prior to 0.21, Zeebe did not support multi-instance elements.

In 0.21, we added support for the multi-instance BPMN symbol. This requires Zeebe Modeler 0.7.0 or later to model.

Read about multi-instance elements here in the docs.

New and Changed in Zeebe Modeler 0.7.0

Rebased on Camunda Modeler v3.3.2

Prior to 0.7.0, the Zeebe Modeler was based on Camunda Modeler 3.0.0-beta.2.

With this release, the modeler is based on Camunda Modeler 3.3.2.

Support Multi-instance BPMN Marker

Prior to 0.7.0, the modeler did not allow you to model multi-instance processes. With the 0.7.0 release, multi-instance marker support has been added.

New and Changed in Operate 1.1.0

Java 11

Prior to 1.1.0, Operate was built with Java 8. Operate is now built with Java 11 LTS.

Giving Feedback / Getting Help

If you have questions or feedback, please let us know via:

We’d love to hear from you.