Comments (5)
You know, I don't think there is a way. I'd be happy to add one, probably via a constructor that just lets you pass your own httpclient (not sure who would be responsible for disposing though), but I'm travelling this week so I can't do it quickly. I'd be happy to accept a PR or do it when I'm home again.
from consuldotnet.
I've added a constructor that takes an HttpClient, @robertmircea .
https://github.com/PlayFab/consuldotnet/blob/develop/Consul/Client.cs#L417-L444
Use it with something like:
var hc = new HttpClient();
hc.Timeout = TimeSpan.FromDays(10);
using (var client = new ConsulClient(new ConsulClientConfiguration(), hc))
{
await client.KV.Put(new KVPair("kv/customhttpclient"));
}
The ConsulClient
will modify and will dispose of the HttpClient
when the ConsulClient
is disposed, though I'm not sure if this is the behavior you'd expect or not. Please let me know. You should be able to grab nuget packages from https://ci.appveyor.com/project/highlyunavailable/consuldotnet/build/0.6.3.211-develop/artifacts if you want to try this out.
from consuldotnet.
Thanks for making this available. I favor the pattern where external dependencies are not managed from lifecycle point of view by the components using them. So, in our case, if I pass in ConsulClient's class constructor a HttpClient object, I would like to be responsible for the moment when is the right time to dispose it. This prevents of unwanted and unexpected side effects.
I would appreciate, if you could remove the disposal step from library.
from consuldotnet.
Fair enough, will do. I've also removed any mutation of the passed HttpClient. You are responsible for creating one that accepts application/json
and the constructor will throw an ArgumentException
if an HttpClient that does not accept application/json
is passed in. No validation of the Timeout
parameter is done, either, but if the Timeout
parameter is too low (under about 10 minutes) blocking queries will fail with timeout errors rather than return as expected. This also means you can make a single HttpClient and pass it around to multiple ConsulClients if you wish.
The pattern now looks like:
using (var hc = new HttpClient())
{
hc.Timeout = TimeSpan.FromDays(10);
hc.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
using (var client = new ConsulClient(new ConsulClientConfiguration(), hc))
{
await client.KV.Put(new KVPair("customhttpclient") { Value = System.Text.Encoding.UTF8.GetBytes("hello world") });
}
}
I'll merge this in and release a build.
from consuldotnet.
And released: https://www.nuget.org/packages/Consul/0.6.3.4 Have fun!
from consuldotnet.
Related Issues (20)
- Consul.ConsulRequestException: Unexpected response, status code InternalServerError: rpc error making call: EOF HOT 4
- No way to read ServiceMeta
- ConsulConfigurationException throw if URL scheme specified in CONSUL_HTTP_ADDR environment variable. HOT 1
- Latest version is not available in Nuget HOT 2
- Add Meta dictionary to AgentService and AgentServiceRegistration HOT 1
- Does not work on netcoreapp2.1 HOT 5
- Enable HttpClientHandler pooling? HOT 2
- KV Txn call may deadlock HOT 3
- Grpc heartbeat HOT 2
- Support for Consul Connect? HOT 1
- 0.9 Port Status
- No .Net Framework 4.0 compatibility HOT 1
- Filter Service and Health by multi tags
- I hope to support the heartbeat of grpc
- Agent.ServiceRegister hangs after KV.Get with new QueryOptions {WaitIndex = index}
- Aquire Lock custom KV value
- Service status
- Bad request : Invalid wait time and multiple Get request while trying to acquire leader HOT 2
- Cluster support
- Add consul.dll.xml into the NuGet package
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from consuldotnet.