我有一个使用Kafka Streams中的KTable的单实例java应用程序。直到最近,当一些消息突然消失时,我才可以使用KTable检索所有数据。那里应该有~33k条带有唯一密钥的消息。
当我想通过键检索消息时,我不会得到一些消息。我使用ReadOnlyKeyValueStore检索邮件:
final ReadOnlyKeyValueStore<GenericRecord, GenericRecord> store = ((KafkaStreams)streams).store(storeName, QueryableStoreTypes.keyValueStore());
store.get(key);
这些是我为KafkaStreams设置的配置设置。
final Properties config = new Properties();
config.put(StreamsConfig.APPLICATION_SERVER_CONFIG, serverId);
config.put(StreamsConfig.APPLICATION_ID_CONFIG, applicationId);
config.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
config.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
config.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, schemaRegistryUrl);
config.put(StreamsConfig.KEY_SERDE_CLASS_CONFIG, GenericAvroSerde.class);
config.put(StreamsConfig.VALUE_SERDE_CLASS_CONFIG, GenericAvroSerde.class);
config.put(StreamsConfig.CACHE_MAX_BYTES_BUFFERING_CONFIG, 0);
Kafka:0.10.2.0-cp1
合流:3.2.0
调查给我带来了一些非常令人担忧的见解。我使用REST代理手动读取分区,发现一些偏移返回错误。
请求:/topics/{topic}/partitions/{partition}/消息?偏移量={offset}
{
"error_code": 50002,
"message": "Kafka error: Fetch response contains an error code: 1"
}
但是,没有客户端、java和命令行返回任何错误。他们只是跳过
错误的
丢失的消息,导致KTables中的数据丢失。一切都很好,似乎有些信息不知怎么地被破坏了。
我有两个经纪人,所有的主题都有2的复制因子,并且完全复制。两个经纪人分别返回相同的。重启经纪人没有区别。
默认情况下,Kafka Broker配置键cleanup.policy
设置为删除
。将其设置为紧凑
以保留每个键的最新消息。参见压实。
删除旧邮件不会更改最小偏移量,因此尝试在其下方检索邮件会导致错误。错误很模糊。Kafka Streams客户端将从最小偏移量开始读取消息,因此不会出现错误。唯一可见的影响是KTables中缺少数据。
由于缓存,应用程序运行时,即使从Kafka本身删除消息,所有数据仍可能可用。它们会在清理后消失。
我正在使用jcenter解决Gradle项目中的依赖关系,我从mavencentral迁移到了jcenter存储库,但我注意到jcenter中缺少javers的版本。 例如:http://repo.maven.apache.org/maven2/org/javers/javers-persistence-mongo/ 以及:https://jcenter.bintray.com/org/javer
问题内容: 嗨,我是Android编程的新手,我想问的问题可能很简单,但是我对如何使其工作一无所知,请多多包涵。 我从Android开发人员网站安装了android-sdk和相关工具。我按照他们的指示创建了HelloWorld应用,但出现了一些我不理解的错误。 文件MainActivity.java是一个自动生成的文件,在以下位置,我不断出现此文件错误: 因此,我尝试浏览生成的class文件中的l
问题内容: 我想知道为什么Java在设计时没有C ++中可用的指令,从而可以更好地控制从定义类的包外部可以使用哪些方法和实例变量。 我没有看到任何实际的原因,也没有看到任何具体的缺点,这似乎只是设计问题,但是如果将其添加到语言中,则不会造成任何问题。 问题答案: 这是我的首要原因: 不需要朋友。很方便,但不是必需的 朋友支持错误的设计。如果一个班级要求朋友访问另一个班级,那么您做错了。(见上文,方
我正在尝试构建一个spring项目,并添加了一些依赖项。但当我尝试添加mysql连接器时,出现了“缺少工件mysql:mysql连接器java:jar:5.1.41”错误。我试过不同的版本。结果是一样的。我该如何解决这个问题。 波姆。xml 错误消息
我正在试验Eclipse RCP应用程序处理插件的方式。在Eclipse IDE中,我创建了一个Eclipse RCP3.x项目,该项目的视图生成了所有必要的文件,并且运行良好。 假设我可以通过删除plugin.xml文件的各个部分来将这个应用程序转换成一个只保存空透视图的应用程序,我注释掉了处理视图的所有行,如下所示: 但该应用程序不再显示空的透视图,而是如下所示:
注意:nexus组包括和回购。 我没有在中配置这些回购-这是问题所在吗?或者我还做错了什么?