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

Implement the Smart Send Feature #11075

Closed
jsquire opened this issue Apr 6, 2020 · 0 comments
Closed

Implement the Smart Send Feature #11075

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

Comments

@jsquire
Copy link
Member

jsquire commented Apr 6, 2020

Summary

In order to ensure that callers of the EventHubProducer::SendAsync method are assured that the set of events being sent is of the appropriate size to be accepted by the Event Hubs service, creating of an EventDataBatch is necessary. The batch provides a deterministic and authoritative understanding of the allowable size and testing if a given event can fit through its TryAdd method. While the use of a batch is helpful for scenarios where events of large or varying size are used, or those where callers wish to try and send sets of events with the most efficient network use, it is a point of friction for other scenarios.

To better support scenarios where callers wish to send events more frequently and are not as concerned with maximizing efficiency, a SendAsync overload that accepts a set of events and/or a single event is preferable. These overloads may or may not be responsible for automatically breaking the set into batches as part of the process, but should be able to deal with partial failure scenarios if they apply. Some design work and approval remain outstanding.

Prerequisites:

  • Completion of the design and approvals by the feature team and architecture board.

Risks:

  • If the design deviates significantly from the current options, the estimation and scoping in this issue may become invalid and need to be revisited. Scheduling of implementation in the same milestone as a design is being finalized inherently carries a measure of risk.

Scope of Work

  • Implement the approved design, adding the necessary overload(s) for SendAsync and, if needed, CreateBatches, along with the test coverage necessary to ensure the implementation is complete, correct, and works as designed.

Success Criteria

  • The API surface needed to support the "smarter send" feature has been implemented, and the associated types preserve their current API with no breaking changes.

  • The tests necessary for its validation have been created or adjusted and pass reliably; tests that do not focus on the extension points have been removed and no base functionality is included.

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

References

@jsquire jsquire added Event Hubs Client This issue points to a problem in the data-plane of the library. labels Apr 6, 2020
@jsquire jsquire added this to the [2020] May milestone Apr 6, 2020
@jsquire jsquire self-assigned this Apr 6, 2020
@jsquire jsquire closed this as completed Apr 29, 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