• ELK elasticsearch 与 springboot 结合使用,为了方便测试将MQ地址,索引名称写到配置文件中


    为了方便测试将MQ地址,索引名称写到配置文件中。

    想到使用springboot的@Value。

    不行,经过多番查找,最终这样做。

    1、es索引写在配置文件yml中

    配置文件application.yml:配置索引名称。

    search:
      index:
        video: chen_wk_video_index

    常量类:读取配置文件yml中的配置,将读取到的内容转换为bean。

    其中冒号后面表示读取不到的时候,给个默认值。这里没声明bean的id信息,就用默认的字段名称作为beanid

    @Component
    public class ElasticsearchConstants {
    /**视频*/
        @Value("${search.index.video:my_video_index}")
        private String SEARCH_INDEX_VIDEO;
        @Bean
        public String SEARCH_INDEX_VIDEO() {
            return SEARCH_INDEX_VIDEO;
        }
    }

    索引实体类:引用这里与实体类名字一致即可。

    @Data
    @Document(indexName = "#{@SEARCH_INDEX_VIDEO}", type = "_doc")
    public class IndexVideoEsVo extends BaseEsVo {
    }

    运行后在kibana后台看到,生成索引的名称就是配置名称。

    2、mq队列名称写在配置文件yml中

    配置文件yml,配置队列中要用到的信息。队列、交换机、路由键。。

    mq:
      my:
        exchange:
          video: chen_exchange_video
        queue:
          video: chen_exchange_video
        route:
          video: chen_exchange_video

    读取配置,配置映射关系。

    @Component
    public class RabbitMqConstants {
    //my视频索引
        public static String WK_my_EXCHANGE_VIDEO;
        @Value("${mq.my.exchange.video:wk_my_exchange_video}")
        private void setWK_my_EXCHANGE_VIDEO(String quuenName) {
            WK_my_EXCHANGE_VIDEO= quuenName;
        }
        //my视频队列
        public static String WK_my_QUEUE_VIDEO;
        @Value("${mq.my.queue.video:wk_my_queue_video}")
        private void setWK_my_QUEUE_VIDEO(String quuenName) {
            WK_my_QUEUE_VIDEO= quuenName;
        }
        //my视频路由键
        public static String WK_my_ROUTE_VIDEO;
        @Value("${mq.my.route.video:wk_my_route_video}")
        private void setWK_my_ROUTE_VIDEO(String quuenName) {
            WK_my_ROUTE_VIDEO= quuenName;
        }
    }
    // 配置队列、路由键、交换机关系
    @Configuration
    public class RabbitMqConfig { /*===========video====================*/ /** * 视频交换机 * @return */ @Bean public DirectExchange my_exchange_video() { return new DirectExchange(RabbitMqConstants.WK_my_EXCHANGE_VIDEO); } /** * 视频队列 * @return */ @Bean public Queue my_queue_video() { return new Queue(RabbitMqConstants.WK_my_QUEUE_VIDEO, true); } /** * my视频绑定 * @return */ @Bean public Binding my_queue_bulletin_video() { //链式写法: 用指定的路由键将队列绑定到交换机 return BindingBuilder.bind(my_queue_video()).to(my_exchange_video()).with(RabbitMqConstants.WK_my_ROUTE_VIDEO); } }

    监听队列:

    @Slf4j
    @Component
    @RabbitListener(queues = "${mq.my.queue.video}")
    public class myVideoListener {
     
        @Autowired
        private SearchVideoSenderService searchVideoSenderService;
        @Autowired
        private VideoEsController videoEsController;
    
        @RabbitHandler
        public void onMessage(String message) throws Exception {
            String messageContext = message;
            log.info(RabbitMqConstants.WK_my_QUEUE_VIDEO + "接收到内容:" + messageContext);
    
        }
    }
  • 相关阅读:
    ORACLE之ora01722和ORA01403的错误测试
    数据库事务的简单学习(一)
    oracle在线重定义(一)
    数据库拆表拆库的常用策略和PL/SQL代码经验谈(zt)
    如何杀掉Oracle的Session
    异步电机参数辨识
    如何下载专利
    电涡流测功机
    Matlab/Simulink 环境下的车用永磁电机系统仿真
    基本放大器电路,希望对各位有用。[转]
  • 原文地址:https://www.cnblogs.com/a393060727/p/12894801.html
Copyright © 2020-2023  润新知