将 kafka 生产者属性设置为 true
kafkaProps.put("enable.idempotence" , "true");
我遇到以下错误 -
2021-04-18 16:43:53.584[0;39m [31mERROR[0;39m [35m15524[0;39m [2m---[0;39m [2m[ad | producer-1][0;39m [36mo.a.k.clients.producer.internals.Sender [0;39m [2m:[0;39m [Producer clientId=producer-1] Aborting producer batches due to fatal error
org.apache.kafka.common.errors.ClusterAuthorizationException: Cluster authorization failed.
[2m2021-04-18 16:43:53.585[0;39m [31mERROR[0;39m [35m15524[0;39m [2m---[0;39m [2m[ restartedMain][0;39m [36mc.a.c.g.kafkaclient.PricerProducer [0;39m [2m:[0;39m sending above record failed. java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.ClusterAuthorizationException: Cluster authorization failed.
[2m
Run Code Online (Sandbox Code Playgroud)
集群是否必须支持/启用此功能。如果是这样,集群应该使用的 Kafka 最低版本是什么。
来自卡夫卡文档 -
启用幂等性
当设置为“true”时,生产者将确保每条消息的一份副本准确写入流中。如果为“false”,则生产者由于代理故障等原因重试,可能会在流中写入重试消息的重复项。请注意,启用幂等性要求 max.in.flight.requests.per.connection 小于或等于 5,重试次数大于 0,并且 ack 必须为“all”。如果用户没有明确设置这些值,则会选择合适的值。如果设置了不兼容的值,将抛出 ConfigException。类型:布尔值 默认值:false 有效值: 重要性:低
我设置了 - max.in.flight.requests.per.connection=1 并且 acks 未设置,因此它自动设置为 -1(全部)。所以,我发现我的配置很好,但即使如此,它也应该导致 ConfigException 而不是 ClusterAuthorizationException。
我想知道 terraform null 提供程序的真正用途是什么以及何时使用和不使用它。
我已经浏览了 Terraform 文档 - https://registry.terraform.io/providers/hashicorp/null/latest/docs 但没有什么帮助。
空提供者
空提供程序是一个相当不寻常的提供程序,它具有故意不执行任何操作的构造。这可能听起来很奇怪,实际上在大多数情况下不需要使用这些构造,但它们在各种情况下都非常有用,可以帮助协调棘手的行为或解决限制。
该提供程序的每个功能的文档(可通过导航访问)给出了这些构造可能有用的情况的示例。
使用 null 提供程序可能会使 Terraform 配置更难以理解。虽然它在某些情况下可能有用,但应谨慎使用,并在可用时首选其他解决方案。
有人可以详细说明吗? 但它们在各种情况下都非常有用,可以帮助协调棘手的行为或解决限制。并提供进一步的参考来探索该提供商。
-- 这就是我的providers.tf 文件的样子-
provider "aws" {
alias = "primary"
region = "us-east-1"
profile = "${local.primary_aws_profile}"
version = "~> 2.70.0"
}
provider "template" {
version = "~> 1.0"
}
provider null {
version = "~> 1.0"
}
Run Code Online (Sandbox Code Playgroud)