Hello Matt,
I've noticed you have sequences in your concurrence. What prompts you
to say "they seem to be running in sequence", does nothing happen in a
sequence while the "first" sequence is not completely over ?
Ruote has no magic in it, there is only one thing running at one time,
even more since it's Ruby. The engine piles work on its queue and only
one apply / reply (launch) is handled at a time.
Maybe I'd suggest trying with file persistence with Marshal (not
YAML). It's the fastest. The problem with it is when changing Ruby
version, the Marshal format changes. But Ruote 0.9.x has a tool for
switching persistence (use with care anyway) :
http://openwferu.rubyforge.org/persistence.html#pooltool
But I guess you'd be starting with brand new process instances.
> These issues combined are keeping the human interaction processes from
> being initiated quickly, extending mean time to completion.
OK, makes sense. By how much time are processes extended at the worse load ?
What about some load balancing ? You could run 2+ engines (with
distinct storages) and balance launchitems among them. The trick
afterward would be to distinguish workitems.
You can start an engine by passing a :engine_name parameter. By
default, it's set to "engine". With different values, you could easily
let what stands behind your SQS participants reply to different listen
queues. Each distinct engine (with distinct engine_name values) would
listen to a different [reply] queue.
This disadvantage with this is when you want to query the engine for
info about running processes, you now have N reports to aggregate.
This is one suggestion, thanks for using ruote, best regards,
--
John Mettraux - http://jmettraux.wordpress.com