一.rabbitMQ配置
## RabbitMQ 配置# RabbitMQ服务的地址
#spring.rabbitmq.host=172.168.1.218
spring.rabbitmq.host=192.168.1.192
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=1qaz@WSX
# RabbitMQ 服务创建的虚拟主机(非必须)
spring.rabbitmq.virtual-host=/
spring.rabbitmq.publisher-confirm-type = correlated
mq.enable=true
mq.iot.warning-queue.name=iot.identify.point
mq.iot.warning-queue.exchange=camera.monitoring
mq.iot.warning-queue.route=open
二.自动创建队列及交换机,绑定关系配置
import javax.annotation.Resource;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Configuration
@ConditionalOnProperty(prefix = "mq", name = "enable", havingValue = "true")
public class TopicRabbitConfig {
@Resource
RabbitAdmin rabbitAdmin;
@Value("${mq.iot.warning-queue.exchange}")
private String exchange;
@Value("${mq.iot.warning-queue.name}")
private String queue;
@Bean
TopicExchange topicExchange() {
return new TopicExchange(exchange, true, false);
}
@Bean
public Queue pointQueue() {
return new Queue(queue, true, false, false);
}
@Bean
Binding bindingPoint() {
return BindingBuilder.bind(pointQueue()).to(topicExchange()).with(queue);
}
@Bean
public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
rabbitAdmin.setAutoStartup(true);
return rabbitAdmin;
}
@Bean
public void createExchangeQueue() {
rabbitAdmin.declareExchange(topicExchange());
rabbitAdmin.declareQueue(pointQueue());
}
}
三.推送消息
import javax.annotation.Resource;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;
import ktw.micro.service.things.dto.IdentifyDto;
@Component
public class MessageService {
@Resource
private RabbitTemplate rabbitTemplate;
public void produce(String routingKey, IdentifyDto identifyDto) {
rabbitTemplate.convertAndSend(routingKey, identifyDto);
}
}