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
- New and Changed in Zeebe Modeler 0.7.0
- New and Changed in Operate 1.1.0
New and Changed in Zeebe 0.21
- Java 11
- TLS Support on Gateway and Clients
- OAuth Support in Clients
- Broker Backpressure
- Long-polling Workers
- New BPMN Symbol: Multi-instance subprocess
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.
- Check out the PR that brought this in.
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
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 environment variable:
The CLI tool
zbctl will also respect this environment variable, or you can pass the
--insecure flag to it.
- Read about configuring TLS here in the docs.
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.
- Read about the client support for OAuth here in the docs.
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
This avoids the broker accepting commands that are likely to time out.
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.
- Read about Backpressure in the docs here.
- Read about the available Prometheus metrics in the docs here.
- Check out the issue where the Backpressure work was tracked here.
- More information on the adaptive algorithm is available in this PR.
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.
- Read about long-polling here in the docs.
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.
- Check out the PR that adds multi-instance support.
New and Changed in Operate 1.1.0
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.