kafka 的pom文件_Spring boot集成kafka生产者发布消息事件

## Spring boot集成kafka ##

1、引入pom文件,版本的可以自己去maven中找

org.springframework.kafka

spring-kafka

1.2.2.RELEASE

2、然后在配置文件中放入你kafka的一些配置

kafka.producer.servers=172.16.100.8:9092

kafka.producer.retries=0

kafka.producer.batch.size=16384

kafka.producer.linger=1

kafka.producer.buffer.memory=33554432

3、然后增加kafka 的producer的配置类

@Configuration

@EnableKafka

public class KafkaProducerConfig {

@Value("${kafka.producer.servers}")

private String servers;

@Value("${kafka.producer.retries}")

private int retries;

@Value("${kafka.producer.batch.size}")

private int batchSize;

@Value("${kafka.producer.linger}")

private int linger;

@Value("${kafka.producer.buffer.memory}")

private int bufferMemory;

public Map producerConfigs() {

Map props = new HashMap<>();

props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);

props.put(ProducerConfig.RETRIES_CONFIG, retries);

props.put(ProducerConfig.ACKS_CONFIG, "all");

props.put(ProducerConfig.BATCH_SIZE_CONFIG, batchSize);

props.put(ProducerConfig.LINGER_MS_CONFIG, linger);

props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, bufferMemory);

props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);

props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);

return props;

}

public ProducerFactory producerFactory() {

return new DefaultKafkaProducerFactory<>(producerConfigs());

}

@Bean

public KafkaProducer kafkaProducer(){

return new KafkaProducer(producerConfigs(), new StringSerializer(), new StringSerializer());

}

@Bean

public KafkaTemplate kafkaTemplate() {

return new KafkaTemplate(producerFactory());

}

}

这里我是配置了 kafkaProducer 和 kafkaTemplate两个。这两个都可以使用。因为我习惯用 kafkaProducer。

5、测试一下

@Autowired

private KafkaProducer kafkaProducer;

private void publish(String topic, Event event) {

if (StringUtils.isEmpty(topic)) {

throw new RuntimeException("topic can not be empty!");

}

if (event == null) {

throw new NullPointerException("event can not be null!");

}

String json = JSON.toJSONString(event);

ProducerRecord record = new ProducerRecord(topic, json);

//kafkaTemplate.send(topic, json);

kafkaProducer.send(record);

}

这是我写的一个utils,试了一下是可以的。Event的话是一个实体类!

public class Event {

/** 事件类型 */

private String type;

/** 事件唯一标识 */

private String id;

/** 事件时间 */

private Date time;

/** 事件负载 */

private String playloadJson;

/**

* 构造方法

*/

public Event() {

}

/**

* 构造方法

*

* @param type

*/

public Event(String type) {

this.type = type;

this.id = UUID.randomUUID().toString();

this.time = new Date();

}

/**

* 取得事件负载

*

* @param clazz

* @return

*/

public T getPayload(Class clazz) {

if (playloadJson != null) {

return JSON.parseObject(playloadJson, clazz);

}

return null;

}

/**

* 取得事件负载

*

* @param typeReference

* @return

*/

public T getPayload(TypeReference typeReference) {

if (playloadJson != null) {

return JSON.parseObject(playloadJson, typeReference);

}

return null;

}

/**

* 取得事件负载

*

* @param clazz

* @return

*/

public T getPayload(Class clazz, T defaultValue) {

if (playloadJson != null) {

return JSON.parseObject(playloadJson, clazz);

}

return defaultValue;

}

/**

* 取得事件负载

*

* @param typeReference

* @return

*/

public T getPayload(TypeReference typeReference, T defaultValue) {

if (playloadJson != null) {

return JSON.parseObject(playloadJson, typeReference);

}

return defaultValue;

}

/**

* @param playload

* the playload to set

*/

public void setPayload(Object playload) {

this.playloadJson = JSON.toJSONString(playload, SerializerFeature.DisableCircularReferenceDetect);

}

}

还有一些get和 set方法我没有复制出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值