Pick Job from Queue Logic

Is there a way, to plug in own logic to pick tasks from queues?
There is a Hangfire server,configured to use sql:

var serverOptions = new BackgroundJobServerOptions
{
     WorkerCount = 1,
     Queues= new string[]{"high-priority",
                          "normal-priority-long-running",
                          "normal-priority-very-long-running"}
};

Users upload files to be processed on the server. some files have 10 rows, some 20,000 rows,which take from 10" to 20’ to process.

Here is what I am trying to achieve:
the app logic will decide which queue to add jobs to. Then I want to inject my own logic to Hangfire, so it picks the next job from a queue as follows, in as simplifies manner:

{
 If there is any jobs in the "high-priority" pick and run.
 If there is a job in ,"normal-priority-long-running", pick and run.
 If there is any jobs in the "high-priority" pick and run.
 If there is a job in "normal-priority-very-long-running", pick and run
}
repeat.

Is this possible with current version of Hangfire?
For my case it works if I could pass a function at startup to Hangfire Config accepting some parameters about the queues and task picking.
Will be happy to contribute code if needed.
Thanks for the great work.

Was this ever implemented or addressed? This seems like an obvious feature to me, but seems to be missing from most job queueing libraries.

Could the problem be reworded that you want a queue to have two different priorities at the same time?
So instead of
0 = high
1 = normal
2 = normal-long-running

You require
0 = high
1 = normal
2 = high
3 = normal-long-running

But in the context of a worker picking a job, there is no context of the “previously chosen job”. And you would need to synchronize this “last queue picked” information between multiple workers, over multiple servers.

If it’s at all possible the change would involve writing a new or modifying JobStorage and IPersistentJobQueue implementations.