SpringBoot項目集成ArtemisMQ,那麼想動態的更換消息類型,怎麼辦呢?
通過設置org.springframework.jms.support.destination.JmsDestinationAccessor#setDestinationResolver 方法進行設置目的地解析器
- 將之設置爲 BeanFactoryDestinationResolver
- 默認提供的org.springframework.jms.support.destination.DynamicDestinationResolver 動態解析目的地實現類,只能在啓動配置文件配置屬性:spring.jms.pub-sub-domain = true/false ;全局使用的屬性值
- 第三種方式就是重寫 org.springframework.jms.support.destination.DynamicDestinationResolver 的解析提供的目的地名稱的核心代碼了,根據自己提供的名稱的規則解析爲指定的 隊列或者訂閱 模式
ArtemisMQ的性能調優章節,有一句
所以,需要自己進行緩存目標對象(例如,把目的地對象成爲Bean單例組件)
其中著名一句話,是Spring Jms是反模式
如果要更改 JmsTemplate.destinationResolver屬性,則指需在IOC容器中註冊一個 DestinationResolver 接口的實現類即可