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生產一條消息放入隊列內,而消費者也去隊列內獲取了消息,說明代碼是正確的.隊列
以上,均爲本人測試而得出的結果,可能會有出入,或者錯誤,歡迎指正
歡迎轉載,請註明出處跟做者,謝謝!