zoukankan      html  css  js  c++  java
  • 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);
    
        }
    }
  • 相关阅读:
    Spark:大数据的“电光石火”
    Android开发-取消程序标题栏或自定义标题栏
    Android中实现圆角矩形及半透明效果。
    Android中设定背景图片平铺。
    收到的电邮附件为Winmail.dat?
    Runas命令:能让域用户/普通User用户以管理员身份运行指定程序。
    AD域服务器|两台DC无法进行复制同步
    IIS服务器运行一段时间后卡死,且无法打开网站(IIS管理无响应,必须重启电脑)
    Outlook不能打开附件(提示:无法创建文件xx,请右键单击要在其中创建文件的文件夹..)
    点击自动显示/隐藏DIV代码。(简单实用)
  • 原文地址:https://www.cnblogs.com/a393060727/p/12894801.html
Copyright © 2011-2022 走看看