mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-10-14 20:13:47 +00:00
Improved enterprise service (#493)
This commit is contained in:
1 parent
fcf511cea8
commit
6979a73e5c
12 files changed
+191
-118
No files matched your search
@@ -15,9 +15,17 @@ public sealed class MessageBus
|
||||
private readonly ConcurrentQueue<Message> messageQueue = new();
|
||||
private readonly SemaphoreSlim sendingSemaphore = new(1, 1);
|
||||
|
||||
private static ILogger<MessageBus>? LOG;
|
||||
|
||||
private MessageBus()
|
||||
{
|
||||
}
|
||||
|
||||
public void Initialize(ILogger<MessageBus> logger)
|
||||
{
|
||||
LOG = logger;
|
||||
LOG.LogInformation("Message bus initialized.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Define for which components and events you want to receive messages.
|
||||
@@ -48,7 +56,7 @@ public sealed class MessageBus
|
||||
public async Task SendMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data = default)
|
||||
{
|
||||
this.messageQueue.Enqueue(new Message(sendingComponent, triggeredEvent, data));
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
await this.sendingSemaphore.WaitAsync();
|
||||
@@ -61,11 +69,16 @@ public sealed class MessageBus
|
||||
|
||||
var eventFilter = this.componentEvents[receiver];
|
||||
if (eventFilter.Length == 0 || eventFilter.Contains(triggeredEvent))
|
||||
|
||||
// We don't await the task here because we don't want to block the message bus:
|
||||
_ = receiver.ProcessMessage(message.SendingComponent, message.TriggeredEvent, message.Data);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOG?.LogError(e, "Error while sending message.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.sendingSemaphore.Release();
|
||||
|
||||
Reference in new issue
Block a user