zoukankan      html  css  js  c++  java
  • 初试kafka消息队列中间件二(采用java代码收发消息)

    初试kafka消息队列中间件二(采用java代码收发消息)

    今天的案例主要是将采用命令行收发信息改成使用java代码实现,根据上一篇的接着写;

    先启动Zookeeper,然后启动Kafka,再创建消息主题;

    以上三步我就不重复了,不会的看上一篇即可


    maven依赖


        <dependency>
          <groupId>org.apache.kafka</groupId>
          <artifactId>kafka-clients</artifactId>
          <version>2.3.0</version>
        </dependency>

    发送消息的代码


    				import org.apache.kafka.clients.producer.KafkaProducer;
    				import org.apache.kafka.clients.producer.Producer;
    				import org.apache.kafka.clients.producer.ProducerRecord;
    				
    				import java.util.Properties;
    				
    				public class Test01 {
    				
    				    public static void main(String[] args){
    				        Properties properties = new Properties();
    				        properties.put("bootstrap.servers", "192.168.31.223:9092");
    				        properties.put("acks", "all");
    				        properties.put("retries", 0);
    				        properties.put("batch.size", 16384);
    				        properties.put("linger.ms", 1);
    				        properties.put("buffer.memory", 33554432);
    				        properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    				        properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    				        Producer<String, String> producer = null;
    				        try {
    				            producer = new KafkaProducer<String, String>(properties);
    				                String msg = "Message111122 " ;
    				               //此处的msg1代表消息的主题
    				                producer.send(new ProducerRecord<String, String>("msg1", msg));
    				                System.out.println("Sent:" + msg);
    				        } catch (Exception e) {
    				            e.printStackTrace();
    				
    				        } finally {
    				            producer.close();
    				        }				
    				    }
    				}
    		    

    接受消息的代码


    				import org.apache.kafka.clients.consumer.ConsumerRecord;
    				import org.apache.kafka.clients.consumer.ConsumerRecords;
    				import org.apache.kafka.clients.consumer.KafkaConsumer;
    				
    				import java.util.Arrays;
    				import java.util.Properties;
    				
    				public class Test02 {
    				    public static void main(String[] args){
    				        Properties properties = new Properties();
    				        properties.put("bootstrap.servers", "192.168.31.223:9092");
    				        properties.put("group.id", "group-1");
    				        properties.put("enable.auto.commit", "true");
    				        properties.put("auto.commit.interval.ms", "1000");
    				        properties.put("auto.offset.reset", "earliest");
    				        properties.put("session.timeout.ms", "30000");
    				        properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
    				        properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
    				
    				        KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(properties);
    				        kafkaConsumer.subscribe(Arrays.asList("msg1"));
    				        while (true) {
    				            ConsumerRecords<String, String> records = kafkaConsumer.poll(100);
    				            for (ConsumerRecord<String, String> record : records) {
    				                System.out.printf("offset = %d, value = %s", record.offset(), record.value());
    				                System.out.println();
    				            }
    				        }				
    				    }			
    				}
    		    

    结果:



    期间遇到过一些错误


    1、启动报错

    错误信息 :

    				SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    				SLF4J: Defaulting to no-operation (NOP) logger implementation
    				SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
                    

    处理 :

    缺少maven依赖
       <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-nop</artifactId>
          <version>1.7.24</version>
        </dependency>

    2、创建消息主题错误

    错误信息 :命令行创建消息主题提示已经存在

    说明以前创建的主题并没有删除 ,已存在的可以不用再创建,想要删除的需要去改配置,自行百度即可;

  • 相关阅读:
    Zabbix配置文件详解之服务端zabbix_server
    Ansible批量远程管理Windows主机(部署与配置)
    ansible简要说明
    zabbix自动发现与自动注册
    Linux获取UUID
    python爬虫练习之批量下载zabbix文档
    cmake编译c++程序
    spring中PropertyPlaceholderConfigurer的运用---使用${property-name}取值
    spring中<bean>中parent标签的使用
    用静态工厂的方法实例化bean
  • 原文地址:https://www.cnblogs.com/qq376324789/p/11327274.html
Copyright © 2011-2022 走看看