Я пишу долговременную функцию сущности, которая должна вызывать обратный вызов клиента (базовое приложение asp.net), как это сделала бы служебная шина Azure (onMessageCallback)?
В данный момент клиент отправляет запрос с URL-адресом обратного вызова.
public class ThrottlerClient : IThrottlerClient
{
private readonly ISecurityTokenFactory _securityTokenFactory;
private readonly HttpClient _client;
private string _completeHandlerUrl;
private string _errorHandlerUrl;
private string _receiveUrl;
public ThrottlerClient(HttpClient client, ISecurityTokenFactory securityTokenFactory)
{
_client = client;
_securityTokenFactory = securityTokenFactory;
_receiveUrl = Environment.GetEnvironmentVariable("Throttler:ReceiveUrl");
_completeHandlerUrl = Environment.GetEnvironmentVariable("Throttler:CompleteHandlerUrl");
_errorHandlerUrl = Environment.GetEnvironmentVariable("Throttler:ErrorHandlerUrl");
}
public async Task<string> Send(ICommand command, string submittedByName, string partitionKey)
{
var throttledRequest = new ThrottledRequest(command, submittedByName, partitionKey)
{
CompleteHandlerUrl = _completeHandlerUrl,
ErrorHandlerUrl = _errorHandlerUrl
};
var token = _securityTokenFactory.Create($"{nameof(ThrottlerClient)}");
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", $"{token}");
await _client.PostAsync(_receiveUrl, throttledRequest);
return throttledRequest.CorrelationId;
}
}
В надежде улучшить эту реализацию.Хотите знать, если кто-нибудь знает, как это реализовано или может указать мне на некоторые документы.