在我的應用程序中,我有2個差異mq conn factory beans。爲此我有兩個不同的DefaultJmslistenercontainerfactory beans ex cf1 n cf2。每個DefaultJmslistenercontainerfactory bean都在單獨的@JmsListener中被引用。 ..現在我想開始以編程方式停止每個listrner,因爲我重寫了configureMessageListeners(JmsListenerRegistrar)方法,我可以在其中設置DefaultJmslistenercontainerfactory實例。注意我只能設置一個實例。 然後在我的代碼中,我得到JmsListenerRegistry的spring實例,從中我可以得到列表dmlc..which我可以開始n停止 但是。 。因爲我只設置了一個DefaultJmslistenercontainerfactory實例,所以我的代碼只返回一個dmlc .. 這裏的問題是如何在configureJmsListener()方法中傳遞多個DefaultJmslistenercontainerfactory實例? 注 - 我不手動創建dmlc ..我只是配置了工廠..配置多個DefaultJmslistenercontainerfactory
2
A
回答
4
爲什麼使用configureMessageListeners()
?這是用於編程端點註冊,不影響@JmsListener
的配置。
顯示您的配置(編輯問題,不要嘗試在註釋中張貼代碼/配置)。
這工作得很好,我...
@Bean
public JmsListenerContainerFactory<DefaultMessageListenerContainer> one(
@Qualifier("jmsConnectionFactory1") ConnectionFactory cf) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(cf);
return factory;
}
@Bean
public JmsListenerContainerFactory<DefaultMessageListenerContainer> two(
@Qualifier("jmsConnectionFactory2") ConnectionFactory cf) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(cf);
return factory;
}
@JmsListener(id="fooListener", destination="foo", containerFactory="one")
public void listen1(String payload) {
System.out.println(payload + "foo");
}
@JmsListener(id="barListener", destination="bar", containerFactory="two")
public void listen2(String payload) {
System.out.println(payload + "bar");
}
...
@Autowired
JmsListenerEndpointRegistry registry;
...
MessageListenerContainer fooContainer = registry.getListenerContainer("fooListener");
MessageListenerContainer barContainer = registry.getListenerContainer("barListener");
您還可以使用registry.getListenerContainers()
得到一個集合。
我以爲我在my answer to your other question解釋了所有這一切。
相關問題
- 1. 多個Zend_Cache配置?
- 2. 多個gretty配置
- 3. DefaultJmsListenerContainerFactory和併發連接不關閉
- 4. 多個導航欄配置?
- 5. Freemarker多個配置實例
- 6. 多個量角器配置
- 7. 多個log4j實例配置
- 8. Nginx的配置多個URL
- 9. 多個neo4j實例配置
- 10. NGINX多個proxy_pass配置
- 11. Spring,多個Hibernate Sessionfactories配置
- 12. 多個Eclipse配置文件
- 13. 多個Google配置服務
- 14. C# - 多個Prod配置
- 15. 貝哈特多個配置
- 16. 多個數據庫配置
- 17. jQuery.event.drop使用多個配置
- 18. 配置多個項目
- 19. 多個數據源配置
- 20. 多個數據源配置
- 21. 配置Apache與多個ProxyPass
- 22. Rails 4多個SMTP配置
- 23. tmux配置多個變量
- 24. 多個TypeScripts文件配置
- 25. Sinatra - 多個配置塊
- 26. 多個配置文件
- 27. Eclipse運行配置 - 在單個配置中運行多個配置?
- 28. 每個分發預配置配置文件多個證書
- 29. 多彈簧配置文件(每個配置文件一個)
- 30. 在一個配置中配置多個WCF綁定或服務
是的,得到了你的答案。我認爲它會爲不同的DefaultJmsListenerContainerFactory實例創建多個註冊表。有什麼辦法可以動態地獲取聽衆的ID嗎?我想在屏幕上顯示偵聽器的ID及其運行狀態。 MessageListenerContainer沒有提供API。 – user3534483
目前還沒有API來獲取偵聽器容器ID列表。 我打開了一個可以跟蹤的[JIRA問題](https://jira.spring.io/browse/SPR-13633)。 –
感謝您的幫助 – user3534483