springBoot+ActiveMQ訊息佇列安裝測試
阿新 • • 發佈:2018-11-04
1.ActiveMQ下載安裝(我使用的是5.14.0版本):
下載連結地址: http://activemq.apache.org/activemq-5140-release.html
2.1 Windows平臺MQ啟動(根據自己不同的計算機配置選擇32位或64位):
2.2 Linux平臺ActiveMQ安裝:
解壓啟動
tar -zxvf apache-activemq-5.14.0-bin.tar.gz
cd apache-activemq-5.14.0
cd bin
./activemq start
啟動之後在瀏覽器輸入地址 http://127.0.0.1:8161
預設登入使用者名稱,密碼都是admin
3.springBoot專案建立訊息傳送方:
3.1jar包依賴:
<!--ActifavrMQ依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> </dependency>
3.2springBoot啟動類
import org.apache.activemq.command.ActiveMQQueue; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling //宣告定時任務 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class,args); } }
3.3 佇列物件配置
import com.zenithink.demo.utils.ScheduledUtil;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ScheduledConfig {
@Bean
public ActiveMQQueue queue() {
return new ActiveMQQueue("promoteAct");
}
}
3.4 訊息佇列傳送端測試程式碼:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.jms.Queue;
@Component
public class PromoteActProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Queue queue;
private static int a=1;
@Scheduled(fixedDelay = 2000) // 每2s執行1次
public void send() {
a++;
this.jmsMessagingTemplate.convertAndSend(queue, "訊息生產端產生訊息"+a);
}
}
3.5 application.properties佇列連結配置:
#訊息佇列連結配置
spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.inmemory=false
#true表示使用連線池
spring.activemq.pool.enabled=true
#連線池最大連線數
spring.activemq.pool.max-connections=5
#空閒的連線過期時間,預設為30秒
spring.activemq.pool.idle-timeout=30000
#強制的連線過期時間,預設為0,never
spring.activemq.pool.expiry-timeout=0
3.springBoot專案建立訊息消費方:
3.1jar包依賴:
<!--ActifavrMQ依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
</dependency>
3.2 springBoot專案啟動類:
import com.zenithink.dubbo.service.DubboConsumerService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling //宣告定時任務
public class ZenithinkDubboApplication {
public static void main(String[] args) {
SpringApplication.run(ZenithinkDubboApplication.class);
}
}
3.3 佇列訊息消費端測試程式碼:
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class PromoteActConsumer {
/**
* 客戶端消費
* @param consumer
*/
@JmsListener(destination = "promoteAct")
public void receiveQueue(String consumer) {
System.out.println(consumer+"訊息已經消費了");
}
}
3.4 application.properties佇列連結配置:
#訊息佇列連結配置
spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.inmemory=false
#true表示使用連線池
spring.activemq.pool.enabled=true
#連線池最大連線數
spring.activemq.pool.max-connections=5
#空閒的連線過期時間,預設為30秒
spring.activemq.pool.idle-timeout=30000
#強制的連線過期時間,預設為0,never
spring.activemq.pool.expiry-timeout=0
4.分別啟動訊息傳送方和消費方:
傳送方
消費方
瀏覽器檢視訊息佇列
這樣就完成了簡單的訊息佇列!