dyno-queues icon indicating copy to clipboard operation
dyno-queues copied to clipboard

Testing workflow/task with priority

Open shrimank opened this issue 6 years ago • 2 comments

In the latest code of netflix conductor added support for priority for workflow. Need to understand how priority works with workflow/tasks when startWorkflow invoked.

I have tested with simple workflow, just calling an http task. submitting 3 workflows with different priority, but the conductor server executing those workflows in order of submission(since you are scheduling the workflow for later some time).

#Few More details: **I have followed below steps to check the priority testing: 1.Registered Task 2.Registered Workflow(SIMPLE) 3.Created Worker and started polling the registered the tasks.

Then, submitted 5 curl request to start the workflow with different priority(0-99) (used endpoint which accepts priority in query param),. But the worker is polling the task & getting in the order of submission.

[ What are you doing here in the class RedisDynoQueue.class method public List<String> push(final List<Message> messages) with priority how it set the priority to the message here.

double priority = message.getPriority() / 100.0;
double score = Long.valueOf(clock.millis() + message.getTimeout()).doubleValue() + priority;
String shard = shardingStrategy.getNextShard(allShards, message);
String queueShard = getQueueShardKey(queueName, shard);
quorumConn.zadd(queueShard, score, message.getId());

]

Please need your help to understand and implement the priority with workflow.

(https://github.com/Netflix/conductor/issues/1224)

shrimank avatar Jul 30 '19 05:07 shrimank

any updates on this item? I am also looking at the same code and cannot figure out how message priorities are being leveraged

andrasfe avatar Jun 24 '20 15:06 andrasfe

maybe need make score to double looks like priority.[clock.millis() + message.getTimeout()]

bearbearkeeper avatar Apr 29 '21 09:04 bearbearkeeper