栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

rabbitmq 配置并消费消息

rabbitmq 配置并消费消息

@Configuration
public class RabbbitConfig {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Value("${rabbitmq.host}")
    private String host;

    @Value("${rabbitmq.vhost}")
    private String vhost;

    @Value("${rabbitmq.port}")
    private int port;

    @Value("${rabbitmq.username}")
    private String userName;

    @Value("${rabbitmq.password}")
    private String password;


    public static final String EXCHANGE = "xalarm_aps_exchange_forward_to_component";


    public static final String QUEUE_iFace = "hik.alarm.hagzvisual.face";
    public static final String QUEUE_iVehicle = "hik.alarm.hagzvisual.vehicle";

    public static final String ROUTINGKEY_iFace = "iface";
    public static final String ROUTINGKEY_iVehicle = "ivehicle";


    //创建连接工厂
    @Bean(name = "connectionFactory")
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(host);
        connectionFactory.setVirtualHost(vhost);
        connectionFactory.setPort(port);
        connectionFactory.setUsername(userName);
        connectionFactory.setPassword(password);
        connectionFactory.setPublisherConfirms(true);
        return connectionFactory;
    }

//    @Bean
//    public RabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory){
//        //SimpleRabbitListenerContainerFactory发现消息中有content_type有text就会默认将其转换成string类型的
//        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
//        factory.setConnectionFactory(connectionFactory);
//        return factory;
//    }

    //创建人脸告警消息队列
    @Bean
    public Queue createIFaceQueue() {
        return new Queue(RabbbitConfig.QUEUE_iFace, true);
    }

    //创建车辆告警消息队列
    @Bean
    public Queue createIVehicleQueue() {
        return new Queue(RabbbitConfig.QUEUE_iVehicle, true);
    }

    //创建交换机
    @Bean
    public DirectExchange directExchange() {
        return new DirectExchange(RabbbitConfig.EXCHANGE, true, false);
    }

    //人脸告警队列与交换机进行绑定
    @Bean
    public Binding bindingDirectIFace() {
        return BindingBuilder.bind(createIFaceQueue()).
                to(directExchange()).
                with(RabbbitConfig.ROUTINGKEY_iFace);
    }


    //车辆告警队列与交换机进行绑定
    @Bean
    Binding bindingFanoutIVehicle() {
        return BindingBuilder.bind(createIVehicleQueue()).
                to(directExchange()).
                with(RabbbitConfig.ROUTINGKEY_iVehicle);
    }
}
@Component
public class FaceAlarmCustomer {

    private static final Logger logger = LoggerFactory.getLogger(FaceAlarmCustomer.class);

    @Autowired
    WarningService warningService;


    @RabbitListener(bindings = {@QueueBinding(value = @Queue(value = RabbbitConfig.QUEUE_iFace, durable = "true"), exchange = @Exchange(value = RabbbitConfig.EXCHANGE), key = RabbbitConfig.ROUTINGKEY_iFace)})
    @RabbitHandler
    public void processDirectMsg(Message msg) {
        String message = new String(msg.getBody(), StandardCharsets.UTF_8);
        logger.info("FaceAlarmCustomer 接收到人脸消息 : " + message);


        if (!HikStringUtil.isEmpty(message)) {

            FaceWarningToCache faceWarningToCache = new FaceWarningToCache(message);
            faceWarningToCache.start();
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676797.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号