Comments (10)
And to clarify the behavior of Event Hubs is:
- Retrieve in batch (regardless of if single message function or batch message function)
2a. If they have written their function to process individual messages
- Do a
Task.WhenAll()
and parallel-y invoke a function for each message in the batch. So if you got a batch of 30 messages, you would have 30 function invocations tasks kicked off and potentially processing in parallel.
2b. If they have written their function to process a batch (recommended and default) - Pass the entire batch into a single execution
- Wait for batch to process (either all the concurrent executions or the single batch execution)
- Checkpoint and retrieve the next batch
from azure-functions-kafka-extension.
Unlike EventHubs, Kafka provides checkpoint saving internally (saved as a compact topic). The idea is to use this but save it depending on how settings have been defined, right?
from azure-functions-kafka-extension.
I think this makes sense. The timing of the checkpoint is a bit important though. We want to have "at least once" delivery, so as long as the Kafka internal checkpointing allows us to "checkpoint" a batch after processing that should work great.
from azure-functions-kafka-extension.
Yes, we call commit topic/partition/offset
. Current implementation does that after batch is consumed, but I need to add more customisation and retries.
from azure-functions-kafka-extension.
@fbeltrao does it checkpoint as soon as batch is read from Kafka, before it is processed?
from azure-functions-kafka-extension.
@fbeltrao let's chat about what "more customisation" we need in this first milestone. We can always come back and make it more customisable in future.
from azure-functions-kafka-extension.
My proposal:
- For triggers with batch (KafkaEventData[]) we commit after successfully triggering
- For single event triggers we commit every X times
from azure-functions-kafka-extension.
Batch sounds good
For single, I am not sure what you mean by every X times.
If I read 1 event from Kafka, process it do we not checkpoint then?
That means if another event later somewhere fails then this one we've already processed successfully will be replayed?
from azure-functions-kafka-extension.
Correct. Now that I think about, maybe is better to do the way you described, saving after each message, giving the most accurate solution out of the box.
Performance is bad, but anything less than trivial should be using batch anyway.
from azure-functions-kafka-extension.
Implemented as above
from azure-functions-kafka-extension.
Related Issues (20)
- Target scaler is not working (.NET) HOT 1
- Inconsistency between consumer and producer config HOT 1
- How to do exception handling in kafka output trigger if trigger fails to write to kafka HOT 2
- Distributed Tracing and kafka trigger
- Kafka trigger parameterization issues HOT 2
- Confluent Packages out of date causing runtime error
- Support for Bring your own certificates (.pfx)
- SchemaRegistryUrl attribute does not work with Java Azure Functions
- Enable support for rich datatypes in dotnet - isolated based apps using Kafka extension
- Kafka Trigger, Exception in Kafka subscriber, System.ObjectDisposedException at Confluent.Kafka.Impl.SafeKafkaHandle.ThrowIfHandleClosed
- Combine Key, Value, Header, TimeStamp in the same .Net object
- Make Kafka Output a first class typed citizen
- Support for librdkafka compression.codec and compression.type
- Kafka extension V3.9.0 issue HOT 1
- A lot of redundant logs produced
- Azure Function (Java ) to Confluent Kafka output binding error
- Typescript Support for Functions v4?
- Upgrading .NET version for Extension Projects
- Confluent SDK upgrade
- Scale to Zero Support for Kafka Extension
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from azure-functions-kafka-extension.