spring-boot集成activeMQ(一)-使用默認的ActiveMQ

spring-boot集成ActiveMQ很簡單,都不須要安裝什麼,由於默認使用的就是內存的ActiveMQ,由於是測試配合使用,因此此次就不使用ActiveMQ Server了,通常業務都是使用ActiveMQ Server,下篇在介紹使用ActiveMQ Server

 

先來講說個人環境吧: jdk版本號是1.8,springboot的版本號是1.4.1java

 

先來看看pom文件,引入的依賴web

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.4.1.RELEASE</version>
   <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
   <java.version>1.8</java.version>
</properties>

<dependencies>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
   </dependency>
   <!--引入該jar包,能夠使用默認的ActiveMQ-->
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-activemq</artifactId>
   </dependency>
</dependencies>

而後是項目結構:spring

 

首先,咱們分析下,做爲隊列消息,確定是須要一個生產者,一個消費者,以及一個倉庫(也就是隊列,用來存放生產者生產的消息,消費者從這取出消息進行處理)

 

有思路了,就好作了,首先,咱們先構建一個生產者,代碼以下springboot

/**
 * 項目名:SpringBootDemo
 * 建立人:賀小五
 * 建立時間:16/11/27 下午3:59
 * 類名:MessageVo
 * 類描述:
 *        消息生產者
 */
//註冊爲一個bean
@Component
//開啓定時器
@EnableScheduling
public class MessageProduction {

   @Autowired
   private JmsMessagingTemplate jmsMessagingTemplate;//使用JmsMessagingTemplate將消息放入隊列

   @Autowired
   private Queue queue;

   @Scheduled(fixedDelay = 3000)//每3s執行1次,將消息放入隊列內
   public void send() {
      this.jmsMessagingTemplate.convertAndSend(this.queue, "測試消息隊列"+System.currentTimeMillis()/1000);
   }
}

 

 

生產者有了,接下來就是消費者了,消費者代碼以下:spring-boot

/**
 * 項目名:SpringBootDemo
 * 建立人:賀小五
 * 建立時間:16/11/27 下午4:00
 * 類名:MessageListener
 * 類描述:
 *        消息監聽者
 */
@Component
public class MessageListener {

   /**使用@JmsListener註解來監聽指定的某個隊列內的消息,是否有新增,有的話則取出隊列內消息
   *進行處理
   **/
   @JmsListener(destination="my-message")
   public void removeMessage(String msg){
      System.out.println("監聽接收到的消息是:"+msg);//打印隊列內的消息
   }

}

 

消費者,生產已經有了,那下面就看倉庫代碼吧,代碼以下:測試

/**
 * 項目名:SpringBootDemo
 * 建立人:賀小五
 * 建立時間:16/11/27 下午3:57
 * 類名:MessagePush
 * 類描述:
 *        隊列消息發送者
 */
@Component
public class MessageQueue {

   //返回一個名爲my-message的隊列,而且註冊爲bean
   @Bean
   public Queue queue(){
      return new ActiveMQQueue("my-message");
   }

}

 

三者都有了,下面就是測試看看隊列是否生效ui

執行下面代碼的main方法this

@SpringBootApplication(scanBasePackages = {"com"})//掃描com包的註解類爲bean
public class DemoApplication{

   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }

 

打印結果爲:spa

能夠看到,生產者每隔3S生產一條消息放入隊列內,而消費者也去隊列內獲取了消息,說明代碼是正確的.隊列

 

以上,均爲本人測試而得出的結果,可能會有出入,或者錯誤,歡迎指正

 

歡迎轉載,請註明出處跟做者,謝謝!

相關文章
相關標籤/搜索