我正在使用Spring boot应用程序向Kafka主题发送JSON数据数组,但得到以下错误:
error :org.apache.kafka.common.config.ConfigException: Invalid value
org.apache.kafka.common.serialization.StringSerializer; for
configuration key.serializer: Class
org.apache.kafka.common.serialization.StringSerializer; could not be found.
props.put("key.serializer", org.apache.kafka.common.serialization.StringSerializer;");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer;");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer;");
props.put("value.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer;");
配置文件和服务文件代码:
@Configuration
public class KafkaProducerConfig {
@Bean
private static ProducerFactory<String, String> producerConfig() {
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer;");
props.put("value.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer;");
// The following properties are used by LiKafkaProducerImpl
props.put("large.message.enabled", "true");
props.put("max.message.segment.bytes", 1000 * 1024);
props.put("segment.serializer", DefaultSegmentSerializer.class.getName());
props.put("auditor.class", LoggingAuditor.class.getName());
return new DefaultKafkaProducerFactory(props);
}
}
@Service
public class KafkaSender {
private static final Logger LOGGER = LoggerFactory.getLogger(KafkaSender.class);
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@Value("${kafka.topic.name}")
private String topicName;
public void sendData(List<Student> student) {
System.out.println("Inside Student"+ student.toString());
System.out.println("Inside Student"+ student);
// TODO Auto-generated method stub
Map<String, Object> headers = new HashMap<>();
headers.put(KafkaHeaders.TOPIC, topicName);
System.out.println("\nStudent= " + headers);
// Construct a JSONObject from a Map.
JSONObject HeaderObject = new JSONObject(headers);
System.out.println("\nUsing new JSONObject() ==> " + HeaderObject);
final String record = HeaderObject.toString();
final int recordSize = record.length();
kafkaTemplate.send(new GenericMessage<>(student, headers));
LOGGER.info("Data - " + student + " sent to Kafka Topic - " + topicName);
}
}
发布JSON:
[{“学生ID”:“Q45678123”,“名字”:“ABC”,“名字”:“XYZ”,“年龄”:“12”,“地址”:{“公寓”:“公寓123”,“街道”:“街道信息”,“州”:“州”,“城市”:“城市”,“邮编”:“12345”}},{“学生ID”:“Q45678123”,“名字”:“ABC”,“名字”:“XYZ”,“年龄”:“12”,“地址”:{“公寓”:“公寓123”,“街道”:“街道信息”,“州”:“州”,“城市”:“邮编”:“12345”}}
您需要删除值末尾的分号
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer");
或者,您可以使用class.getName()
方法,就像对段序列化器所做的那样,我建议这样做更安全,因为这样可以保证所需的序列化器在编译时可用
我正在尝试使用注释获得简单的Spring应用程序,但我在运行应用程序时遇到异常... 严重:组织上下文初始化失败。springframework。豆。工厂CannotLoadBeanClassException:找不到在ServletContext资源[/web-INF/mvc dispatcher servlet.xml]中定义的名为“viewResolver”的bean的类[org.sprin
问题内容: 我已经安装了两个jdk-jdk 1.5和jdk 1.8。我有以下Ant build.xml配置文件: 在安装jdk1.8之前,从Eclipse调用的Ant成功编译了所有源代码。但是现在,我有以下错误消息: 我的JAVA_HOME和JRE_HOME: 并在Eclipse JRE中将其设置为1.5。Java 1.8在安装过程中会设置一些配置吗? 问题答案: 已知低于1.9.0的Apache
我已经安装了两个JDK--JDK1.5和JDK1.8。我有以下Ant build.xml配置文件: 在安装JDK1.8之前,从Eclipse调用的Ant成功地编译了所有源代码。但现在,我有以下错误消息: 我的JAVA_HOME和JRE_HOME: 并在Eclipse JRE中设置为1.5。Java 1.8在安装过程中是否设置了一些配置?
问题内容: 我试图使用SpringJUnit4ClassRunner创建一个单元测试,但是每次执行测试时,它都说它无法使用mvn install找到SpringJUnit4ClassRunner。 这是我的代码 这是我的POM文件: 我正在使用适合IDE的springSource工具开发此spring mvc应用程序,并且在IDE上将SpringJUnit4ClassRunner突出显示为错误,尽
问题内容: 我正在尝试使用Jersey框架构建RESTFul客户端,因此添加了以下类: 但是,即使我在WEB-INF / lib和应用程序类路径下有以下jar,我也找不到未找到的错误类ClientBuilder: 所以有人可以告诉我我在这里想念的那个罐子吗?在哪里可以找到它?我搜索了Web,发现唯一具有ClientBuilder的jar与RESTEasy框架有关,所以我认为这没有关系。 谢谢你的时
问题内容: 我一直在尝试在脚本中打开Word文档,但收到相同的错误。 我的代码: 我试图更改和删除部分中的分号。 仍然出现相同的错误。 我在Mac和基于Linux的虚拟主机上使用的。 问题答案: 从PHP 5.4.5开始,COM和DOTNET不再内置在php内核中。您必须在php.ini中添加COM支持: 否则,您将在错误日志中看到此消息:致命错误:未找到类“ COM” 该扩展包含在Windows