我希望能夠從非結構應用程序或服務調用有狀態的HTTP/WebApi服務。我可以使用發佈的有狀態服務的URL,但希望通過解析分區端點來將故障轉移到另一個主服務器。從Fabric外部使用Service Fabric CommunicationClient和servicePartitionClient?
我首先嚐試在桌面控制檯應用程序中進行測試,但未能在InvokeWithRetryAsync中執行通信Lambda函數。
這是死路一條(非光纖應用程序無法解析有狀態的服務),還是有另一種方法來解析來自非光纖應用程序的端點。否則,我可能會將請求包裝在「中間人」無狀態服務(如Wordcount Webservice)中。
var result = await servicePartitionClient.InvokeWithRetryAsync(
client =>
{
//never reaches here.
Uri serviceAddress = new Uri(client.BaseAddress, "SetConfiguration");
HttpWebRequest request = WebRequest.CreateHttp(serviceAddress);
request.Method = "POST";
//Add the content into the body
byte[] byteArray = Encoding.UTF8.GetBytes(_datapacket);
request.ContentType = "application/json";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
request.Timeout = (int)client.OperationTimeout.TotalMilliseconds;
request.ReadWriteTimeout = (int)client.ReadWriteTimeout.TotalMilliseconds;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//for now, just return ok
return Task.FromResult<string>("ok");
});
感謝您爲我節省安全凸起。 – MarkD