If having dynamic subscribers is an option, I'd like to suggest two possible solutions.
If having dynamic subscribers is an option, I'd like to suggest two possible solutions: Solution 1: Use a topic exchange. Use the mandatory delivery flag when publishing messages to your exchange. If a message is rejected: create a queue, bind it for the particular routing key and start a subscriber on the queue, the re-publish the rejected message.
Use auto-deleting queues so when subscriber stops, their queues will disappear and the whole process of auto-creation can restart. Solution 2: Use a topic exchange. Use the immediate delivery flag when publishing messages to your exchange.
If a message is rejected: create a queue, bind it for the particular routing key and start a subscriber on the queue, the re-publish the rejected message. Use persistent queues. Since queue creation is idempotent, it's OK to go through the re-creation procedure, the essential part here is ensuring a live subscriber is listening on the queue.
If dynamic subscribers are not an option, then here is what I propose. Assuming you're limited to n subscribers: Define a strategy that hashes the dynamic categories in n routing keys, Use a direct exchange, Bind n queues on it for the n routing keys, Have one subscriber per queue.
These are both interesting options, and I'm reading up more on topic exchanges, but my main issue here is that my subscribers are a) static (i.e. They don't spin up. They're always waiting, like chuck norris), and b) I don't want my subscribers to know of a queue.
I want them to equally serve all of my queues – Oren Mazor Dec 2 at 20:39 1 Sorry I misunderstood then. Messages are accumulated in queues so you have to have queues. Now if the design you're envisioning is a bounded set of consumers pulling from an unbounded number of queues, then read the discussions here: stackoverflow.Com/questions/8301841/… – David Dossot Dec 2 at 22:19 nice answer on that one!
But the problem is that even with one queue and n workers, one of his customers can create a thousand tasks and that queue is now blocked until his worker pool can catch up? – Oren Mazor Dec 2 at 22:33 I have reviewed my answer to cover the case of non-dynamic subscribers. – David Dossot Dec 2 at 22:33 I'm actually trying to figure out if I can have my worker pool listen to one static queue, while the producers continue creating their own anonymous queues.
While in the meantime, rabbitmq round-robins those anonymous queues into my static queue. Make sense? – Oren Mazor Dec 2 at 22:34.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.