'org.springframework.jms.core.JmsMessagingTemplate' that could not be found?

程序啓動報錯如下

 

百度之後,基本上都是第一種解決方法:

  1. 配置文件末尾有空格,去掉空格就行。(X)
  2. 添加以下代碼
    @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思想相違背。還有個問題,後面講。

  3. 引入下面這個jar包,JmsMessagingTemplate注入成功

    <dependency>
        <groupId>org.messaginghub</groupId>
        <artifactId>pooled-jms</artifactId>
        <version>1.0.3</version>
    </dependency>

     

看上去方法2,3都解決的JmsMessagingTemplate注入失敗的問題,但是當我們用JMeter來做一下性能測試,就會發現2方法又出現了新的問題,3纔是完美的解決方法。

  1. 最大連接數設置爲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根本就沒有創建連接池,或者說是連接池的配置無效,連接數到了一定的時候便開始每個請求都去創建一次連接。因此不推薦這種做法。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章