-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initial cut of AWS Kinesis streaming #8967
base: main
Are you sure you want to change the base?
Conversation
this is what I've been waiting for. thanks :) |
[PreferLocalPlacement] | ||
public class StreamCheckpointerGrainGrain : Grain, IStreamCheckpointerGrain | ||
{ | ||
private readonly IPersistentState<StreamCheckpointerGrainState> _state; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm here to drop a very trivial question : )
Is there any reason not to use the native checkpoint of Kinesis?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@scalalang2 to my knowledge, Kinesis doesn't have the ability to "keep track" of the current position for a consumer so that it can resume from a specified position if the consumer is stopped.
Kafka has the capability (I think it's called "Commit").
But if you can point me in the direction of the Kinesis API you have in mind, I'm happy to take a look.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dpbevin
Thanks for reply : )
to my knowledge, Kinesis doesn't have the ability to "keep track" of the current position for a consumer
You're right, I misunderstood Kinesis natively has concept of "checkpoint".
It uses DynamoDB to save checkpoint sample code official docs,
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Appreciate the info.
I could have added a DynamoDB checkpointer, which would have been similar to how the Azure EventHub streaming uses Azure Table storage for checkpoints but I felt that a grain-based solution would work in more places and... my intended use of Kinesis streaming won't be able to make use of DynamoDB.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I also agree this, thx : )
I felt that a grain-based solution would work in more places
5b93e76
to
30ea2c9
Compare
CI build failing due to missing package even though the package can be selected from that feed locally.
|
@ReubenBond |
Just wanted to check in and see if there’s been any progress on this. It’s something I’ve been hoping to have for a while. |
Relates to #8966
An initial attempt at producing a persistent stream implementation for AWS Kinesis streams. This is 100% an early PR to solicit feedback (and gauge interest?).
Tested locally against: https://github.com/etspaceman/kinesis-mock
This approach uses the
AmazonKinesisClient
from the .NET SDK, not the "KCL Consumer" that requires a running JVM 🤮Includes
Remaining work
Useful references:
Microsoft Reviewers: Open in CodeFlow