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