Если вы знакомы с управляемыми сообщениями EJB-компонентами, тогда Spring MessageListenerContainer фактически заменяет MDB. Он получил свое имя, потому что он связан с темой / очередью JMS, а также одним JMS MessageListener, и он извлекает сообщения из этой темы / очереди и передает их в MessageListener.
Вы совершенно правы, что только один MessageListener может быть зарегистрирован в каждом контейнере за раз, но учтите, что хотя код MessageListenerContainer может быть довольно сложным, на самом деле это очень легкий компонент времени выполнения. Не бойтесь создавать несколько его экземпляров.
Кроме того, убедитесь, что вы выбрали соответствующую реализацию MessageListener для вашей ситуации. Реализация Simple и Default действительно сильно отличается, но ни одна из них не «лучше».