All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.wizzer.iot.mqtt.server.broker.service.KafkaService Maven / Gradle / Ivy

There is a newer version: 1.2.0-netty
Show newest version
package cn.wizzer.iot.mqtt.server.broker.service;

import cn.wizzer.iot.mqtt.server.broker.config.BrokerProperties;
import cn.wizzer.iot.mqtt.server.broker.internal.InternalMessage;
import com.alibaba.fastjson.JSONObject;
import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.nutz.aop.interceptor.async.Async;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Created by wizzer on 2018
 */
@IocBean
public class KafkaService {
    private static final Logger LOGGER = LoggerFactory.getLogger(KafkaService.class);
    @Inject
    private KafkaProducer kafkaProducer;
    @Inject
    private BrokerProperties brokerProperties;

    @Async
    @SuppressWarnings("unchecked")
    public void send(InternalMessage internalMessage) {
        try {
            //消息体转换为Hex字符串进行转发
            ProducerRecord data = new ProducerRecord<>(brokerProperties.getProducerTopic(), internalMessage.getTopic(), JSONObject.toJSONString(internalMessage));
            kafkaProducer.send(data,
                    new Callback() {
                        public void onCompletion(RecordMetadata metadata, Exception e) {
                            if (e != null) {
                                e.printStackTrace();
                                LOGGER.error(e.getMessage(), e);
                            } else {
                                LOGGER.info("The offset of the record we just sent is: " + metadata.offset());
                            }
                        }
                    });
        } catch (Exception e) {
            LOGGER.error("kafka没有连接成功..");
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy