Author

Josh Wulf

Coming in Zeebe 0.21: Long-polling workers

The upcoming 0.21 release of Zeebe includes a feature many users have been asking for: long-polling for workers. And make sure you stay tuned to the end to find out what a massive deal it is. Zeebe is a radical re-imagining of the workflow engine for the modern world: it uses event sourcing to interpret workflows over immutable streams. In the Zeebe model, workers are de-coupled from the broker. Conceptually, workers “subscribe” to task types on the broker to service. In terms of actual implementation, workers poll the broker for the task type they service. This allows the broker to have no stateful knowledge about workers. The Problem With Polling Every request to the broker for work from a worker…

By Josh Wulf

Zeebe Message Correlation

Message correlation is a powerful feature in Zeebe. It allows you to target a running workflow with a state update from an external system, asynchronously. You can use it to do things like: Update a workflow instance when an item ships from a warehouse, or a customer payment is processed. Cancel a running workflow when a user quits from a game server. Any event in the external world that influences your workflow state. This tutorial uses the JavaScript client, but it serves to illustrate message correlation concepts that are applicable to all language clients. We will use Simple Monitor to inspect the running workflow state. Simple Monitor is a community-supported tool, and is not designed to be used in production…

By Josh Wulf

Podcast: Zeebe and Rust

The latest episode of the Camunda Nation podcast is live, and it features an interview with Mackenzie Clark, the maintainer of the open source Rust client library for Zeebe – Zeebest. Extract from 00:17:18: Mackenzie: Another reason I liked Zeebe a lot is they were using BPMN – which was (an) ISO standard format – for describing workflows, and I think Conductor was not using BPMN – or they had to have some kind of adapter. And so that was another bonus, is it had that legitimacy of ISO. Josh: Yeah, I think Conductor uses its own YAML format, and then from the YAML it generates a diagram, whereas with Zeebe you can go GUI-first and it generates XML in…

By Josh Wulf

Zeebe Workflows Inside a REST Request/Response

In the Zeebe Slack and the Forum, a number of users have been inquiring about initiating a Zeebe workflow via a REST request, and returning the outcome of the workflow in the REST response. Zeebe workflows are fully decoupled, asynchronous, and have no awaitable outcome. This means there is nothing out-of-the-box right now to do this. We are evaluating demand for this feature in GitHub, both in terms of its eventual shape and its priority. Let’s look at the problem in more detail, how we can match it with Zeebe’s model, and a few different solutions that you can implement now. I’m going to be using the TypeScript Zeebe client for code examples in this article, but the concepts are…

By Josh Wulf

Yet Another License (YAL)? Why We Created The Zeebe Community License

In early July, 2019, I sat down with Daniel Meyer, Camunda CTO and Zeebe Committer #0, to talk about the new Zeebe Community License. This is the transcript of that conversation. Josh Wulf: We have a change to the licensing for Zeebe – probably, people are going to be interested to know more about that. I know you’ve done a lot of work on it – you’ve been speaking with British lawyers most recently about it. Maybe you can give a bit of background on the thinking behind that. Daniel Meyer: Right, of course – happy to. And let’s maybe start by just reflecting on the tremendous journey that open source had over the last twenty years plus. So, I…

By Josh Wulf

Writing a Zeebe Exporter – Part Two

In Part One, we built a minimal exporter, and learned about the exporter life-cycle methods. In this blog post, we will walk through building a Zeebe exporter for the Event Store database, an open source database for storing event streams. The complete source code for this example is available on GitHub. As well, there is a compiled version, along with a docker-compose configuration for it on the 0.18 branch of the zeebe-docker-compose repo. This exporter is based on the Simple Monitor exporter. The Simple Monitor exporter exports to an H2 database via JDBC. The exporter we are going to write uses REST to export to Event Store. We’ll use the same patterns for configuration, but we have less configuration, and…

By Josh Wulf

Writing a Zeebe Exporter – Part One

Exporters allow you to tap into the Zeebe event stream and export selected events to other systems. You can filter events, perform transformations, and even trigger side-effects from an exporter. In this post, we’ll step through implementing an exporter. In later posts, we’ll look more in depth at configuration and performance – but for now we’ll cover the bare minimum to help you understand how exporters work in Zeebe. Building an Exporter Follow along these steps to create a minimal exporter that can be deployed to a Zeebe broker. Note: Zeebe is under active development, and things may change. I have noted in each step things that are most likely to change. Create a new maven project: Add zeebe-exporter-api as…

By Josh Wulf

Data Pipeline Orchestration With Zeebe (And An Example Map/Reduce Implementation)

Zeebe can be used to orchestrate data-processing pipelines, such as image processing or machine learning. As discussed in Google’s Site Reliability Engineering book, one issue with data-processing pipelines is responding in a timely fashion to increased business demands. Zeebe is a stateful workflow engine, and state doesn’t scale horizontally – but Zeebe does. So you want to design your pipelines in a way that encapsulates and isolates state and allows you to scale up workers in the parts where you can parallelize work. One computational solution pattern that enables this is Map/Reduce. In this post we’ll look at how you can use Zeebe to build Map/Reduce pipelines. This is not meant to be a production-ready solution, but just to get…

By Josh Wulf

Try All Features of Camunda