public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
services.AddSingleton<IAsyncCacheProvider, MemoryCacheProvider>();
IPolicyRegistry<string> registry = services.AddPolicyRegistry();
services.AddHttpClient("RemoteServer", client =>
{
client.BaseAddress = new Uri("http://localhost:5000/api/");
client.DefaultRequestHeaders.Add("Accept", "application/json");
}).AddPolicyHandlerFromRegistry(PolicySelector);
//services.AddSingleton<IRequestService, RequestService>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
private IAsyncPolicy<HttpResponseMessage> PolicySelector(IReadOnlyPolicyRegistry<string> policyRegistry,
HttpRequestMessage httpRequestMessage)
{
// you could have some logic to select the right policy
// see https://nodogmablog.bryanhogan.net/2018/07/polly-httpclientfactory-and-the-policy-registry-choosing-the-right-policy-based-on-the-http-request/
return policyRegistry.Get<IAsyncPolicy<HttpResponseMessage>>("CachingPolicy");
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IAsyncCacheProvider cacheProvider, IPolicyRegistry<string> registry)
{
CachePolicy<HttpResponseMessage> cachePolicy = Policy.CacheAsync<HttpResponseMessage>(cacheProvider, TimeSpan.FromSeconds(30));
registry.Add("CachingPolicy", cachePolicy);
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
}
The sample works but as soon as I add the DuplicateRequestCollapser to the project
System.TypeLoadException: 'Method 'TryGet' in type 'Polly.Caching.Memory.MemoryCacheProvider' from
assembly 'Polly.Caching.Memory, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc'
does not have an implementation.'
Can anyone tell me what I am doing wrong?
This is not working just from adding the package and I havent even started on integrating the duplicate request collapser itself!
Hello
Im really struggling with Polly
My task is to use Polly to "Squash multiple requests into a single request"
For this I am trying to use this package
As a starting point I used
https://nodogmablog.bryanhogan.net/2018/11/caching-in-polly-6-and-the-httpclientfactory/#:~:text=Polly%20allows%20you%20to%20cache,you%20define%20polices%20in%20startup.
This gave me a startup of
The sample works but as soon as I add the DuplicateRequestCollapser to the project
I had a compilation error on
That was easy to fix I changed to
Now when I run I get the error
Can anyone tell me what I am doing wrong?
This is not working just from adding the package and I havent even started on integrating the duplicate request collapser itself!
Paul