Kuestenlogik.Bowire.Protocol.Akka
1.0.5
Prefix Reserved
dotnet add package Kuestenlogik.Bowire.Protocol.Akka --version 1.0.5
NuGet\Install-Package Kuestenlogik.Bowire.Protocol.Akka -Version 1.0.5
<PackageReference Include="Kuestenlogik.Bowire.Protocol.Akka" Version="1.0.5" />
<PackageVersion Include="Kuestenlogik.Bowire.Protocol.Akka" Version="1.0.5" />
<PackageReference Include="Kuestenlogik.Bowire.Protocol.Akka" />
paket add Kuestenlogik.Bowire.Protocol.Akka --version 1.0.5
#r "nuget: Kuestenlogik.Bowire.Protocol.Akka, 1.0.5"
#:package Kuestenlogik.Bowire.Protocol.Akka@1.0.5
#addin nuget:?package=Kuestenlogik.Bowire.Protocol.Akka&version=1.0.5
#tool nuget:?package=Kuestenlogik.Bowire.Protocol.Akka&version=1.0.5
Kuestenlogik.Bowire.Protocol.Akka
Bowire protocol plugin for Akka.NET actor systems. Streams every message that lands in a tap-mailboxed actor's mailbox into the Bowire workbench, so you can watch a live actor system the same way you watch gRPC streams or MQTT topics.
What it does
- Mailbox tap — a custom Akka.NET
MailboxType(BowireTapMailbox) wraps the standard unbounded queue and forwards every enqueue to a per-actor-system extension. Opt-in globally (default mailbox swap) or per-actor (Props.WithMailbox(...)). IExtensionintegration —BowireAkkaExtensionowns the broadcast channel and the active subscriber list. Steady-state cost when nobody's watching: one volatile read per message.- DeadLetters capture — the extension subscribes to the actor system's
EventStreamand republishes everyAkka.Event.DeadLetterthrough the same channel withTappedMessage.IsDeadLetter = true, so undeliverable messages surface in the Bowire stream without any per-actor opt-in. - Bowire streaming pane —
BowireAkkaProtocolexposes one server-streaming method,Tap/MonitorMessages, that yieldsTappedMessageenvelopes (recipient path, sender path, CLR type, payload, timestamp, dead-letter flag) as JSON.
Install
dotnet add package Kuestenlogik.Bowire.Protocol.Akka
Use
1. Register the actor system in DI
using Akka.Actor;
using Microsoft.Extensions.DependencyInjection;
var system = ActorSystem.Create("MyApp", hocon);
builder.Services.AddSingleton(system);
builder.Services.AddBowire(); // picks up Kuestenlogik.Bowire.Protocol.Akka via plugin discovery
2. Opt actors into the tap mailbox
Globally — every actor created after this gets tapped:
akka.actor.default-mailbox.mailbox-type = "Kuestenlogik.Bowire.Protocol.Akka.BowireTapMailbox, Kuestenlogik.Bowire.Protocol.Akka"
Per-actor — surgical, leaves other actors at their default mailbox:
akka.actor.bowire-tap = {
mailbox-type = "Kuestenlogik.Bowire.Protocol.Akka.BowireTapMailbox, Kuestenlogik.Bowire.Protocol.Akka"
}
var orders = system.ActorOf(
Props.Create<OrdersActor>().WithMailbox("akka.actor.bowire-tap"),
"orders");
3. Watch in Bowire
Open the Bowire workbench (/bowire in embedded mode or bowire CLI), pick the Akka.NET tab, and start streaming Tap/MonitorMessages. Every message landing in a tapped mailbox lands in your stream pane in real time.
Sample
A runnable end-to-end sample lives under samples/Kuestenlogik.Bowire.Protocol.Akka.Sample — three actors arranged in a small harbour workflow plus a 2-second port-call ticker, so the live message stream is never quiet.
dotnet run --project samples/Kuestenlogik.Bowire.Protocol.Akka.Sample
Roadmap
- 0.1.0 — embedded mode,
EventStream-style mailbox tap, JSON envelope of recipient/sender/type/payload/timestamp. - 0.2.0 (current) —
DeadLetterscapture viaEventStreamsubscription withIsDeadLetterflag on the envelope. - 0.3.0 — external
Akka.Cluster.Tools.ClusterClienttransport so the standalonebowireCLI can attach to a running cluster, mailbox-snapshot inspection (size, head messages), per-actor throughput stats. - 0.4.0 — typed payload via Akka serializer roundtrip, opt-in filter API from the Bowire UI (per actor path, per message type), Tell-from-Bowire (interactive duplex).
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Akka (>= 1.5.68)
- Kuestenlogik.Bowire (>= 1.7.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.