在我的应用程序中,我将对我的Kafka群集执行某种健康检查.
目前我做了一个TopicMetadataRequest
检测死经纪人:
Future {
// this will fail if Kafka is unavailable
consumer.send(new TopicMetadataRequest(Seq("health-check-topic"), 1))
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,由于群集拓扑/设置,此调用会产生巨大的网络流量.
有没有更好的方法来检查卡夫卡经纪人?我需要的是像true/false
指标一样简单的东西.
在我的应用程序中,我必须使用来自DB的数据填充预定义的PDF表单.我们正在使用Java和Pdfbox.填充本身不是问题.
问题是,在生成的PDF文件中,除非单击字段,否则表单中的所有文本都是不可见的(或隐藏的,也是灰色矩形).
我怎么解决这个问题?
我有一个docker-compose
包含多个服务容器定义的文件.其中一个服务Apache Kafka
在同一个docker-compose运行中进行通信.
所以我有像这样的kafka docker定义:
kafka:
image: spotify/kafka
ports:
- "2181:2181"
- "9092:9092"
environment:
ADVERTISED_HOST: 127.0.0.1
ADVERTISED_PORT: 9092
Run Code Online (Sandbox Code Playgroud)
我在同一个docker-compose文件中有我的服务定义.在服务的启动脚本中,我必须弄清楚Kafka实例的IP地址.
我知道,我可以使用类似的东西docker inspect
找出容器使用的IP地址.
但是我怎么能在docker-compose环境中动态地做呢?
编辑
所以,正确的配置应该是(谢谢你,@ nwinkler):
kafka:
image: spotify/kafka
ports:
- "2181:2181"
- "9092:9092"
environment:
ADVERTISED_HOST: kafka
ADVERTISED_PORT: 9092
myservice:
image: foo
links:
- kafka:kafka
Run Code Online (Sandbox Code Playgroud)
不要忘记设置ADVERTISED_HOST
to kafka
(或者你如何命名你的kafka容器docker-compose
).
我正面临 SBT(版本 0.13.9)的问题。我的 ScalaTest 测试之一失败了不确定性EOFException
。
堆栈跟踪:
Exception in thread "Thread-155" Exception in thread "Thread-159" java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2601)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1319)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at sbt.React.react(ForkTests.scala:114)
at sbt.ForkTests$$anonfun$mainTestTask$1$Acceptor$2$.run(ForkTests.scala:74)
at java.lang.Thread.run(Thread.java:745)
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2601)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1319)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at org.scalatest.tools.Framework$ScalaTestRunner$Skeleton$1$React.react(Framework.scala:953)
at org.scalatest.tools.Framework$ScalaTestRunner$Skeleton$1.run(Framework.scala:942)
at java.lang.Thread.run(Thread.java:745)
sbt.ForkMain 59974 failed with exit code 134
Run Code Online (Sandbox Code Playgroud)
我没有看到任何 JVM 日志或线程转储。
所以我最近开始阅读Kafka,我对Kafka Connect和Kafka Streams之间的区别感到有些困惑.根据定义,Kafka Streams可以从Kafka主题收集数据,处理它并将输出推送到另一个Kafka主题.而Kafka Connect将大型数据集移入和移出Kafka.
我的问题是为什么我们需要Kafka Connect几乎可以读取数据,处理数据并将其推送到主题?为什么要增加一个组件 如果有人可以解释差异,那将是很棒的,在此先感谢:)