public ProducerConfig(Int32 throttleSize, Int32 throttleMilliseconds, MessageCodec messageCodec, AcknowlegeStrategy acknowlegeStrategy) { ThrottleSize = throttleSize; ThrottleMilliseconds = throttleMilliseconds; MessageCodec = messageCodec; AcknowlegeStrategy = acknowlegeStrategy; }
public async Task <Int64> ProduceAsync(String topic, Int32 partition, IList <Message> messages, AcknowlegeStrategy strategy = AcknowlegeStrategy.Written, MessageCodec codec = MessageCodec.None) { EnsureLegalTopicSpelling(topic); var broker = _topicBrokerDispatcher.SelectBroker(topic, partition); var request = new ProduceRequest(topic, partition, messages); var response = (ProduceResponse)(await SubmitRequestAsync(broker.ToUri(), request)); response.TryThrowFirstErrorOccured(); return(response.TopicPartitions[0].Details[0].Offset); }
/*public ProduceRequest( IDictionary<String, List<Message>> messages, * Int32 partition, * AcknowlegeStrategy strategy = AcknowlegeStrategy.Written) * : base(ApiKey.ProduceRequest) { * if (messages == null || messages.Count == 0) { * return; * } * * RequiredAcks = strategy; //important * Timeout = 10; * var topicPartitions = new List<ProduceRequestTopicPartition>(); * foreach (var list in messages) { * if(list.Value.Count == 0) { * continue; * } * * var topicPartition = new ProduceRequestTopicPartition { * TopicName = list.Key, * Details = new[] { * new ProduceRequestTopicDetail { * Partition = partition, * MessageSet = list.Value.Count > 1 * ? new GZipMessageSet() : new MessageSet() * }, * } * }; * * var messageEntities = new List<MessageSetDetail>(); * foreach (var item in list.Value) { * var messageSet = new MessageSetDetail(); * messageEntities.Add(messageSet); * messageSet.Message = new MessageSetItem(); * if (item.Key != null) { * messageSet.Message.Key = Encoding.UTF8.GetBytes(item.Key); * } * messageSet.Message.Value = Encoding.UTF8.GetBytes(item.Value); * * } * topicPartition.Details[0].MessageSet.Items = messageEntities.ToArray(); * topicPartitions.Add(topicPartition); * } * TopicPartitions = topicPartitions.ToArray(); * }*/ public ProduceRequest(String topic, Int32 partition, IList <Message> messages, AcknowlegeStrategy strategy = AcknowlegeStrategy.Written, MessageCodec codec = MessageCodec.None) : base(ApiKey.ProduceRequest) { if (String.IsNullOrWhiteSpace(topic)) { throw new ArgumentOutOfRangeException("topic"); } if (messages == null || messages.Count == 0) { throw new ArgumentOutOfRangeException("messages"); } var messageEntities = new MessageSetDetail[messages.Count]; for (int i = 0; i < messageEntities.Length; i++) { var messageSet = messageEntities[i] = new MessageSetDetail(); messageSet.Message = new MessageSetItem(); //messageSet.Message.Attributes = codec; //Error when using nocompress enum if (messages[i].Key != null) { messageSet.Message.Key = Encoding.UTF8.GetBytes(messages[i].Key); } if (messages[i].Value != null) { messageSet.Message.Value = Encoding.UTF8.GetBytes(messages[i].Value); } } RequiredAcks = strategy; //important Timeout = 10; if (codec == MessageCodec.None) { TopicPartitions = new[] { new ProduceRequestTopicPartition { TopicName = topic, Details = new [] { new ProduceRequestTopicDetail { Partition = partition, MessageSet = new MessageSet { Items = messageEntities } } } } }; } else if (codec == MessageCodec.Gzip) { TopicPartitions = new[] { new ProduceRequestTopicPartition { TopicName = topic, Details = new [] { new ProduceRequestTopicDetail { Partition = partition, MessageSet = new GZipMessageSet { Items = messageEntities } } } } }; } else { throw new ArgumentOutOfRangeException("codec", String.Format("{0} not support", codec)); } }
public Int64 Produce(String topic, Int32 partition, IList <String> messages, AcknowlegeStrategy strategy = AcknowlegeStrategy.Written, MessageCodec codec = MessageCodec.None) { return(Produce(topic, partition, messages.Select(x => (Message)x).ToArray(), strategy, codec)); }