版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Curryth_/article/details/89477817
引入依赖
implementation('org.springframework.kafka:spring-kafka')
配置文件
kafka:
bootstrap-servers: 127.0.0.1:9092
producer:
retries: 0
batch-size: 16384
buffer-memory: 33554432
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
consumer:
group-id: analyse-consumer-group
auto-offset-reset: earliest
enable-auto-commit: true
auto-commit-interval: 100
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
logback.xml配置添加
<!-- kafka appender -->
<appender name="KAFKA" class="com.cbay.api.web.cs.infrastructure.util.KafkaAppender">
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="KAFKA" />
</root>
工具类
/**
* 自定义KafkaAppender将日志输出到Kafka中
* @author liuyazhuang
*
*/
public class KafkaAppender extends AppenderBase<ILoggingEvent> {
@Resource
private KafkaTemplate<String, String> kafkaTemplate;
@Override
protected void append(ILoggingEvent iLoggingEvent) {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "http://127.0.0.1:9092");
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, "1000");
props.put(ProducerConfig.RETRIES_CONFIG, 0);
kafkaTemplate = new KafkaTemplate<>(new DefaultKafkaProducerFactory<String, String>(props));
String logStr = iLoggingEvent.getFormattedMessage();
if (logStr != null) {
kafkaTemplate.send("LOG", logStr);
}
}
}
其实我也不知道为什么
在yml中配置了我的services:127.0.0.1:9092
在发送消息类中还要增加 props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, “http://127.0.0.1:9092”);这条语句?
有知道的可以在下面评论留言哦