/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
tests/MassTransit.Benchmark/RequestResponse/InMemoryRequestResponseTransport.cs
55 строк
2 KB
Chris Patterson
Changed endpoint client factory to avoid Task return value, added support for RabbitMQ direct REPLY-TO request client using SetRabbitMqReplyToRequestClientFactory
08 окт 2024, 21:29
08 окт 2024, 21:29
30450b5
Код
Авторство
О чём код?
namespace MassTransitBenchmark.RequestResponse { using System; using System.Threading.Tasks; using MassTransit; public class InMemoryRequestResponseTransport : IRequestResponseTransport { readonly InMemoryOptionSet _optionSet; IBusControl _busControl; IClientFactory _clientFactory; IRequestResponseSettings _settings; Uri _targetEndpointAddress; public InMemoryRequestResponseTransport(InMemoryOptionSet optionSet, IRequestResponseSettings settings) { _optionSet = optionSet; _settings = settings; } public void GetBusControl(Action<IReceiveEndpointConfigurator> callback) { _busControl = Bus.Factory.CreateUsingInMemory(x => { x.AutoStart = true; x.ConcurrentMessageLimit = _optionSet.TransportConcurrencyLimit; x.ReceiveEndpoint("rpc_consumer", e => { callback(e); _targetEndpointAddress = e.InputAddress; }); }); _busControl.Start(); _clientFactory = _busControl.CreateReplyToClientFactory(); } public async Task<IRequestClient<T>> GetRequestClient<T>(TimeSpan settingsRequestTimeout) where T : class { return _clientFactory.CreateRequestClient<T>(_targetEndpointAddress, settingsRequestTimeout); } public void Dispose() { _busControl.Stop(); } } }