Skip to content
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

Idempotent Publishing Support: Client Infrastructure #13941

Closed
jsquire opened this issue Aug 4, 2020 · 0 comments
Closed

Idempotent Publishing Support: Client Infrastructure #13941

jsquire opened this issue Aug 4, 2020 · 0 comments
Assignees
Labels
Client This issue points to a problem in the data-plane of the library. Event Hubs

Comments

@jsquire
Copy link
Member

jsquire commented Aug 4, 2020

Summary

When publishing events to Event Hubs, timeouts or other transient failures may introduce ambiguity into the understanding of whether a batch of events was received by the service. Because Event Hubs has an at-least-once guarantee for delivery and consumers are strongly encouraged to be idempotent in their processing, the common approach is to resend any batch where the status of receipt was unknown.

In some specialized scenarios, producers have a need to make efforts to avoid publishing duplicate events. To support these scenarios, the Event Hubs service is adding support for annotating messages with metadata to indicate the sequence in which events were intended to be published and to use that as an indicator of which events were already received by a the target partition. This functionality comes at a performance cost, however, and requires producers to follow a strict set of semantics to allow the service to perform server-side deduplication based on the intent of the producer.

Scope of Work

  • Implement the design for idempotent publishing.

Success Criteria

  • The design has been implemented; developers can opt-into the idempotent publishing, the producer client tracks the appropriate state.

  • The tests necessary for its validation have been created or adjusted and pass reliably.

  • The existing test suite continues to produce deterministic results and pass reliably.

Out of Scope

  • Service integration; this is covered under a dedicated issue.

Related Issues and References

@jsquire jsquire added Event Hubs Client This issue points to a problem in the data-plane of the library. blocking-release Blocks release labels Aug 4, 2020
@jsquire jsquire added this to the [2020] September milestone Aug 4, 2020
@jsquire jsquire self-assigned this Aug 4, 2020
@jsquire jsquire changed the title Idempotent Publishing Support Idempotent Publishing Support: Client Infrastructure Aug 31, 2020
@jsquire jsquire removed the blocking-release Blocks release label Aug 31, 2020
@jsquire jsquire closed this as completed Sep 4, 2020
@github-actions github-actions bot locked and limited conversation to collaborators Mar 28, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Client This issue points to a problem in the data-plane of the library. Event Hubs
Projects
None yet
Development

No branches or pull requests

1 participant