У меня есть обработчик сообщений, который накапливает сообщения в MemoryCache за заданное время, так что будет обрабатываться только последнее.
Когда происходит обратный вызов, я хочу перенаправить другое сообщение обработчику с использованием транспорта sql, но соединение sql теперь закрыто.
Код выглядит примерно так:
public IBus SqlBus { get; set; }
public async Task Handle(ServiceMessage message)
{
await base.Handle(() =>
{
cache.Set(CacheKey, message, new CacheItemPolicy()
{
AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10),
RemovedCallback = new CacheEntryRemovedCallback(CacheCallback),
});
return Task.FromResult(0);
}, message);
}
private void CacheCallback(CacheEntryRemovedArguments arguments)
{
if (arguments.RemovedReason == CacheEntryRemovedReason.Expired)
{
var message = arguments.CacheItem.Value as ServiceMessage;
SqlBus.Send(new AnotherMessage()).GetAwaiter().GetResult();
}
}
Есть ли подходы, которые позволят мне это сделать?