TaskQueues in workflow

Hi,

Few doubts regarding TaskQueue in workflow.

We have two activity workers (in python & node) and workflow is in node.
Using different TaskQueues for activity workers.
Want to know which TaskQueue name to pass in workflow options:
image

Hello @nehapatil7199

You have to set the taskqueue name (in the workflowOptions) to the same value as the taskQueue name of the worker that holds the workflow implementation.

Hi @antonio.perez

I have separate taskQueues for two different workers.

  1. node-taskQueue
  2. python-taskQueue

Workflow options as in can we pass multiple taskQueue names below or it is not needed?
image

We have two activity workers (in python & node ) and workflow is in node.

Assume then you register the node workflow and activity with the node worker. If so if your client wants to start an execution of this node workflow it would specify the node worker task queue.

Workflow options as in can we pass multiple taskQueue names below or it is not needed?

No, client needs to specify a single task queue (end point). If your node workflow is invoking the python activity, then you would specify the python tq in activity options (when you invoke the activity).

1 Like

Please, kindly allow a follow-up question: suppose you design 4 worker processes, one implementing and registering only workflow W1, analogously one for W2 plus one for activity A1 and the last one implementing only activity A2. Each workflow implementation W1 and W2 calls A1 and A2 and there is a client C starting W1 and W2 instances. All worker processes and the client should work together to form a single application and are distributed over 5 hosts communicating with a single temporal frontend service.

What is the recommendation on naming the queues to be used in W1/W2 and A1/A2 hosts and in the client? That’s a lot of queue names to configure in option structs in this artificial example, 10 if I’m not wrong (2 for C, 3 for each W, and 1 for each A). Can or should or must they be all the same? I.e. if A1 listens on e.g. „my-queue“, is it or is it not sent workload for working on A2 (the other activity) which was scheduled by W1 on queue „my-queue“ too?

Thanks,
Martin

I would just use a single task queue for all of them and register all the workflow and activity types with a single worker. And then run 4 instances of this process.

Yes, that’s kind of straight forward, a plain published standard use case for temporal. But that was not my intention to ask, I was not precise enough, sorry. To be more clear:

Please assume as the reason for this design is that these 4 processes are implemented by 4 different teams using different implementation languages (like e.g. Go, Java, C# and TS), so that there is a technical barrier to join the code-base into a single executable. Do teams then need to agree on a common task queue name and use it uniformly?

The only requirement is that task queue names match between the caller (for example workflow invoking an activity) and the implementer (activity worker).