I was looking for an ActiveMQ broker admin command, to tell it to pause a queue - that is:
- continue accepting messages from producing clients
- cease delivering to consuming clients, allowing the queue backlog to grow until the queue is resumed, whereupon the backlog is sent to clients.
I was unable to find such a command. The commonest answer was that it should be managed at the client end -- that is, locate every consumer and stop it. Other answers were workarounds, like manipulating network routes or firewalls so that the clients and broker could no longer communicate.
A cursory survey of other message queues indicates that ActiveMQ is not unusual in this regard.
It seems to me there are two reasons this functionality might not be implemented:
- It is difficult to implement -- but I can't think of any reason why.
- It is counter to the design philosophy of message queues
Which is it, and why?