我正在通过camel从mqtt消费并试图发布到融合kafka,但当我生产到kafka时,我收到以下错误
java.lang.IllegalArgumentException: Login module control flag is not available in the JAAS config
at org.apache.kafka.common.security.JaasConfig.loginModuleControlFlag(JaasConfig.java:85) ~[kafka-clients-3.1.1.jar:na]
at org.apache.kafka.common.security.JaasConfig.parseAppConfigurationEntry(JaasConfig.java:111) ~[kafka-clients-3.1.1.jar:na]
我用于构建路由uri的camel配置如下所示
builder.setScheme("kafka");
builder.setHost(topicName);
builder.setParameter("brokers",broker);
builder.setParameter("saslMechanism","PLAIN");
builder.setParameter("securityProtocol","SASL_SSL");
builder.setParameter("saslJaasConfig", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"username\" password=\"Password\";");
我遵循了这个链接Camel Kafka安全协议SASL_SASL不起作用试图将JAAS配置放在RAW中,但它不起作用,即使我尝试将此处提到的JAAS属性外部化,Kafka“Login module not specified in JAAS config”,但我仍然收到相同的错误,不确定JAAS配置中缺少什么,或者Camel Kafka依赖性有问题
我使用的是camel版本2.25.4的依赖关系图
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-mqtt</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-boot</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-kafka</artifactId>
<version>${camel.version}</version>
</dependency>
</dependencies>
我一直在想,有什么帮助吗?
经过一些调试后,我发现当我在camel上下文中设置KafkaComponent时,它可以工作,我在app.properties中设置属性,然后我使用KafkaComponent并在camel上下文中设置它,它可以接受属性,但奇怪的是,在构建uri时,我使用了相同的属性,但它不工作,看起来camel无法从字符串uri读取属性
KafkaComponent kafka = new KafkaComponent();
KafkaConfiguration kafkaConfiguration = new KafkaConfiguration();
kafkaConfiguration.setBrokers(kafkaBrokerUrl);
kafkaConfiguration.setSaslMechanism(saslmechanism);
kafkaConfiguration.setSecurityProtocol(saslprotocol);
kafkaConfiguration.setSaslJaasConfig(kafkajaasconfig);
kafka.setConfiguration(kafkaConfiguration);
getContext().addComponent("kafka", kafka);
尝试在连接到Kafka时使用kerberos身份验证时遇到问题。使用scala和my看起来像这样。
我正在尝试使用Java运行我的Kafka Streams应用程序,并以K,V对的形式将合流凭证作为环境变量传递。 但是我面临着一个错误的问题- 下面是我如何设置Kafka属性的- 下面是我如何传递环境变量的- 但是如果我直接在properties对象中硬编码Creds字符串,比如-
问题内容: 与使用控制台脚本保护的Kafka通信时出现问题。Kafka受保护,监听器受保护,机制由。 我做了什么:我尝试使用kafka脚本之一列出一些数据: 但是我明白了 命令失败,这是可以理解的,因为它由sasl保护。 因此,我尝试了如何向该命令添加客户端用户名/密码。首先,我尝试运行脚本,我曾经添加必要的文件。我很快发现我无法直接添加文件,我需要使用文件,所以我做到了。 我的属性文件(请记住,
有人可以使用jaas登录模块吗。我在看医生 我想是这些登录模块可以1.与OS用户进行身份验证2.提供该用户的组。 基本上我想通过操作系统进行身份验证。输入用户名和密码 我想用windows进行身份验证 我不想做LDAP认证只做os认证。 对于windows,有华夫饼干库可用。但我无法在使用64位机器时进行身份验证。在32位上运行良好。 对于linux,有jpam,但它不提供组。它只会检查用户名、密
更新:关于以下问题的一些上下文。我的目标是处理用户的请求,他们为每个请求提供一个Kafka主题。我使用部署在Bluemix上的MessageHub作为Kafka提供者。请求将传递代理URL、主题名称、用户名、密码和API密钥。Bluemix上的MessageHub需要JAAS身份验证,并提供具有不同LoginModule实现的登录模块。一些基于CallbackHandler,其他基于Credent
我使用的是Kafka producer客户端,我的项目中没有任何log4j配置。 在运行时,程序打印了大量的Kafka调试日志,这是我不想要的。