程序啓動報錯如下:
百度之後,基本上都是第一種解決方法:
- 配置文件末尾有空格,去掉空格就行。(X)
- 添加以下代碼
@Bean ConnectionFactory connectionFactory() { return new ActiveMQConnectionFactory(); } @Bean JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) { JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory); jmsTemplate.setPriority(999); return jmsTemplate; } @Bean(value="jmsMessagingTemplate") JmsMessagingTemplate jmsMessagingTemplate(JmsTemplate jmsTemplate) { JmsMessagingTemplate messagingTemplate = new JmsMessagingTemplate(jmsTemplate); return messagingTemplate; }
啓動是正常了,但是感覺怪怪的,還得自己聲明bean。與spring的IOC思想相違背。還有個問題,後面講。
-
引入下面這個jar包,JmsMessagingTemplate注入成功
<dependency> <groupId>org.messaginghub</groupId> <artifactId>pooled-jms</artifactId> <version>1.0.3</version> </dependency>
看上去方法2,3都解決的JmsMessagingTemplate注入失敗的問題,但是當我們用JMeter來做一下性能測試,就會發現2方法又出現了新的問題,3纔是完美的解決方法。
- 最大連接數設置爲500
activemq: broker-url: tcp://127.0.0.1:61616 user: admin password: admin pool: enabled: true max-connections: 500 idle-timeout: 30000s in-memory: true
JMeter,線程數數調成400,簡單調用一下,下面分別是法2和法3的運行結果:
結論:貌似法2根本就沒有創建連接池,或者說是連接池的配置無效,連接數到了一定的時候便開始每個請求都去創建一次連接。因此不推薦這種做法。