- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,在 api 0.8.2 中,生产者的 Kakfa 配置属性发生了变化;在完成该工作并让我的 java Producer 编译之后,我得到了一个异常。生产者针对我的 Kafka_2.9.1-0.8.2.1 集群的节点,我得到关于 DefaultSerializer
没有实例化的异常:
Exception in thread "main" org.apache.kafka.common.KafkaException: Could not instantiate class kafka.serializer.DefaultEncoder Does it have a public no-argument constructor?
at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:235)
at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstance(AbstractConfig.java:136)
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:216)
........
鉴于这是在 Kakfa 中实现的,我想知道将 Kafka 作为依赖项进行编译是否还不够,因为我可能需要在运行时打包到一个或多个 Kafka jar 中。我还没有找到关于此的文档(最新的或其他的)。是否缺少我缺少的生产者运行时 jar?
作为引用,我在这里包含了我的 build.gradle
(有点乱)。编译中的 excludes 是在已经收到此错误后新添加的,因此无论是否在 dependencies block 中有这些行,都会发生错误。我确实尝试过只依赖 0.8.2 的 kafka-client
模块,但我认为这对制作人不起作用。这是文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.0'
}
}
group 'lamblin'
version '0.1-SNAPSHOT'
apply plugin: 'application'
apply plugin: "com.google.protobuf"
sourceCompatibility = 1.7
targetCompatibility = 1.7
// Eliminates bootstrap class warning from javac
//tasks.withType(Compile) {
// options.bootClasspath = "$JDK6_HOME/jre/lib/rt.jar"
//}
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile group: 'com.google.guava', name: 'guava', version: '18.0'
compile group: 'com.google.protobuf', name: 'protobuf-java-util', version: '3.0.0-beta-1'
compile group: 'com.google.transit', name: 'gtfs-realtime-bindings', version: '0.0.4'
compile group: 'com.offbytwo', name: 'docopt', version: '0.6.0.20150202'
//compile group: 'org.apache.kafka', name: 'kafka_2.9.1', version: '0.8.2.1' {
compile ('org.apache.kafka:kafka_2.9.1:0.8.2.1') {
exclude group: 'com.sun.jmx', module: 'jmxri'
exclude group: 'javax.jmx', module: 'jms'
exclude group: 'com.sun.jdmk', module: 'jmxtools'
}
}
protobuf {
generateProtoTasks {
all().each { task ->
task.builtins {
python { }
}
}
}
protoc {
// artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3'
artifact = 'com.google.protobuf:protoc:2.6.1'
}
}
// First Application Script
mainClassName = "com.insight.lamblin.GtfsToJson"
applicationName = "gtfsToJson"
// Subsequent Scripts
task createAllStartScripts() << {
// This task is added to by a loop over the scripts array creating-sub tasks
}
def scripts = [ 'gtfsToJson': 'com.insight.lamblin.GtfsToJson',
'rawGtfsKafkaProducer': 'com.insight.lamblin.RawGtfsKafkaProducer'
]
scripts.each() { scriptName, className ->
def t = tasks.create(name: scriptName+'StartScript', type: CreateStartScripts) {
mainClassName = className
applicationName = scriptName
outputDir = new File(project.buildDir, 'scripts')
classpath = jar.outputs.files + project.configurations.runtime
}
applicationDistribution.into("bin") {
from(t)
fileMode = 0755
}
createAllStartScripts.dependsOn(t)
}
最佳答案
场景:在一个不起眼的教堂地下室里,一圈金属折叠椅上坐着形形色色的中年男人和几个女人,他们中的大多数人都戴着眼镜,看上去很冷漠。一盒咖啡和一些半个 donut 依次放在一个塑料盘子上,放在靠近入口的墙上一张缺口的、没有覆盖物的折叠 table 上。
Daniel:嗨,我叫 Daniel,我是一名...(抽泣)...文档浏览器。
小组(慢慢地):欢迎丹尼尔。
写那个剧本是因为我的卡夫卡问题似乎只吸引了蟋蟀,所以我在这里让它有点有趣……感觉寂寞。
在我看来,关于生产者属性设置的 kafka.apache.org 文档有 10 多篇看似权威。 kafka.serializer.DefaultSerializer
在几乎所有设置属性的示例中都非常突出和常见,而 Java 生产者示例完全没有关于属性或运行示例代码的详细信息。
此外,尽管名称为“default”,但此属性没有默认值,因此需要设置它。这似乎是一个愚蠢的细节,但对于 Kafka 开发团队的某些人来说一定是有意义的。
当运行用 Java 编写的 Kafka 生产者时,生产者应该从少数可用的 Java 特定编码器中设置编码器。前面提到的似乎是 Scala 特定的。对于 Java,您对 org.apache.kafka.common.serialization
感兴趣而你相当于默认的序列化器是:ByteArraySerializer
.如果您设置 key.serializer
和 value.serializer
它应该可以工作。设置它们的更好方法是使用 ProducerConfig
中的静态字符串像 ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG
。
设置有点像:
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
...
import java.util.Properties;
...
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
"172.31.22.7:9092,172.31.22.6:9092,172.31.22.5:9092,172.31.22.4:9092");
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
"org.apache.kafka.common.serialization.ByteArraySerializer");
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
"org.apache.kafka.common.serialization.ByteArraySerializer");
KafkaProducer<byte[], byte[]> producer = new KafkaProducer<>(props);
...
关于java - Kafka 2.9.1 生产者 0.8.2.1 编译与运行时依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32912754/
是否有任何库或框架旨在促进从另一种成熟的编程语言中构建项目? 在 C++、java 等编程语言中指定逻辑、集合和复杂规则非常容易,但在 Makefile 中完成这些事情似乎是一场艰苦的战斗。我还没有深
我有这段代码可以用 clang 编译得很好(即使使用 -Weverything),但是 gcc 会发出错误。 #include #include #include using namespace
我有以下 block 头文件 BKE_mesh.h: /* Connectivity data */ typedef struct IndexNode { struct IndexNode *
我在我的一个项目中遇到了一个奇怪的问题。我的代码库依赖于一个外部库,其中包含一个名为 Dataset 的类. Dataset类私有(private)继承自 std::vector (其中 Sample
当使用 gcc、g++ 或 make 在终端中编译一个小型 C 或 C++ 项目时,我收到以下错误: /tmp/ccG1caGi.o: In function `main': main.c:(.tex
我正在尝试从 CVS 为 Windows 上的 Emacs 23.1.50 编译 CEDET,但在“第 6 步:打开 EDE...”时出现错误:“defvar:作为变量的符号值是无效的:cedet-m
我正在(重新)学习编程,我从 C 开始。我的 IDE(如果我可以这么说)是 Windows7 上的 cygwin(32 位)和 Visual-Studio 2010。我总是编译我用 gcc (cygw
我喜欢在模板类中使用本地类来执行类似“static if”的构造。但是我遇到了 gcc 4.8 不想编译我的代码的问题。但是 4.7 可以。 这个例子: #include #include #in
我有一个项目,必须仅使用 java 1.4 进行编译。但我计划使用mockito 编写一些单元测试。我想要一种在 pom 中指定的方法,以便 src/main/java 使用 jdk 1.4 编译,但
我想了解 PHP 编译过程是如何工作的。 假设我有一个名为funcs.php 的文件并且这个文件有三个函数,如果我include 或require 它,所有的在文件加载期间编译三个函数?或者源代码会被
编译工具链 我们写程序的时候用的都是集成开发环境 (IDE: Integrated Development Environment),集成开发环境可以极大地方便我们程序员编写程序,但是配置起来
当我编写一些 Scala 代码时,在尝试编译代码时收到一条奇怪的错误消息。我将代码分解为一个更简单的代码(从语义的角度来看这完全没有意义,但仍然显示了错误)。 scala> :paste // Ent
我正在编译一个 SCSS 文件,它似乎删除了我的评论。我可以使用什么命令来保留所有评论? >SASS input.scss output.css 我在 SCSS 中看到两种类型的注释。 // Comm
这是我的代码: #include typedef struct { const char *description; float value; int age; } swag
当您编译 grails war 时,我知道 .groovy 代码被编译为字节码类文件,但我不明白容器(例如 tomcat)如何在请求 GSP 时知道如何编译它们。容器了解 GSP 吗?安装在服务器上的
我正在努力将多个文件编译成一个通用程序。我收到一个错误: undefined reference to 'pi' 这是我的代码和 Makefile 的框架。我做错了什么?谢谢! 文件:calcPi.c
我尝试使用 LD_PRELOAD 来 Hook sprintf function ,所以我将打印到缓冲区的结果: #define _GNU_SOURCE #include #include int
我正在寻找最简单的方法来自动将 CoffeeScript 重新编译为 JS。 阅读documentation但仍然很难得到我想要的东西。 我需要它来监视文件夹 src/ 中的任何 *.coffee 文
我想使用定制waveformjs 。我发现this on SO但是,我不知道如何编译/安装波形来开始。我从 GitHub 克隆它并进行了更改,但是我不知道如何将其转换为 .js 文件。 最佳答案 为了
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我是一名优秀的程序员,十分优秀!