Replies: 15 comments 1 reply
-
Thanks for the kind words, happy to have feedback :) |
Beta Was this translation helpful? Give feedback.
-
But do read the |
Beta Was this translation helpful? Give feedback.
-
yep i know it's all a work in progress :) thanks for the warning though. Am not going to use this in Prod... Part of the reason i was so excited to see this is because a higher order Task system on top on NATS is a low risk proposition because all the really tricky stuff is already worked out at the NATS level. |
Beta Was this translation helpful? Give feedback.
-
Yeah indeed, though not to say its not difficult, I want to support things like composite tasks where a task is a group of tasks with dependencies. This is really hard in this model, but I have some ideas :) |
Beta Was this translation helpful? Give feedback.
-
(moved to discussions) |
Beta Was this translation helpful? Give feedback.
-
Sounds like a plan so cunning you can put a tail on it and call it a weasel ... |
Beta Was this translation helpful? Give feedback.
-
Dependency chains of Tasks is a really useful thing often forgotten about until it hits you later. |
Beta Was this translation helpful? Give feedback.
-
There's some interesting (though not exactly great) prior ideas in Machinery to look at for this, but I think they're much later I have things like scheduled tasks to sort out first. |
Beta Was this translation helpful? Give feedback.
-
https://github.com/RichardKnop/machinery#workflows The concepts of groups, chords and chain are the constructs your thinking about ?
Rehydration of state: If one part of the workflow fails, pick up the state and re run. Idempotency: NATS partitions provide that. But we need a workflow to have a CorrelationID perhaps to group them all togther. Another one to look at is: https://docs.temporal.io/workflows/
The workflow routing / logic is coded, and not really part of the system core state: https://github.com/temporalio/temporal/blob/master/schema/sqlite/v3/temporal/schema.sql has just tasks, etc Here you can see the approach of what a golang coder has to do for a workflow: I have used this and its ok. Things i do not like:
|
Beta Was this translation helpful? Give feedback.
-
I recently added dependencies between tasks - they are not great tbh. However one can build a DAG and it will run it through, as a super basic building block I can imagine how you would get there from here. But lots to do before we get even anywhere near temporal (temporal is awesome). It's for sure not the kind of thing I am likely to code myself but would consider using something like an existing workflow engine along with an API this project provide to solve the problem. |
Beta Was this translation helpful? Give feedback.
-
Interesting, you can essentially do that now by just setting dependencies accordingly - bit awkward. Yeah that swim lane style approach is pretty interesting. |
Beta Was this translation helpful? Give feedback.
-
swim lane - forget the word for it :) yeah saw this for task dependencies func: https://github.com/choria-io/asyncjobs/blob/main/task.go#L212 Task.Queue could be the Swimlane name, but i think it would be better to have a Task.Tag (optional). Then other Tasks listening against that Task.Tag of "swimlane: service Y " can then be Choreographed. |
Beta Was this translation helpful? Give feedback.
-
Is there an example of a multi task workflow with dependencies to other tasks yet ? Could we add one to get a feel for things ? does the cli support this yet ? Would like to play around with the way you have envisaged it before I jump to assumptions. |
Beta Was this translation helpful? Give feedback.
-
You can see examples here Line 376 in 6dcd63a CLI supports it Line 56 in 6dcd63a |
Beta Was this translation helpful? Give feedback.
-
Ok thanks . Will build larger examples from that and let you know |
Beta Was this translation helpful? Give feedback.
-
Just wanted to say how great this looks. Thank you for all the hard work on this @ripienaar
I am going to try it out and feedback if thats ok ?
The wiki really helped me see how to use this. Is a good idea.
Love how the CLI wraps the NATS CLI to give an easy way to interact with the system.
Beta Was this translation helpful? Give feedback.
All reactions