rabbit集成springboot(队列模式)

一.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;

/**
 * @ClassName: TopicRabbitConfig
 * @Description: 主题交换机
 * @author: hyl
 * @date: 2022/7/12
 */
@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);
    }

    /**
     * 绑定交换机与队列 pointQueue只接收ws.identify.point消息,绑定key:ws.identify.point
     *
     * @return Binding
     */
    @Bean
    Binding bindingPoint() {
        return BindingBuilder.bind(pointQueue()).to(topicExchange()).with(queue);
    }

    //创建初始化RabbitAdmin对象
    @Bean
    public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
        // 只有设置为 true,spring 才会加载 RabbitAdmin 这个类
        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;

/**
 * @Description: 消息队列逻辑层
 * @Author: hyl
 * @Date: 2022/7/13
 **/
@Component
public class MessageService {

    @Resource
    private RabbitTemplate rabbitTemplate;

    public void produce(String routingKey, IdentifyDto identifyDto) {
        rabbitTemplate.convertAndSend(routingKey, identifyDto);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值