您需要自定義由註釋創建的偵聽器容器定義。
添加傾聽器容器工廠@Bean
(請參閱the documentation)並將autoStartup
屬性設置爲false
。
setAutoStartup(false);
需要通過獲得通過JmsListenerEndpointRegistry
bean的引用然後就可以開始每個容器。這些容器本身不是豆 - 從它的javadoc ...
...
* <p>Contrary to {@link MessageListenerContainer}s created manually, listener
* containers managed by registry are not beans in the application context and
* are not candidates for autowiring. Use {@link #getListenerContainers()} if
* you need to access this registry's listener containers for management purposes.
* If you need to access to a specific message listener container, use
* {@link #getListenerContainer(String)} with the id of the endpoint.
...
我看不到我如何調用DefaultMessageListenerContainer.setAutoStartup(false)。我正在使用Java Config並擁有一個@Bean,它提供了一個如文檔中所示的DefaultJmsListenerContainerFactory。但是工廠沒有setAutoStartup方法。 – sudr
是的,它位於超類'AbstractJmsListenerContainerFactory';它在創建容器時傳播到實際的偵聽器容器。參見'createListenerContainer()'。 –
感謝您的確認。我發現這是在Spring 4.2中添加的,如https://jira.spring.io/browse/SPR-12824 – sudr