小编mju*_*rez的帖子

在 Java 中以编程方式检查 Kafka 主题是否存在

使用 CLI 工具的情况下,以及在尝试生成主题之前,如何以编程方式知道主题是否已在 Kafka 集群中创建?

我遇到了一个主题不存在的问题,我们的应用程序试图生成一个不存在的主题,但它只在 90 秒(元数据超时)后收到通知。我想知道是否有办法从 Java 代码中知道该主题是否存在,以便我们可以在实际尝试发送消息之前进行检查。我想我可以查看 Kafka CLI utils 使用的代码,但我想知道是否有我可能错过的 API 或更简单的方法。

java apache-kafka

5
推荐指数
1
解决办法
6207
查看次数

刚刚偶然发现了 java.util.Tripwire。从 1.8 开始它就出现在 Java 中。Github 上的零使用。这能用来做什么?

正如标题所说,只是java.util.Tripwire一个尚未清理的旧 JVM 实用程序吗?有趣的是,由于某种原因,Javadoc 甚至没有公开。源代码中的简短 Javadoc 是这样说的:

  • 用于检测 {@code java.util} 类中无意使用装箱的实用程序类。根据 {@link Boolean#getBoolean(String)} 是否将系统属性 {@code org.openjdk.java.util.stream.tripwire} 视为 {@code true},来打开或关闭检测。

通常应在生产使用时关闭此功能。

@apiNote 典型用法是装箱代码执行以下操作:

{
      if (Tripwire.ENABLED)
          Tripwire.trip(getClass(), "{0} 调用 PrimitiveIterator.OfInt.nextInt()");
 }

感觉像是不应该使用的东西。它使用sun.util.logging,我什至不知道它仍然存在。而且,如果我想使用它,我是否必须在应用程序可能进行自动装箱的任何地方添加该代码片段?

有人用这个来做有用的事情吗?

java autoboxing

5
推荐指数
1
解决办法
337
查看次数

如何将Java Collection/List转换为Scala seq?

我正在尝试从Java代码实例化Kafka Scala案例类,它具有以下签名:

case class OffsetFetchRequest(groupId: String,
                          requestInfo: Seq[TopicAndPartition],
                          versionId: Short = OffsetFetchRequest.CurrentVersion,
                          correlationId: Int = 0,
                          clientId: String = OffsetFetchRequest.DefaultClientId)
Run Code Online (Sandbox Code Playgroud)

我能够发送所有请求的参数,除了Seq[TopicAndPartition].

在Java方面,我有以下代码:

OffsetFetchRequest offsetFetchRequest = new OffsetFetchRequest(
                                                "someGroup", 
                                                topicAndPartitions, 
                                                (short)1, 
                                                1, 
                                                "clientId");
Run Code Online (Sandbox Code Playgroud)

正如所料,a java.util.List与Scala不兼容Seq.不过,我已经尝试了所有类型的转换方法JavaConversionsJavaConverters,我找不到任何适合这种情况.

如何seq从正常java.util.List甚至是java.util.Collection?创建Scala ?或者我接近这个错误?

java scala scala-java-interop

4
推荐指数
1
解决办法
3242
查看次数

当 kubernetes cron 作业 pod 通过“替换”并发策略终止时,其关闭会是什么样子?

我在 kubernetes 官方文档中找不到任何关于此的内容。替换长时间运行的 cron 作业的实际低级流程是什么?我想了解这一点,以便我的应用程序可以正确处理它。

\n
    \n
  • 它是发送到正在运行的应用程序的干净SIGHUP/信号吗?SIGTERM
  • \n
  • 发送信号后是否有一段等待时间,以便应用程序有时间在可能被杀死之前进行清理/关闭?如果是这样,超时是多少秒?还是永远等待?
  • \n
\n

作为参考,这里是Replace文档中的政策说明:

\n

https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/

\n
\n

并发策略

\n
    \n
  • 替换:如果到了运行新作业的时间,并且之前的作业运行尚未完成,则 cron 作业将用新的作业运行替换当前正在运行的作业运行
  • \n
\n
\n

cron kubernetes

4
推荐指数
1
解决办法
2821
查看次数

如何跨团队共享 avro 模式定义

Kafka schema-registry 提供了一种使用通用数据契约对来自 Kafka 的数据进行序列化和反序列化的好方法。然而,数据契约(.avsc 文件)是生产者和消费者之间的粘合剂。

一旦制作人制作了 .avsc 文件,就可以将其签入制作人一侧的版本控制。根据语言,它也会自动生成类。

然而,

  1. 消费者下拉模式定义以供参考的最佳机制是什么?有没有像 swaggerhub 或 avro 的典型 api 文档门户之类的东西?
  2. 如果我们使用 Confluent 平台,控制中心提供了一个 gui 来查看与主题关联的模式,但它也允许用户进行编辑。生产者和消费者团队之间将如何工作?什么会阻止消费者或任何人直接在 Confluent 平台上编辑模式?
  3. 这是我们需要使用rest-proxy自定义构建的东西吗?

avro apache-kafka confluent-schema-registry confluent-platform

2
推荐指数
1
解决办法
652
查看次数

如何在Java中显示以逗号分隔的数组元素?

我需要显示以逗号分隔的数组元素。这是我到目前为止的代码:

    int[] arr = { 10, 20, 30 };
    int[] newArray = Arrays.copyOf(arr, arr.length + 1);
    newArray[newArray.length - 1] = 40;

    System.out.print("[ ");

    for (int i = 0; i < newArray.length; i++) {
        System.out.print(", " + newArray[i]);

        if (newArray.length - 1 > newArray[i])
            System.out.print(", ");
        else
            System.out.print(" ");

    }
    System.out.println("]");
Run Code Online (Sandbox Code Playgroud)

我的输出是这样的: [ , 10 , 20 , 30 , 40 ]

我需要删除第一个索引之前的逗号,并且也不要在最后一个索引之后显示它。

java arrays for-loop

-2
推荐指数
1
解决办法
491
查看次数