I wanna know if I can get a message broker that for example takes client_id's and I can target a client_id through that. Not through k8s or directly over ip. And at the same time give it a message that can be taken by any of the connected clients.
So, now I have to ask, what does "target a client_id" mean? You noted above you wanted to be able to query for a particular job status. Is that via the "client_id" and what you mean by targeting it?
If your answer is yes, then my answer is absolutely, yes.
Any messaging service can take and pass forward the message, "give me a status on the job for client_id X". And, you'd listen for a response from the service that runs jobs and stores the status or collects status updates from the jobs.
How you inevitably keep track of the job statuses is back to what I told you above. If you have a service that is scaled out, you MUST somehow store the status changes local and central to the replicas used, so any replica can answer the request message "give me the status of client_id X". If you only have a VM with the service, then you can store that in its memory as a cache. Just that, if that VM goes down, you lose the status conditions (and why event sourcing is a thing). You could also have multiple VMs, for high availability and then you must have either the local cache and sticky sessions with a load balancer that can do sticky sessions or a central storage mechanism for storing the statuses.
Or, you send out events from the service, which communicate "I've got client_id X and I'm at status Y" and another service listens to these status changes and stores them. That service would then reply to your request for "give me a status on the job for client_id X". This is the pub/sub pattern.
You can also have a message broker like NATS, that allows for pushing messages to certain services. However, that doesn't negate the storage needs I've noted.