一、编写docker-compose.yml
version: '2'
services:
lzx_zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
lzx_kafka:
image: wurstmeister/kafka
volumes:
- /etc/localtime:/etc/localtime
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 39.100.73.134
KAFKA_ZOOKEEPER_CONNECT: 39.100.73.134:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://39.100.73.134:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"
lzx_kafka-manager:
image: sheepkiller/kafka-manager
environment:
ZK_HOSTS: 39.100.73.134:2181
ports:
- "9000:9000"
二、springBoot项目引入依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
三、springBoot配置文件application.yml添加如下内容
spring:
kafka:
bootstrap-servers: 39.100.73.134:9092 #Kafka服务端地址
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
四、消息生产类
package com.lzx.demo.service.impl;
import com.lzx.demo.service.KafkaService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
/**
* 描述: Kafka业务实现
*
* @Auther: lzx
* @Date: 2019/6/27 11:20
*/
@Service
@Slf4j
public class KafkaServiceImpl {
private KafkaTemplate<String,String> kafkaTemplate;
public KafkaServiceImpl(KafkaTemplate<String, String> kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}
/**
* 发布消息到 topic
* @param channel topic 名称
* @param message 消息内容
*/
@Override
public void sendChannelMess(String channel, String message) {
kafkaTemplate.send(channel,message);
}
}