【发布时间】:2020-02-05 21:02:56
【问题描述】:
我有一个创建生产者的简单 Kafka/Scala 项目。现在我正在尝试创建消费者,但是,当我使用以下代码时......
@Service
class KafkaService @Autowired()(producer: KafkaTemplate[String, Array[Byte]]){
@Value("${spring.kafka.topic}") val topic : String = null
def sendMessage(msg: String): Unit = {
System.out.println(s"Writing the message $msg to the topic ${this.topic}")
producer.send(topic, msg.getBytes());
}
@KafkaListener(id="test", topics="${this.topic}")
def consume(record: ConsumerRecord[String, String]): Unit = {
System.out.println(s"Consumed Strinsg Message : ${record.value()}")
}
}
我收到以下错误...
[ERROR] ...\service\KafkaService.scala:26: error: type mismatch;
[ERROR] found : String("${this.topic}")
[ERROR] required: Array[String]
[ERROR] @KafkaListener(id="test", topics="${this.topic}")
我错过了什么?
我也尝试了以下...
@Configuration
public class CommonConfiguration{
...
@Value("${spring.kafka.topic}")
public String topic;
...
}
@Service
class KafkaService @Autowired()(producer: KafkaTemplate[String, Array[Byte]], config: CommonConfiguration){
def sendMessage(msg: String): Unit = {
val topics : Array[String] = config.getTopics();
println(s"Writing the message $msg ${topics.mkString(" ")}")
producer.send(config.topic, msg.getBytes());
}
@KafkaListener(id="test", topics="#{config.topic.split(',')}")
def consume(record: ConsumerRecord[String, String]): Unit = {
System.out.println(s"Consumed Strinsg Message : ${record.value()}")
}
}
仍然没有运气,但生产者的控制台日志正在获得正确的值。
【问题讨论】:
标签: scala apache-kafka