dhiaayachi / temporal

Temporal service
https://docs.temporal.io
MIT License
0 stars 0 forks source link

How to ensure that activities belonging to the same workflow can be prioritized and executed to avoid hunger when a batch of tasks is initiated for a workflow containing multiple activities. #140

Open dhiaayachi opened 2 weeks ago

dhiaayachi commented 2 weeks ago

How to ensure that activities belonging to the same workflow can be prioritized and executed to avoid hunger when a batch of tasks is initiated for a workflow containing multiple activities.

dhiaayachi commented 5 days ago

Thank you for your question! This is an important consideration when dealing with workflows that have multiple activities. Here are some ways to approach prioritizing and preventing "hunger" (where some activities starve for resources while others are prioritized):

1. Activity Scheduling:

2. Resource Allocation:

3. Monitoring and Tuning:

Additional Tips:

Remember, the best solution will depend on your specific workflow and the nature of your activities. Carefully consider the characteristics of your workload and choose a prioritization strategy that best addresses your requirements.

dhiaayachi commented 5 days ago

Hi there! Thanks for your question. It seems you're looking to ensure that activities belonging to the same workflow are prioritized and executed to avoid hunger when a batch of tasks is initiated.

This is a great question, and the Temporal framework offers features to address this. Here's how you can achieve prioritized execution and avoid "hunger" in your workflow:

For more information on activity scheduling policies, rate limiting, and how to implement these in your workflows, please refer to the Temporal documentation:

https://docs.temporal.io/docs/concepts/workflow-activities#scheduling-policies https://docs.temporal.io/docs/concepts/workflow-activities#activity-rate-limits

I hope this helps! If you have any further questions, feel free to ask.

dhiaayachi commented 5 days ago

Hi there,

Thanks for your question!

Temporal doesn't offer built-in priority queuing for activities within a single workflow. However, you can achieve a similar result by implementing your own priority mechanism.

Here are some suggestions:

Let me know if you have any other questions.

Best regards,

Temporal Support

dhiaayachi commented 5 days ago

Hi there, thanks for your question! It seems like you're trying to address the issue of "hunger" within Temporal workflows when multiple activities are initiated.

Temporal doesn't inherently prioritize activities within a workflow. The order of execution is determined by the Temporal server and depends on factors like activity scheduling and resource availability. If multiple activities are initiated within a workflow, they will be executed based on the scheduling order and server resource availability.

To avoid "hunger" you can potentially use a custom task queue and set its taskQueueKind to FIFO.

Let me know if you have further questions or need more guidance.

dhiaayachi commented 5 days ago

Hi there,

Thanks for reaching out!

This is a great question. It sounds like you're interested in ensuring fair resource allocation within your workflows, especially when dealing with batches of tasks.

You can achieve this by configuring the scheduling policy for your Temporal workflows using Temporal's SchedulingPolicy enum.

Here's a breakdown of the different scheduling policies:

You can set the desired scheduling policy when you define your workflow using the @WorkflowMethod annotation in your workflow implementation class.

For detailed information on using SchedulingPolicy, refer to the Temporal documentation: https://docs.temporal.io/docs/concepts/workflow-execution/

Let me know if you have any more questions.

dhiaayachi commented 2 days ago

This is a great question! It sounds like you are concerned about ensuring fair scheduling of activities within the same workflow, especially when dealing with a batch of tasks.

Unfortunately, Temporal does not currently offer a built-in feature to prioritize activities within a workflow. To address this, you can use a couple of techniques:

  1. Use a queue and SignalWithStart:
    You could use a queue (such as a Redis queue) to store a list of activities that need to be executed within your workflow. You would then use the SignalWithStart workflow method to trigger an activity from the queue, ensuring that activities are processed in the order they were added.

  2. Control activity execution order within a workflow: You can implement a specific logic inside your workflow code to determine the order of activity execution. This would allow you to prioritize activities based on specific criteria, like priority level or the time they were added to the workflow.

Would you like some guidance on how to implement one of these techniques?