Klasse InProcessRuntime
public sealed class InProcessRuntime : IAgentRuntime, ISaveState, IHostedService
- Vererbung
-
InProcessRuntime
- Implementiert
- Geerbte Member
- Erweiterungsmethoden
Konstruktoren
InProcessRuntime()
public InProcessRuntime()
Eigenschaften
DeliverToSelf
public bool DeliverToSelf { get; set; }
Eigenschaftswert
Methoden
AddSubscriptionAsync(ISubscriptionDefinition)
Fügt eine neue Abonnement für die Laufzeit hinzu, um sie bei der Verarbeitung veröffentlichter Nachrichten zu verwalten.
public ValueTask AddSubscriptionAsync(ISubscriptionDefinition subscription)
Parameter
subscriptionISubscriptionDefinitionDas hinzuzufügende Abonnement.
Rückgabe
- ValueTask
Eine Aufgabe, die den asynchronen Vorgang darstellt.
GetAgentAsync(AgentId, bool)
Ruft einen Agenten anhand seiner eindeutigen Kennung ab.
public ValueTask<AgentId> GetAgentAsync(AgentId agentId, bool lazy = true)
Parameter
agentIdAgentIdDie eindeutige Kennung des Agenten.
lazyboolWenn
true, wird der Agent verzögert abgerufen.
Rückgabe
- ValueTask<AgentId>
Eine Aufgabe, die den asynchronen Vorgang darstellt und die Agenten-ID zurückgibt.
GetAgentAsync(AgentType, string, bool)
Ruft einen Agenten anhand seines Typs ab.
public ValueTask<AgentId> GetAgentAsync(AgentType agentType, string key = "default", bool lazy = true)
Parameter
agentTypeAgentTypeDer Typ des Agenten.
keystringEin optionaler Schlüssel zur Angabe von Variationen des Agenten. Standardwert ist "default".
lazyboolWenn
true, wird der Agent verzögert abgerufen.
Rückgabe
- ValueTask<AgentId>
Eine Aufgabe, die den asynchronen Vorgang darstellt und die Agenten-ID zurückgibt.
GetAgentAsync(string, string, bool)
Ruft einen Agenten anhand seiner String-Darstellung ab.
public ValueTask<AgentId> GetAgentAsync(string agent, string key = "default", bool lazy = true)
Parameter
agentstringDie String-Darstellung des Agenten.
keystringEin optionaler Schlüssel zur Angabe von Variationen des Agenten. Standardwert ist "default".
lazyboolWenn
true, wird der Agent verzögert abgerufen.
Rückgabe
- ValueTask<AgentId>
Eine Aufgabe, die den asynchronen Vorgang darstellt und die Agenten-ID zurückgibt.
GetAgentMetadataAsync(AgentId)
Ruft Metadaten für einen Agenten ab.
public ValueTask<AgentMetadata> GetAgentMetadataAsync(AgentId agentId)
Parameter
agentIdAgentIdDie ID des Agenten.
Rückgabe
- ValueTask<AgentMetadata>
Eine Aufgabe, die den asynchronen Vorgang darstellt und die Agentenmetadaten zurückgibt.
LoadAgentStateAsync(AgentId, JsonElement)
Lädt den gespeicherten Zustand in einen Agenten.
public ValueTask LoadAgentStateAsync(AgentId agentId, JsonElement state)
Parameter
agentIdAgentIdDie ID des Agenten, dessen Zustand wiederhergestellt wird.
stateJsonElementDas wiederherzustellende Zustands-Dictionary.
Rückgabe
- ValueTask
Eine Aufgabe, die den asynchronen Vorgang darstellt.
LoadStateAsync(JsonElement)
Lädt einen zuvor gespeicherten Zustand in das Objekt.
public ValueTask LoadStateAsync(JsonElement state)
Parameter
stateJsonElementEin Dictionary, das den gespeicherten Zustand darstellt. Die Struktur des Zustands ist implementierungsabhängig, muss aber JSON-serialisierbar sein.
Rückgabe
- ValueTask
Eine Aufgabe, die den asynchronen Vorgang darstellt.
ProcessNextMessageAsync(CancellationToken)
public ValueTask ProcessNextMessageAsync(CancellationToken cancellation = default)
Parameter
cancellationCancellationToken
Rückgabe
PublishMessageAsync(object, TopicId, AgentId?, string?, CancellationToken)
Veröffentlicht eine Nachricht an alle Agenten, die das angegebene Thema abonniert haben. Es werden keine Antworten auf die Veröffentlichung erwartet.
public ValueTask PublishMessageAsync(object message, TopicId topic, AgentId? sender = null, string? messageId = null, CancellationToken cancellation = default)
Parameter
messageobjectDie zu veröffentlichende Nachricht.
topicTopicIdDas Thema, an das die Nachricht gesendet werden soll.
senderAgentId?Der Agent, der die Nachricht sendet. Standardwert ist
null.messageIdstringEine eindeutige Nachrichten-ID. Wenn
null, wird eine neue generiert.cancellationCancellationToken
Rückgabe
- ValueTask
Eine Aufgabe, die den asynchronen Vorgang darstellt.
Ausnahmen
- UndeliverableException
Wird ausgelöst, wenn die Nachricht nicht zugestellt werden kann.
RegisterAgentFactoryAsync(AgentType, Func<AgentId, IAgentRuntime, ValueTask<IHostableAgent>>)
Registriert eine Agentenfabrik bei der Laufzeit und ordnet sie einem bestimmten Agententyp zu. Der Typ muss eindeutig sein.
public ValueTask<AgentType> RegisterAgentFactoryAsync(AgentType type, Func<AgentId, IAgentRuntime, ValueTask<IHostableAgent>> factoryFunc)
Parameter
typeAgentTypeDer Agententyp, der der Fabrik zugeordnet werden soll.
factoryFuncFunc<AgentId, IAgentRuntime, ValueTask<IHostableAgent>>Eine Funktion, die die Agenteninstanz asynchron erstellt.
Rückgabe
- ValueTask<AgentType>
Eine Aufgabe, die den asynchronen Vorgang darstellt und den registrierten AgentType zurückgibt.
RegisterAgentFactoryAsync<TAgent>(AgentType, Func<AgentId, IAgentRuntime, ValueTask<TAgent>>)
public ValueTask<AgentType> RegisterAgentFactoryAsync<TAgent>(AgentType type, Func<AgentId, IAgentRuntime, ValueTask<TAgent>> factoryFunc) where TAgent : IHostableAgent
Parameter
typeAgentTypefactoryFuncFunc<AgentId, IAgentRuntime, ValueTask<TAgent>>
Rückgabe
Typparameter
TAgent
RemoveSubscriptionAsync(string)
Entfernt ein Abonnement aus der Laufzeit.
public ValueTask RemoveSubscriptionAsync(string subscriptionId)
Parameter
subscriptionIdstringDie eindeutige Kennung des zu entfernenden Abonnements.
Rückgabe
- ValueTask
Eine Aufgabe, die den asynchronen Vorgang darstellt.
Ausnahmen
- KeyNotFoundException
Wird ausgelöst, wenn das Abonnement nicht existiert.
RunUntilIdleAsync()
public Task RunUntilIdleAsync()
Rückgabe
SaveAgentStateAsync(AgentId)
Speichert den Zustand eines Agenten. Das Ergebnis muss JSON-serialisierbar sein.
public ValueTask<JsonElement> SaveAgentStateAsync(AgentId agentId)
Parameter
agentIdAgentIdDie ID des Agenten, dessen Zustand gespeichert wird.
Rückgabe
- ValueTask<JsonElement>
Eine Aufgabe, die den asynchronen Vorgang darstellt und ein Dictionary des gespeicherten Zustands zurückgibt.
SaveStateAsync()
Speichert den aktuellen Zustand des Objekts.
public ValueTask<JsonElement> SaveStateAsync()
Rückgabe
- ValueTask<JsonElement>
Eine Aufgabe, die den asynchronen Vorgang darstellt und ein Dictionary mit dem gespeicherten Zustand zurückgibt. Die Struktur des Zustands ist implementierungsabhängig, muss aber JSON-serialisierbar sein.
SendMessageAsync(object, AgentId, AgentId?, string?, CancellationToken)
Sendet eine Nachricht an einen Agenten und erhält eine Antwort. Diese Methode sollte zur direkten Kommunikation mit einem Agenten verwendet werden.
public ValueTask<object?> SendMessageAsync(object message, AgentId recepient, AgentId? sender = null, string? messageId = null, CancellationToken cancellationToken = default)
Parameter
messageobjectDie zu sendende Nachricht.
recepientAgentIdDer Agent, an den die Nachricht gesendet werden soll.
senderAgentId?Der Agent, der die Nachricht sendet. Sollte
nullsein, wenn von einer externen Quelle gesendet.messageIdstringEine eindeutige Kennung für die Nachricht. Wenn
null, wird eine neue generiert.cancellationTokenCancellationTokenEin Token zum Abbrechen des Vorgangs bei Bedarf.
Rückgabe
- ValueTask<object>
Eine Aufgabe, die den asynchronen Vorgang darstellt und die Antwort des Agenten zurückgibt.
Ausnahmen
- CantHandleException
Wird ausgelöst, wenn der Empfänger die Nachricht nicht verarbeiten kann.
- UndeliverableException
Wird ausgelöst, wenn die Nachricht nicht zugestellt werden kann.
StartAsync(CancellationToken)
public ValueTask StartAsync(CancellationToken token = default)
Parameter
tokenCancellationToken
Rückgabe
StopAsync(CancellationToken)
public ValueTask StopAsync(CancellationToken token = default)
Parameter
tokenCancellationToken
Rückgabe
TryGetAgentProxyAsync(AgentId)
Versucht, einen AgentProxy für den angegebenen Agenten abzurufen.
public ValueTask<AgentProxy> TryGetAgentProxyAsync(AgentId agentId)
Parameter
agentIdAgentIdDie ID des Agenten.
Rückgabe
- ValueTask<AgentProxy>
Eine Aufgabe, die den asynchronen Vorgang darstellt und im Erfolgsfall einen AgentProxy zurückgibt.