I'm not sure how to do this wih prooph (espacially since you didn't provide any code samples), but generally speaking: It is possible a good approach can be found in Mathias Noback's MessageBus-repository in the docs for Command Bus.
You can create a middleware that checks, e.g. for a marker interface (as in the example linked above):
public function handle($message, callable $next)
{
if ($message instanceof IsHandledAsynchronously) {
// handle the message asynchronously using a message queue
$this->messageQueue->add($message);
} else {
// handle the message synchronously, i.e. right-away
$next($message);
}
}
Then it is just a matter of marking your command by letting it implement the right interface and obviously appending the middleware at the right place in the command bus.
If you have multiple command buses as your question suggests. Then you probably want to have some kind of CommandResolver that matches a command, e.g. by it's class name to the appropriate Command Bus. Again see Mathias Noback's docs especially the section Defining the command handler map in the same document and DelegatesToMessageHandlerInterface