sql >> Databáze >  >> NoSQL >> Redis

ServiceStack:Obnovit kanál při ručním vyvolání služby?

Které části potrubí jsou ztraceny?

Žádný z kanálů požadavků se neprovede:

myRequestService.Any(e.Request);

Fyzicky pouze vyvolává Any Metoda C# vaší MyRequestService třída, nedělá (ani nemůže) dělat nic jiného.

Doporučeným způsobem pro vyvolání dalších služeb během požadavku na službu je použití Service Gateway.

Pokud však chcete vyvolat službu mimo požadavek HTTP, můžete použít bránu RPC pro provádění nedůvěryhodných služeb, protože vyvolává úplný kanál požadavků a převádí odpovědi na chyby HTTP na odezvy na typované chyby:

HostContext.AppHost.RpcGateway.ExecuteAsync()

Pro spouštění interních/důvěryhodných služeb mimo požadavek na službu můžete použít HostContext.AppHost.ExecuteMessage, který používá ServiceStack MQ, který používá filtry požadavků/odpovědí na zprávy, filtry akcí služeb a události.

Zaregistroval jsem se u container.AddScoped

Nepoužívejte závislosti v rozsahu požadavku mimo požadavek HTTP, použijte Singleton, pokud jsou závislosti ThreadSafe, jinak je zaregistrujte jako přechodné. Pokud potřebujete předat úložiště na žádost, předejte je v IRequest.Items .




  1. Mongoose vytáhne ObjectId z pole

  2. Nutí použití indexu 2dsphere na schéma mongoose, aby bylo vyžadováno pole umístění?

  3. Vypršení platnosti RedisTemplate nefunguje

  4. Redis Out of Memory Výjimky, ale stále mají dostatek paměti