什么是activeMQ
activeMQ是一種比較流行的消息隊(duì)列我們先到官網(wǎng)看看是怎么解釋這項(xiàng)技術(shù)的:
以下是我截取的比較重要的部分
Apache ActiveMQ? is the most popular open source, multi-protocol, Java-based messaging server. It supports industry standard protocols so users get the benefits of client choices across a broad range of languages and platforms. Connectivity from C, C++, Python, .Net, and more is available. Integrate your multi-platform applications using the ubiquitous AMQP protocol. Exchange messages between your web applications using STOMP over websockets. Manage your IoT devices using MQTT. Support your existing JMS infrastructure and beyond. ActiveMQ offers the power and flexibility to support any messaging use-case.
嗚嗚嗚松嘶,流下了看不懂英語(yǔ)的淚水凑兰,那我先概括一下(畢竟我也不懂)
ActiveMQ 是一種最流行的開(kāi)源的(open source)碴巾,多協(xié)議的(multi-protocol),基于java的消息傳遞服務(wù)器。它支持行業(yè)標(biāo)準(zhǔn)匾旭,因此用戶可以在多語(yǔ)言梯刚,多平臺(tái)上使用哈蝇,C,C++棺妓,python等等都可以用,無(wú)處不在的AMQP協(xié)議集成你的多平臺(tái)應(yīng)用炮赦,在websockets上怜跑,使用STOMP協(xié)議進(jìn)行在web應(yīng)用間交換數(shù)據(jù)。使用MQTT
管理您的IoT設(shè)備吠勘。支持您現(xiàn)有的JMS基礎(chǔ)結(jié)構(gòu)及其他性芬。ActiveMQ提供了強(qiáng)大的功能和靈活性來(lái)支持任何消息傳遞用例。
看完了理論部分剧防,我們來(lái)安裝并簡(jiǎn)單使用activeMQ植锉。
1.打開(kāi)官網(wǎng)https://activemq.apache.org/首頁(yè)就會(huì)顯示這個(gè)部分,直接點(diǎn)擊下載就好了峭拘。
下載完是醬嬸的
解壓后是醬嬸的
進(jìn)入bin俊庇,里面是醬嬸的
里面有一個(gè) activemq 的可執(zhí)行文件,打開(kāi) cmd鸡挠,執(zhí)行:activemq start
別的大佬教程都是這么說(shuō)的辉饱,但是我這么執(zhí)行出了問(wèn)題(可能是太菜了),然后我是這么執(zhí)行的
或者進(jìn)入win64 里面雙擊activemq
然后會(huì)出現(xiàn)
就成功了拣展,瀏覽器輸入http://localhost:8161/admin/ 賬號(hào)admin 密碼admin(別的大佬沒(méi)說(shuō)有賬號(hào)密碼啊彭沼,可能真的是我太菜了)
出現(xiàn)醬嬸的頁(yè)面就ok了
以上我們就安裝部署完成,現(xiàn)在我們先跑個(gè)代碼壓壓驚备埃。
打開(kāi)idea(idea是一款很好的ide姓惑,有免費(fèi)的社區(qū)版和收費(fèi)的旗艦版,學(xué)生可以通過(guò)自己的教育賬號(hào)免費(fèi)試用按脚,非學(xué)生還想用旗艦版自己研究怎么破解挺益,找找注冊(cè)碼就ok了。)
new-> project -> spring initializr ->改一下名字next->
next 選位置改名字
點(diǎn)擊finish就完成了乘寒。第一次時(shí)間會(huì)有點(diǎn)長(zhǎng),耐心等待匪补。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
這個(gè)是相關(guān)依賴伞辛,去pom看一下,要是沒(méi)導(dǎo)入就自己手動(dòng)導(dǎo)入一下夯缺,
application里面寫(xiě)入
#ActiveMQ配置
spring:
activemq:
broker-url: 'tcp://localhost:61616' #配置Broker URL蚤氏,默認(rèn)為tcp://localhost:61616
in-memory: true
pool:
enabled: false
建2個(gè)java文件,MessageConsumer和MessageProducer
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;
@Service
public class MessageConsumer {
@JmsListener(destination = "my-queue")
public void receiveMessage(String message){
System.err.println("接收到了消息: " + message);
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Service;
import javax.jms.Destination;
@Service
public class MessageProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
/**
* 發(fā)送消息
* @param destination 要發(fā)送到的隊(duì)列
* @param payload 待發(fā)送的消息
*/
public void sendMessage(Destination destination, String payload){
jmsMessagingTemplate.convertAndSend(destination,payload );
}
}
test文件里寫(xiě)入
import org.apache.activemq.command.ActiveMQQueue;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.jms.Destination;
@SpringBootTest
class ActivemqApplicationTests {
@Autowired
private MessageProducer producer;
@Test
void contextLoads() {
Destination destination = new ActiveMQQueue("my-queue");
for (int i = 1;i <= 100;i++){
producer.sendMessage(destination,"message-" + i);
}
}
}
運(yùn)行結(jié)果
寫(xiě)的不好踊兜,各位讀者見(jiàn)諒