Java访问kafka的时候java.nio.channels.ClosedChannelException解决办法
import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.ProducerConfig; public class KafkaTest2 { public static void main(String[] args) { // 设置配置属性 Properties props = new Properties(); props.put("metadata.broker.list", "130.51.23.95:9092"); props.put("serializer.class", "kafka.serializer.StringEncoder"); // key.serializer.class默认为serializer.class props.put("key.serializer.class", "kafka.serializer.StringEncoder"); // 可选配置,如果不配置,则使用默认的partitioner // props.put("partitioner.class", "com.catt.kafka.demo.PartitionerDemo"); // 触发acknowledgement机制,否则是fire and forget,可能会引起数据丢失 // 值为0,1,-1,可以参考 // http://kafka.apache.org/08/configuration.html props.put("request.required.acks", "1"); ProducerConfig config = new ProducerConfig(props); // 创建producer Producer<String, String> producer = new Producer<String, String>(config); // 产生并发送消息 long start = System.currentTimeMillis(); KeyedMessage<String, String> data = new KeyedMessage<String, String>("test", "test123", "test123"); producer.send(data); System.out.println("耗时:" + (System.currentTimeMillis() - start)); // 关闭producer producer.close(); } }
运行之后,报一下错误:
解决办法:
修改 config/server.properties文件(多节点的话,每个节点都修改一下)
上面的端口必须放开,并且写你的真实IP地址
posted on 2016-07-12 10:11 peng.zhang 阅读(22651) 评论(1) 编辑 收藏 举报