Ao tentar executar o projeto banking-validation ao final da aula 3 eu estou com o erro:
2025-07-11 12:17:49,246 INFO [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure
2025-07-11 12:17:49,808 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: jakarta.enterprise.inject.spi.DeploymentException: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.apache.kafka.clients.producer.KafkaProducer<java.lang.String, java.lang.String> and qualifiers [@Default]
- injection target: parameter 'producer' of br.com.alura.KafkaConfiguration constructor
- declared on CLASS bean [types=[br.com.alura.KafkaConfiguration, java.lang.Object], qualifiers=[@Default, @Any], target=br.com.alura.KafkaConfiguration]
at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1551)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:338)
at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:167)
at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:490)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:483)
Caused by: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.apache.kafka.clients.producer.KafkaProducer<java.lang.String, java.lang.String> and qualifiers [@Default]
- injection target: parameter 'producer' of br.com.alura.KafkaConfiguration constructor
- declared on CLASS bean [types=[br.com.alura.KafkaConfiguration, java.lang.Object], qualifiers=[@Default, @Any], target=br.com.alura.KafkaConfiguration]
...
Minha classe KafkaConfiguration:
package br.com.alura;
import io.quarkus.logging.Log;
import jakarta.enterprise.context.ApplicationScoped;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;
import org.eclipse.microprofile.config.Config;
import java.util.Properties;
@ApplicationScoped
public class KafkaConfiguration {
private final KafkaProducer<String, String> producer;
public KafkaConfiguration(Config config, KafkaProducer<String, String> producer) {
String kafkaHost = config.getValue("producer.kafka.host", String.class);
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaHost);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
this.producer = new KafkaProducer<>(props);
}
public void enviarMensagem(String topico, String mensagem) {
ProducerRecord<String, String> record = new ProducerRecord<>(topico, mensagem);
producer.send(record, (metadata, exception) -> {
if (exception == null) {
Log.info("Mensagem enviada: " + metadata.offset());
} else {
Log.error("Erro: " + exception.getMessage());
exception.getStackTrace();
}
});
}
}