Is there any sample to use the producer and custumer
victortony opened this issue · comments
Would you please send me a sample to use the producer and customer? The file named "readme.md" is too simple.
Thank you very much.
const string TopicName = "TestTopic";
const string ClientId = "app";
const string Host = "localhost";
const int PartitionId = 0;
var brokerConfig = new BrokerConfiguration()
{
BrokerId = 0,
Host = Host,
Port = 9092,
};
var consumerConfig = new ConsumerConfiguration
{
GroupId = "1",
Broker = brokerConfig,
ZooKeeper = KafkaClientHelperUtils.ToZookeeperConfig("localhost:2181")
};
KafkaSimpleManagerConfiguration simpleConfig = new KafkaSimpleManagerConfiguration
{
Zookeeper = string.Format("{0}:2181", Host)
};
simpleConfig.Verify();
var producerConfiguration = new ProducerConfiguration(new List<BrokerConfiguration> { brokerConfig })
{
ClientId = ClientId,
ZooKeeper = consumerConfig.ZooKeeper
};
var kafkaProducer = new Producer(producerConfiguration);
var correlationID = 0;
using (KafkaSimpleManager<string, Message> kafkaSimpleManager = new KafkaSimpleManager<string, Message>(simpleConfig))
{
var allPartitions = kafkaSimpleManager.GetTopicPartitionsFromZK(TopicName);
kafkaSimpleManager.RecreateSyncProducerPoolForMetadata();
var topicMetadata = kafkaSimpleManager.RefreshMetadata(0, ClientId, correlationID++, TopicName, true);
var simpleProducerId = kafkaSimpleManager.InitializeProducerPoolForTopic(0, ClientId, correlationID, TopicName, true, new ProducerConfiguration(producerConfiguration), true);
var simpleProducer = kafkaSimpleManager.GetProducerOfPartition(TopicName, PartitionId, true);
var consumer = kafkaSimpleManager.GetConsumer(TopicName, PartitionId);
while (true)
{
var batch = "Wiadomosc testowa " + DateTime.UtcNow;
var data = new ProducerData<string, Message>(TopicName, new Message(System.Text.Encoding.Default.GetBytes(batch)));
simpleProducer.Send(data); // Sends data here
for (var i = 0; i <= topicMetadata.PartitionsMetadata.Max(r => r.PartitionId); i++)
{
long earliest = 0;
long latest = 0;
kafkaSimpleManager.RefreshAndGetOffset(0, ClientId, correlationID, TopicName, PartitionId, true, out earliest, out latest);
var latestOffset = KafkaClientHelperUtils.GetValidStartReadOffset(KafkaOffsetType.Latest, earliest, latest, 100, 1);
var consumerData = consumer.FetchAndGetDetail(Host, TopicName, 0, PartitionId, latestOffset, int.MaxValue, 1000, 1000); // read data here
}
}
}