• 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);
    
        }
    }
  • 相关阅读:
    ADO.NET之使用DataSet类更新数据库
    ADO.NET之填充DataSet类
    ADO.NET之DataSet类
    ADO.NET之存储过程的调用(更删改查数据库)
    [Python]小甲鱼Python视频第011课(列表:一个打了激素的数组2)课后题及参考解答
    [Python]小甲鱼Python视频第010课(列表:一个打了激素的数组)课后题及参考解答
    [Python]小甲鱼Python视频第009课(了不起的分支和循环3)课后题及参考解答
    [Python]小甲鱼Python视频第007-008课(了不起的分支和循环)课后题及参考解答
    [Python]小甲鱼Python视频第006课(Pyhon之常用操作符)课后题及参考解答
    [Python]小甲鱼Python视频第005课(Python的数据类型)课后题及参考解答
  • 原文地址:https://www.cnblogs.com/a393060727/p/12894801.html
Copyright © 2020-2023  润新知