I would use a message queue, but pre-apply the search.
So in your example you could have queue per device, this allows the worker to pull only from selected devices.
I found this article on the problem
It depends on how things are structured. It's possible to have a persistence layer with 1k methods and have a client that uses them all. It may not use them all equally, but that isn't relevant. That is just fine as far as the ISP is concerned. Generally as applications grow, interfaces are split into multiple interfaces based on different business objects ...