zoukankan      html  css  js  c++  java
  • Spring整合kafka消费者和生产者&redis的步骤&es的步骤

    ==================================================================================
    一.整合kafka(生产者)步骤
    1.导入依赖(pom.xml)
    2.编写配置文件,修改配置文件的ip和端口号,修改主题(producer.xml)
    3.如果再ssm项目中可以让spring.xml来加载这个配置文件
    <import resource="classpath:XXX.xml" />
    如果是再测试类中如何加载?
    @RunWith(SpringJUnit4ClassRunner.class)
    //加载生产者的配置
    @ContextConfiguration("classpath:producer.xml")
    4.就可以在代码中所需的位置进行注入:
    @Autowired
    KafkaTemplate<String, String> kafkaTemplate;
    然后就可以直接调用send方法来发送消息 了!!(如果我们发送的是对象,一般情况下,会把对象转成json再发送)
    kafkaTemplate.send("cms_articles",jsonString);

    二.整合kafka消费者的步骤
    1.导入依赖(pom.xml)
    2.编写配置文件,修改ip和端口号,和监听的主题,指定监听器类的位置(consumer.xml)
    3.如果再ssm项目中可以让spring.xml来加载这个配置文件
    <import resource="classpath:XXX.xml" />
    如果在测试类中:
    //先启动消费者,因为只有消费者先启动,kafka生产者发来的消息,才能时刻被接收到.
    public static void main(String[] args) {
    //加载消费者的配置文件!
    new ClassPathXmlApplicationContext("classpath:consumer.xml");
    }
    4.编写监听器的类
    让这个类实现MessageListener<String,String> 接口,重写onMessage方法
    这个方法就是监听消息的方法
    //监听爬虫项目发来的文章的json串
    public class ArticleListener implements MessageListener<String, String>{
    //就是监听消息的方法
    @Override
    public void onMessage(ConsumerRecord<String, String> data){
    //在这里就可以调用方法来接收消息
    String msg = data.value();
    }
    };
    ==================================================================================
    三.整合redis的步骤
    1.导入依赖(pom.xml)
    2.编写配置文件,修改ip和端口
    3.让spring.xml加载redis.xml
    4.可以在代码的位置注入RedisTemplate
    5.就可对redis进行crud了

    redis优化步骤(缓存)
    /////////////第一次访问
    1.用户第一次访问的时候,从redis中查询数据
    2.判断redis中查询的数据是否为空
    3.如果为空,就意味着是第一次访问,就从mysql中查询数据,并且往redis中保存一份,返回给前台
    //////////////////第2,3,4...次访问
    4.如果不为空,就意味着不是第一次访问,直接返回给前台
    ==================================================================================
    四.整合ElasticSearch的步骤
    1.导入依赖(pom.xml)
    2.编写配置文件(es.xml)
    3.修改ip地址和端口号&&修改仓库接口的包扫描位置
    4.让spring来加载es.xml
    <import resource="classpath:es.xml" />
    5.在第3步仓库接口包的位置,创建一个仓库接口XXXRepository
    6.让仓库接口继承ElasticSearchRepository,之后就自动具备了简单的CRUD的方法
    extends ElasticsearchRepository<User, Integer>
    7.声明实体类的各种注解(指定索引库名,表名,主键,实体类属性存储参数)
    //指定了库名(库名必须用纯小写的名字,不允许有特殊字符,否则就报错),指定了表名
    @Document(indexName="test_user",type="user")
    @Id
    //指定name的值是否索引,2.是否存储3.name的值的分词方式 4.搜索的关键字分词的方式 5指定该字段的值以什么样的数据类型来存储
    @Field(index=true,store=true,analyzer="ik_smart",searchAnalyzer="ik_smart",type=FieldType.text)
    8可以在任意位置进行注入仓库接口,也可以注入ElasticSearchTemplate
    @Autowired
    UserRespository respository;
    @Autowired
    ElasticsearchTemplate elasticsearchTemplate;
    就可以调用crud方法了
    注意:如果要进行复杂点的查询,此时,需要我们自定义方法.自定义方法的规则必须按照命名规则来进行为方法命名
    具体示例:
    List<User> findByName(String name);

    //根据地址查询
    // List<User> findByAddress(String address);
    //
    // //根据地址和姓名查询
    // List<User> findByAddressAndName(String address,String name);

    // //根据地址或姓名查询
    // List<User> findByAddressOrName(String address,String name);

    //查询id小于5的数据
    // List<User> findByIdLessThan(int id);

    //查询价格在多少-多少之间的
    List<User> findByPriceBetween(double money,double money)

  • 相关阅读:
    建议使用nullptr而不是NULL
    二叉树的遍历(三种遍历方式,前中后序;递归,栈,迭代实现)
    455.分发饼干Easy Leetcode
    java 报错:Implicit super constructor Point() is undefined. Must explicitly invoke another constructor
    求解字符串所包含子串的个数
    数组去重
    vue watch
    mysql设置指定字段不能为负数
    Shell脚本监控服务存活状态及异常,并触发钉钉webhook报警
    Shell常用语法
  • 原文地址:https://www.cnblogs.com/liujinqq7/p/12421802.html
Copyright © 2011-2022 走看看