[
https://issues.apache.org/jira/browse/KAFKA-4846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15897564#comment-15897564
]
Matt Sicker commented on KAFKA-4846:
------------------------------------
I know I'd love this feature personally for distributed trace logging a la
Zipkin. I don't wish to contribute overhead to instrumented services, and
increasing memory pressure is one of those ways to get some pushback from
certain mechanical sympathy type people.
We spent a large epic in Log4j 2.6 making the main execution paths
garbage-free, and since then, we've added GC-free support to more and more
components. Of course, it doesn't make sense to add this sort of feature to
every library, but seeing as how I find that the KafkaAppender has the best
potential for networked logging other than the FlumeAppender (I'm not sure how
performance compares here), it'd be great to support this use case in Log4j as
such.
I did find an [alternative Kafka
client|https://github.com/blackberry/Krackle/], but it appears to be limited to
the 0.8 message format as well as not entirely what we're looking for.
> Use KafkaProducer without allocating a new ProducerRecord for each message
> sent
> -------------------------------------------------------------------------------
>
> Key: KAFKA-4846
> URL: https://issues.apache.org/jira/browse/KAFKA-4846
> Project: Kafka
> Issue Type: Improvement
> Components: producer
> Affects Versions: 0.10.2.0
> Reporter: Mikael Ståldal
>
> The KafkaProducer API requires you to allocate a new ProducerRecord for each
> record sent. This is unfortunate since some application wants to reduce
> object allocations to minimize GC work. This would be useful for Log4j to
> allow [garbage free
> logging|https://logging.apache.org/log4j/2.x/manual/garbagefree.html] in its
> [Kafka
> appender|https://logging.apache.org/log4j/2.x/manual/appenders.html#KafkaAppender].
> This could be solved by adding a new method with unrolled arguments to
> KafkaProducer, like this:
> {code}
> Future<RecordMetadata> send(String topic, Integer partition, Long timestamp,
> K key, V value);
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)