rabbitMq 是什么?
創(chuàng)新互聯(lián)是專業(yè)的嘉祥網(wǎng)站建設(shè)公司,嘉祥接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行嘉祥網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
RabbitMQ是實(shí)現(xiàn)了高級(jí)消息隊(duì)列協(xié)議(AMQP)的開(kāi)源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務(wù)器是用Erlang語(yǔ)言編寫(xiě)的,而群集和故障轉(zhuǎn)移是構(gòu)建在開(kāi)放電信平臺(tái)框架上的。所有主要的編程語(yǔ)言均有與代理接口通訊的客戶端庫(kù)。
rabbitMq 可以做什么?
消息系統(tǒng)允許軟件、應(yīng)用相互連接和擴(kuò)展.這些應(yīng)用可以相互鏈接起來(lái)組成一個(gè)更大的應(yīng)用,或者將用戶設(shè)備和數(shù)據(jù)進(jìn)行連接.消息系統(tǒng)通過(guò)將消息的發(fā)送和接收分離來(lái)實(shí)現(xiàn)應(yīng)用程序的異步和解偶.
或許你正在考慮進(jìn)行數(shù)據(jù)投遞,非阻塞操作或推送通知。或許你想要實(shí)現(xiàn)發(fā)布/訂閱,異步處理,或者工作隊(duì)列。所有這些都可以通過(guò)消息系統(tǒng)實(shí)現(xiàn)。
RabbitMQ是一個(gè)消息代理 - 一個(gè)消息系統(tǒng)的媒介。它可以為你的應(yīng)用提供一個(gè)通用的消息發(fā)送和接收平臺(tái),并且保證消息在傳輸過(guò)程中的安全。
如何使用:
spring boot 使用消息隊(duì)列
pom 引入依賴
org.springframework.boot
spring-boot-starter-amqp
org.springframework.boot
spring-boot-starter-web
application.yml
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
配置queue
@Configuration
public class RabbitConfig {
//queue
@Bean
public Queue helloQueue() {
return new Queue("hello");
}
@Bean
public Queue topicMessage() {
return new Queue("topic.message");
}
@Bean
public Queue fanoutQueue() {
return new Queue("fanout.A");
}
//exchange
@Bean
TopicExchange exchange() {
return new TopicExchange("exchange");
}
@Bean
FanoutExchange fanoutExchange() {
return new FanoutExchange("fanoutExchange");
}
//bind
//綁定單個(gè)topicExchange
@Bean
Binding bindingExchangeMessage(Queue topicMessage, TopicExchange exchange) {
return BindingBuilder.bind(topicMessage).to(exchange).with("topic.message");
}
//綁定多個(gè)topicExchange
@Bean
Binding bindingExchangeMessages(Queue topicMessage, TopicExchange exchange) {
return BindingBuilder.bind(topicMessage).to(exchange).with("topic.#");
}
//綁定單個(gè) fanoutExchange
@Bean
Binding bindingFanoutExchange(Queue fanoutQueue ,FanoutExchange fanoutExchange) {
return BindingBuilder.bind(fanoutQueue).to(fanoutExchange);
}
}
3.配置消費(fèi)者
@Component
@RabbitListener(queues= {"hello"})
public class HelloReceive {
@RabbitHandler
public void helloProcess(String message){
System.out.println(message);
}
}
配置生生產(chǎn)者
@Component
public class HelloSender {
@Autowired
AmqpTemplate amqpTemplate;
public void sendHello(String message){
amqpTemplate.convertAndSend("hello",message);
}
}
5 .測(cè)試接口
@RestController
@RequestMapping("/rabbit")
public class RabbitController {
@Autowired
HelloSender helloSender;
@RequestMapping("/hello")
public Object helloRabbit(String message){
helloSender.sendHello(message);
return "success";
}
}