calohmn on master
Update DEPENDENCIES concerning … (compare)
calohmn on master
[#3092] Rename service and adap… (compare)
I just tried running the lora quarkus adapter in combination with kafka and I ran into following misconfiguration exception:
MessagingClientProviders.MessagingClientProviders
if (!telemetrySenderProvider.containsImplementations()) {
throw new IllegalArgumentException("at least one TelemetrySender implementation must be set");
}
Is the kafkaconfiguration different in the quarkus container compared to the spring one?
When I look at the secret, I'm seeing following configuration:
hono:
kafka:
defaultClientIdPrefix: adapter-lora-vertx
commonClientConfig:
bootstrap.servers: <bootstrap>:9092
sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required
username="<username>" password="<password>";
sasl.mechanism: SCRAM-SHA-512
security.protocol: SASL_PLAINTEXT
This configuration just works for the spring container but doesn't seem to work with the quarkus container. Anyone experiencing the same things?
2021-11-15 08:26:04,529 ERROR [io.qua.run.Application] (main) Failed to start application (with profile prod): java.lang.IllegalArgumentException: at least one TelemetrySender implementation must be set
. But I saw the quarkus images need slightly different configuration as well so I think the test doesn't tell us anything. I'll try running the quarkus images again later with all hono configuration (in the helm chart) set to quakus as well compared to only changing the image.
io.smallrye.config.ConfigValidationException: Configuration validation failed:
hono.kafka.defaultClientIdPrefix does not map to any root
at io.smallrye.config.ConfigMappingProvider.mapConfiguration(ConfigMappingProvider.java:855)
at io.smallrye.config.ConfigMappingProvider.mapConfiguration(ConfigMappingProvider.java:811)
at io.smallrye.config.SmallRyeConfigBuilder.build(SmallRyeConfigBuilder.java:403)
at io.quarkus.runtime.generated.Config.readConfig(Config.zig:1222)
at io.quarkus.deployment.steps.RuntimeConfigSetup.deploy(RuntimeConfigSetup.zig:42)
at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:326)
at io.quarkus.runtime.Application.start(Application.java:101)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:105)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:66)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:42)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:119)
at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:48)
at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:25)
@/all I am currently struggling a little with configuring the Organize Imports functionality within the Eclipse IDE to be consistent with the Checkstyle configuration that we use. For type imports, we enforce the separation of import groups:
import java.lang.String;
import org.eclipse.hono.util.TenantObject;
However, for static imports we don't:
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static com.google.common.truth.Truth.assertThat;
It is not possible to configure the separation of import groups separately in Eclipse IDE. With the current Checkstyle configuration, whenever I hit Ctrl+O in order to automatically fix the imports in a class, I need to manually fix the static imports. This is quite annoying, so if it doesn't pose a problem to anybody, I would like to adapt our Checkstyle configuration to require separated static import groups as well and would adapt the code base accordingly.
Thoughts?
hono.importorder:
#Organize Import Order
#Thu Dec 02 11:50:14 CET 2021
0=\#java
1=\#javax
2=\#org
3=\#com
4=java
5=javax
6=org
7=com
Updated ImportOrder check in Checkstyle config:
<module name="ImportOrder">
<property name="groups" value="/^java\./,javax,org,com"/>
<property name="ordered" value="true"/>
<property name="separated" value="true"/>
<property name="option" value="top"/>
<property name="staticGroups" value="/^java\./,javax,org,com"/>
<property name="separatedStaticGroups" value="true"/>
<property name="sortStaticImportsAlphabetically" value="true"/>
</module>
@klankster When you say
certificates created independently on the devices
do you mean certs that have been self-signed on/by the devices? My understanding is that you can not or do not want to register the trust anchors with the tenant. If so, what kind of authentication do you have in mind here? How could the protocol adapter authenticate the device if it does not have any knowledge about the issuer of the device certificates?