需要注意的是在ScalaIde中如果创建maven工程的话还需要添加Scala环境
添加依赖
<dependencies>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
生产者
import java.util.Properties
import org.apache.kafka.clients.producer.ProducerConfig
import org.apache.kafka.clients.producer.KafkaProducer
import org.apache.kafka.clients.producer.ProducerRecord
object MyProducer {
def main(args: Array[String]): Unit = {
//创建producer
val properties=new Properties();
properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "bigdata111:9092,bigdata111:9093");
//设置序列化方式
properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer")
properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer")
val producer=new KafkaProducer[String,String](properties)
var i=10
while (i>0) {
var record=new ProducerRecord("mytopic1", "Scala_Key"+i, "Scale_value"+i)
producer.send(record)
i-=1
Thread.sleep(1000)
}
}
}
消费者
import java.time.Duration
import java.util.Properties
import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.kafka.clients.consumer.KafkaConsumer
import java.util.Arrays
object MyConsumer {
def main(args: Array[String]): Unit = {
//创建consumer
val properties=new Properties();
properties.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "bigdata111:9092,bigdata111:9093");
//设置序列化方式
properties.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer")
properties.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer")
//设置组
properties.setProperty(ConsumerConfig.GROUP_ID_CONFIG, "group1")
val consumer=new KafkaConsumer[String,String](properties)
consumer.subscribe(Arrays.asList("mytopic1"))
while (true) {
val consumerRecords=consumer.poll(Duration.ofSeconds(2))
var records=consumerRecords.iterator()
while (records.hasNext()) {
val record=records.next()
println("value_"+record.value())
}
}
}
}