zoukankan      html  css  js  c++  java
  • 学习kafka自己发生的几个小错误记录

    一、  The method iterator() is ambiguous for the type KafkaStream<byte[],byte[]> 

            最近在学习消息总线Kafka的时候,在IDEA中写了一个简单的生产者和消费者demo。但是消费者端一直报错。错误信息如下:

      1  ConsumerIterator<byte[],byte[]> it =stream.iterator();
      2  这句代码老是报错,The method iterator() is ambiguous for the type KafkaStream<byte[],byte[]>

             后来博主在网上找了一些资料,解决方法记录一下:

             poom.xml文件如下:

      1 <dependencies>
      2       <dependency>
      3             <groupId>org.apache.kafka</groupId>
      4             <artifactId>kafka_2.9.2</artifactId>
      5             <version>0.8.1.1</version>
      6             <exclusions>
      7                 <exclusion>
      8                     <artifactId>jmxtools</artifactId>
      9                     <groupId>com.sun.jdmk</groupId>
     10                 </exclusion>
     11                 <exclusion>
     12                     <artifactId>jmxri</artifactId>
     13                     <groupId>com.sun.jmx</groupId>
     14                 </exclusion>
     15                 <exclusion>
     16                     <artifactId>jms</artifactId>
     17                     <groupId>javax.jms</groupId>
     18                 </exclusion>
     19                 <exclusion>
     20                     <groupId>org.apache.zookeeper</groupId>
     21                     <artifactId>zookeeper</artifactId>
     22                 </exclusion>
     23                 <exclusion>
     24                     <groupId>org.slf4j</groupId>
     25                     <artifactId>slf4j-log4j12</artifactId>
     26                 </exclusion>
     27                 <exclusion>
     28                     <groupId>org.slf4j</groupId>
     29                     <artifactId>slf4j-api</artifactId>
     30                 </exclusion>
     31             </exclusions>
     32         </dependency>
     33     </dependencies>
     34 
     35     <build>
     36         <plugins>
     37             <plugin>
     38                 <artifactId>maven-assembly-plugin</artifactId>
     39                 <configuration>
     40                     <descriptorRefs>
     41                         <descriptorRef>jar-with-dependencies</descriptorRef>
     42                     </descriptorRefs>
     43                     <archive>
     44                         <manifest>
     45                             <mainClass></mainClass>
     46                         </manifest>
     47                     </archive>
     48                 </configuration>
     49                 <executions>
     50                     <execution>
     51                         <id>make-assembly</id>
     52                         <phase>package</phase>
     53                         <goals>
     54                             <goal>single</goal>
     55                         </goals>
     56                     </execution>
     57                 </executions>
     58             </plugin>
     59             <!--<plugin>-->
     60                 <!--<groupId>org.apache.maven.plugins</groupId>-->
     61                 <!--<artifactId>maven-compiler-plugin</artifactId>-->
     62                 <!--<version>3.1</version>-->
     63                 <!--<configuration>-->
     64                     <!--<source>1.8</source>-->
     65                     <!--<target>1.8</target>-->
     66                     <!--<showWarnings>true</showWarnings>-->
     67                 <!--</configuration>-->
     68             <!--</plugin>-->
     69         </plugins>
     70     </build>

    首先将maven中的poom.xml文件中以下内容注释掉:

      1 <plugin>
      2   <groupId>org.apache.maven.plugins</groupId>
      3   <artifactId>maven-compiler-plugin</artifactId>
      4   <version>3.1</version>
      5   <configuration>
      6     <source>${jdk.version}</source>
      7     <target>${jdk.version}</target>
      8     <showWarnings>true</showWarnings>
      9   </configuration>
     10 </plugin>

    然后在自己的IDEA MAVEN项目中配置默认jdk版本:

    配置方法如下:

    第一种:在maven的安装目录找到settings.xml文件,在里面添加如下代码

      1 <profile>
      2     <id>jdk-1.8</id>
      3      <activation>
      4           <activeByDefault>true</activeByDefault>
      5           <jdk>1.8</jdk>
      6       </activation>
      7 <properties>
      8 <maven.compiler.source>1.8</maven.compiler.source>
      9 <maven.compiler.target>1.8</maven.compiler.target>
     10 <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
     11 </properties>
     12 </profile>

    添加完后,在对IDEA进行设置。file->setting->maven->user settings file,user settings file那里选择maven安装目录下的settings.xml文件.

    image

    第二种方法是在第一种的基础之上:user settings的默认settigs.xml文件路径为:C:UsersAdministrator.m2。只要把设置好的settings.xml文件复制到该目录下,然后update project就好了。

    二、kafka消费消息的时候一直打印DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x3638d0cc1260003 after 0ms

    我的问题是因为集群中的zookeeper版本是3.4.5。但是我在IDEA的poom.xml文件中又排除了zookeeper的jar包。将poom.xml文件中对zookeeper的排除注释掉就可以了。

    对exclusion解释:

         用maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题,好在pom的配置里面允许用<exclusion>来排除一些不需要同时下载的依赖jar 。

          比如配置kafka,它会同时下载jmxri和jmxtools等相关的jar,但版本又不够新,这时可以排除它们:

      1 <dependency>
      2             <groupId>org.apache.kafka</groupId>
      3             <artifactId>kafka_2.9.2</artifactId>
      4             <version>0.8.1.1</version>
      5             <exclusions>
      6                 <exclusion>
      7                     <artifactId>jmxtools</artifactId>
      8                     <groupId>com.sun.jdmk</groupId>
      9                 </exclusion>
     10                 <exclusion>
     11                     <artifactId>jmxri</artifactId>
     12                     <groupId>com.sun.jmx</groupId>
     13                 </exclusion>
     14                 <exclusion>
     15                     <artifactId>jms</artifactId>
     16                     <groupId>javax.jms</groupId>
     17                 </exclusion>
     18                 <!--<exclusion>-->
     19                     <!--<groupId>org.apache.zookeeper</groupId>-->
     20                     <!--<artifactId>zookeeper</artifactId>-->
     21                 <!--</exclusion>-->
     22                 <exclusion>
     23                     <groupId>org.slf4j</groupId>
     24                     <artifactId>slf4j-log4j12</artifactId>
     25                 </exclusion>
     26                 <exclusion>
     27                     <groupId>org.slf4j</groupId>
     28                     <artifactId>slf4j-api</artifactId>
     29                 </exclusion>
     30             </exclusions>
     31         </dependency>
  • 相关阅读:
    基于antd封装一个高可用form组件 减少cv代码导致的bug
    写一个umi插件 自动生成代码 解放cv的双手
    jquery.validate的一个bug
    ef6+mysql的bug
    angularJS使用ocLazyLoad实现js延迟加载
    postgresql,postgis,geoserver 发布地图服务,并用.net mvc openlayers3进行显示
    EF框架操作postgresql,实现WKT类型坐标的插入,查询,以及判断是否相交
    jquery validate 之多tab页同时校验问题
    js去除空格12种方法
    个人工具清单
  • 原文地址:https://www.cnblogs.com/gemine/p/9065087.html
Copyright © 2011-2022 走看看