Are the tasks independent of each other? Or do you have tasks that themselves spawn more tasks? Rayon is more of a fork-join parallelism library, and it has some parallel adapters (e.g. a parallel iterator).
A more conventional threadpool option might be https://docs.rs/futures-cpupool/0.1.5/futures_cpupool/. This is a classic threadpool: you submit a task (closure) and you get a future back representing the async execution of the task.
Millions of (small) tasks per second will stress test the mechanics of a threadpool, namely the overhead of concurrency primitives used internally. Rayon has the advantage of using work stealing off thread local work queues, but that works well for fork-join more so than many independent tasks submitted from the outside. I think I would try the futures cpupool, but be prepared to tinker with the design at that rate of task arrival.
If you end up benchmarking rayon, futures cpupool, and whatever else, please report back your findings - I think folks will be interested in seeing that.