<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
spring:
rabbitmq:
host: 192.168.1.222
port: 5672
username: by_ing
password: by_ing
virtual-host: /
package com.ha.elevator.config;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitmqConfig {
/**
* 队列
*/
public final static String ai = "ha.face.ai.queue";
public final static String ip = "ha.face.ip.test";
/**
* 交换机名称
*/
private final static String TOPIC_EXCHANGE = "TOPIC_EXCHANGE";
/**
* 匹配规则,#符号可以匹配多个单词,*号只能匹配一个单词
*/
private final static String BINDING_RULE_IP = "ha.face.ip.#";
private final static String BINDING_RULE_AI = "ha.face.ai.#";
/**
* 创建队列
*/
@Bean
public Queue ai() {
return new Queue(ai);
}
/**
* 创建队列
*/
@Bean
public Queue ip() {
return new Queue(ip);
}
/**
* 交换机
*
* @return
*/
@Bean
public TopicExchange topicExchange() {
return new TopicExchange(TOPIC_EXCHANGE);
}
/**
* 绑定交换机队列
*
* @return
*/
@Bean
public Binding bindingTest() {
return BindingBuilder.bind(ip()).to(topicExchange()).with(BINDING_RULE_IP);
}
@Bean
public Binding bindingTest2() {
return BindingBuilder.bind(ai()).to(topicExchange()).with(BINDING_RULE_AI);
}
}
package com.ha.mqtt.controller;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/rabbitmq")
public class RabbitmqController {
@Autowired
private AmqpTemplate rabbitmqTemplate;
public final static String ai = "ha.face.ai.queue";
public final static String ip = "ha.face.ip.test";
@PostMapping(value = "/send")
public String send(String msg) {
try {
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
rabbitmqTemplate.convertAndSend("TOPIC_EXCHANGE", ai, i + "++++++" + msg);
} else {
rabbitmqTemplate.convertAndSend("TOPIC_EXCHANGE", ip, i + "------" + msg);
}
}
return "SUCCESS";
} catch (Exception e) {
e.printStackTrace();
return "ERROR";
}
}
}
package com.ha.elevator.rabbitmq;
import com.ha.elevator.config.RabbitmqConfig;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class TopicReceiver1 {
@RabbitListener(queues = RabbitmqConfig.ai)
public void message1(String msg) {
System.out.println(msg + "--ai");
}
@RabbitListener(queues = RabbitmqConfig.ip)
public void message2(String msg) {
System.out.println(msg + "--ip");
}
}