1. kafka发送方法
@Component
@Import(KafkaAutoProperties.class)
public class KafkaProducer {
@Autowired
private KafkaConfigProperties kafkaConfigProperties;
public void send(String topic, String msg) {
//1、准备配置文件
Properties props = new Properties();
props.put("bootstrap.servers", kafkaConfigProperties.getBootstrapServers());
props.put("acks", kafkaConfigProperties.getAcks());
props.put("retries", kafkaConfigProperties.getRetries());
props.put("batch.size", kafkaConfigProperties.getBatchSize());
props.put("linger.ms", kafkaConfigProperties.getLingerMs());
props.put("buffer.memory", kafkaConfigProperties.getBufferMemory());
props.put("key.serializer", kafkaConfigProperties.getKeySerializer());
props.put("value.serializer", kafkaConfigProperties.getValueSerializer());
//2、创建KafkaProducer
// org.apache.kafka.clients.producer.KafkaProducer<String, String> kafkaProducer = new org.apache.kafka.clients.producer.KafkaProducer<String, String>(props);
//3、发送数据
// kafkaProducer.send(new ProducerRecord<String, String>(topic, msg));
IEventHandle kafkaHandle = new KafkaEventHandle(props, topic);
kafkaHandle.process(msg);
}
}
2.消息发送接口
public interface MessageService {
public void sendWhenShipUpdate(String value);
}
3.消息发送实现类
@Service
public class MessageServiceImpl implements MessageService {
@Autowired
private KafkaProducer kafkaProducer;
@Override
public void sendWhenShipUpdate(String value) {
if(org.apache.commons.lang3.StringUtils.isBlank(value)){
throw new ApiException("船信息不能为空");
}
JSONObject message = new JSONObject();
message.put("dataType", "shipInfoUpdate");
JSONObject data = new JSONObject();
data.put("value", value);
message.put("data", data);
kafkaProducer.send("TransportDataUpdate", StringUtils.replaceBack(message.toJSONString().replace("\\","")));
}
}
4.代码中发送消息
messageService.sendWhenShipUpdate(s);