feat: add fn n_routes() to RouteProvider trait
#584
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
RouteProvider traitis extended withfn n_routes(), which generates up tondifferent routing urls:pub trait RouteProvider: std::fmt::Debug + Send + Sync { /// Generates the next routing URL based on the internal routing logic. /// /// This method returns a single `Url` that can be used for routing. /// The logic behind determining the next URL can vary depending on the implementation fn route(&self) -> Result<Url, AgentError>; /// Generates up to `n` different routing URLs in order of priority. /// /// This method returns a vector of `Url` instances, each representing a routing /// endpoint. The URLs are ordered by priority, with the most preferred route /// appearing first. The returned vector can contain fewer than `n` URLs if /// fewer are available. fn n_ordered_routes(&self, n: usize) -> Result<Vec<Url>, AgentError>; }This newly introduced method should facilitate retry logic, in case routing url is unhealthy.
Calling the
fn route()for retries was (and still is) possible. However, implementations do not provide guarantees that urls returned in sequential invocations are unique. Functionfn n_routes()comes at rescue and returns up tonunique routing urls, which are also ordered by priority.How Has This Been Tested?
Additional tests have been added.
Checklist: