Zeebe version 0.4.0 has been released just now. The new features are
- Workflow deployed to all partitions of the topic.
- New workflow instances/tasks are distributed across all partitions of the topic in round robin manner.
- No default-topic created on startup. The user has to manually create the topic.
- Partition id is unique through all created topics in the cluster.
- Added getting started for Go library: https://docs.zeebe.io/go-client/get-started.html
How to try it:
I could not find what the default-topic is good for (is this the topic used for workflow processing?) and why this has to be created by a user. Additionally it is mentioned in https://docs.zeebe.io/go-client/get-started.html but not in https://docs.zeebe.io/java-client/get-started.html. As this is up to the user/client to create this topic, is there another way test whether this topic exists other than starting a subscription on it or simple recreate it and catch any exceptions?
Topics are a way to organize your workflows in Zeebe. Each topic has independent processing of workflows and workflow instances (e.g. versioning). This concept may also become more important when we implement a solution for event handling, but that’s still far ahead. Using a single topic is perfectly fine. Up to this release, Zeebe always created a topic named
default-topic. This is now no longer the case but the command line client (or Java or Go client) must be used to create a topic before any workflows can be deployed.
With the command line client, you can inspect all currently known topics and partitions via
zbctl describe topology. In the Java client, you have
ZeebeClient#requestTopology. However, these methods are not guaranteed to provide a globally consistent response (in case of a Zeebe cluster with more than one node), so I think we should have another API method to inspect exactly that (see issue https://github.com/zeebe-io/zeebe/issues/530).
I think the java get started guide was cached in your browser. We actually added it also in the java guide but you probably have to hard refresh the page to see it, i.e. hit CTRL+F5.
Thank you. This is what I didn’t had in mind.
I think you are right
What is the reasoning behind not creating a default topic (e.g. named “default”) automatically? Creating the topic manually is an additional step in the get started experience at a moment in time the user doesn’t (yet) have to think about topics.
My two cents
I agree that it changes the get started experience. But it aligns with other systems like kafka or a database where you also have to create a topic/database initially. And as we now have an API for that the user is able to decided which topic to use.
Just that other systems do not have an awesome get start experience shouldn’t mean we have to do the same Is there a hard reason why it is a problem to just create a default topic and probably also provide a constant for it to ease usage in the client?
I think this would be WAAAAY better and serves the get started use case for 90% of the people better (and does not stop anybody from creating new topics on their own).
I agree with the get started experience point but am not sure if it is a good decision in the long run. Nevertheless I create https://github.com/zeebe-io/zeebe/issues/536 to collect feedback and will bring it up in the next team meeting. Feel free to add a comment to the ticket if you have another opinion.
is there a pure java way to create the topic? What if I run broker and client in tests, do I somehow have to run the zbclt app to have a topic?
The Zeebe Java client can be used to create a new topic.
ZeebeClient client = ZeebeClient.create(new Properties());
Where the first parameter is the topic name and the second one the number of partitions to create for this topic.
If you are still curious about the use cases of topics in Zeebe you can read the topics & logs section of the documentation to get a better understanding. Thanks to @thorben for improving it