parent
f9c1bb957f
commit
fedccf327f
@ -0,0 +1,9 @@ |
||||
namespace BusCommPracticeConsoleApp.Models |
||||
{ |
||||
public interface IMessageBus |
||||
{ |
||||
void Subscribe(Action<string> subscriber); |
||||
void Unsubscribe(Action<string> subscriber); |
||||
void Publish(string message); |
||||
} |
||||
} |
@ -0,0 +1,26 @@ |
||||
|
||||
namespace BusCommPracticeConsoleApp.Models |
||||
{ |
||||
public class MessageBus : IMessageBus |
||||
{ |
||||
private readonly List<Action<string>> _subscribers = new List<Action<string>>(); |
||||
|
||||
public void Publish(string message) |
||||
{ |
||||
foreach (var subscriber in _subscribers) |
||||
{ |
||||
subscriber(message); |
||||
} |
||||
} |
||||
|
||||
public void Subscribe(Action<string> subscriber) |
||||
{ |
||||
_subscribers.Add(subscriber); |
||||
} |
||||
|
||||
public void Unsubscribe(Action<string> subscriber) |
||||
{ |
||||
_subscribers.Remove(subscriber); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,18 @@ |
||||
namespace BusCommPracticeConsoleApp.Models |
||||
{ |
||||
public class Publisher |
||||
{ |
||||
private readonly IMessageBus _messageBus; |
||||
|
||||
public Publisher(IMessageBus messageBus) |
||||
{ |
||||
_messageBus = messageBus; |
||||
} |
||||
|
||||
public void SendMessage(string message) |
||||
{ |
||||
Console.WriteLine($"[LOG] Publisher: Sending Message - {message}"); |
||||
_messageBus.Publish(message); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,18 @@ |
||||
namespace BusCommPracticeConsoleApp.Models |
||||
{ |
||||
public class Subscriber |
||||
{ |
||||
private readonly string _name; |
||||
|
||||
public Subscriber(IMessageBus messageBus, string name) |
||||
{ |
||||
_name = name; |
||||
messageBus.Subscribe(ReceiveMessage); |
||||
} |
||||
|
||||
private void ReceiveMessage(string message) |
||||
{ |
||||
Console.WriteLine($"{_name}: Received Message - {message}"); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue