首先我们来看看producer的例子:
![](https://i-blog.csdnimg.cn/blog_migrate/438fe088b3d1887f276668508619f5da.png)
下来我们来看看和我们打交道的ProductData类。
ProducerData类相对来说还是很简单明了的,里面持有给哪个topic发送消息,它的key决定超那个partition发送,里面的data就是producer产生的消息
首先我们先看单元测试ProducerTest这个类里面的发送消息的代码:
@Test
public void testSend() {
Jafka jafka = createJafka();
Properties producerConfig = new Properties();
producerConfig.setProperty( "broker.list", "0:localhost:" +jafka.getPort());
producerConfig.setProperty("serializer.class" , StringEncoder.class .getName());
Producer<String, String> producer = new Producer<String, String>(new ProducerConfig(producerConfig));
for (int i = 0; i < 1000; i++) {
producer.send( new StringProducerData("demo" ).add("Hello jafka").add("https://github.com/adyliu/jafka"));
}
producer.close();
close(jafka);
}
这个里面其实感觉还是挺简单的,配置broker的地址,encoder的class类型,最后构建消息并发送。
我先稍微花点时间看一下边边角角的类,Producer的配置类,从这个里面可以看出来,它的父类呢是ZKConfig,里面持有一个同步的producer的config和一个异步的producer的config。
![](https://i-blog.csdnimg.cn/blog_migrate/438fe088b3d1887f276668508619f5da.png)
下来我们来看看和我们打交道的ProductData类。
![](https://i-blog.csdnimg.cn/blog_migrate/37692eab085f5ef88bbe06c6176451d4.png)
ProducerData类相对来说还是很简单明了的,里面持有给哪个topic发送消息,它的key决定超那个partition发送,里面的data就是producer产生的消息