<commit_before># Akka.NET Extensions [![NuGet](https://img.shields.io/nuget/v/SchJan.Akka.svg)](https://www.nuget.org/packages/SchJan.Akka) [![Build status](https://ci.appveyor.com/api/projects/status/sxe09hsa558mhv1b/branch/master?svg=true)](https://ci.appveyor.com/project/schjan/akka-net-extensions/branch/master) 
[![codecov.io](https://codecov.io/github/schjan/Akka.NET-Extensions/coverage.svg?branch=master)](https://codecov.io/github/schjan/Akka.NET-Extensions?branch=master)

(Usefull) extensions for [Akka.NET](https://github.com/akkadotnet/akka.net)

###Publish Subscribe Pattern
PublishMessageActor (as _TypedPublishMessageActorBase, UntypedPublishMessageActorBase_ or _PublishMessageReceiveActorBase_) enables Actors to publish predefined types of messages and handles the subscribers for you.

```csharp
//Publisher
[PublishMessage(typeof (ArrivingAtStationMessage))]
[PublishMessage(typeof (PositionChangedMessage))]
public class TrainActor : TypedPublishMessageActorBase
{
    //You can call
    PublishMessage(new ArrivingAtStationMessage("King's Cross"));
    //or
    PublishMessage(new PositionChangedMessage(...));
}

//subscriber
public class StationActor : TypedPublishMessageActorBase
{<commit_msg>fix readme styling<commit_after># Akka.NET Extensions [![NuGet](https://img.shields.io/nuget/v/SchJan.Akka.svg)](https://www.nuget.org/packages/SchJan.Akka) [![Build status](https://ci.appveyor.com/api/projects/status/sxe09hsa558mhv1b/branch/master?svg=true)](https://ci.appveyor.com/project/schjan/akka-net-extensions/branch/master) 
[![codecov.io](https://codecov.io/github/schjan/Akka.NET-Extensions/coverage.svg?branch=master)](https://codecov.io/github/schjan/Akka.NET-Extensions?branch=master)

(Usefull) extensions for [Akka.NET](https://github.com/akkadotnet/akka.net)

## Publish Subscribe Pattern
PublishMessageActor (as _TypedPublishMessageActorBase, UntypedPublishMessageActorBase_ or _PublishMessageReceiveActorBase_) enables Actors to publish predefined types of messages and handles the subscribers for you.

```csharp
//Publisher
[PublishMessage(typeof (ArrivingAtStationMessage))]
[PublishMessage(typeof (PositionChangedMessage))]
public class TrainActor : TypedPublishMessageActorBase
{
    //You can call
    PublishMessage(new ArrivingAtStationMessage("King's Cross"));
    //or
    PublishMessage(new PositionChangedMessage(...));
}

//subscriber
public class StationActor : TypedPublishMessageActorBase
{
{'fraction_non_alphanumeric': 0.13445034736411934, 'fraction_numerical': 0.004903964037597058, 'mean_word_length': 6.60248447204969, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 14, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7497995', 'n_tokens_mistral': 820, 'n_tokens_neox': 775, 'n_words': 118}