Sundstrom.MyServiceBus.Testing
0.1.0-preview.1
See the version list below for details.
dotnet add package Sundstrom.MyServiceBus.Testing --version 0.1.0-preview.1
NuGet\Install-Package Sundstrom.MyServiceBus.Testing -Version 0.1.0-preview.1
<PackageReference Include="Sundstrom.MyServiceBus.Testing" Version="0.1.0-preview.1" />
<PackageVersion Include="Sundstrom.MyServiceBus.Testing" Version="0.1.0-preview.1" />
<PackageReference Include="Sundstrom.MyServiceBus.Testing" />
paket add Sundstrom.MyServiceBus.Testing --version 0.1.0-preview.1
#r "nuget: Sundstrom.MyServiceBus.Testing, 0.1.0-preview.1"
#:package Sundstrom.MyServiceBus.Testing@0.1.0-preview.1
#addin nuget:?package=Sundstrom.MyServiceBus.Testing&version=0.1.0-preview.1&prerelease
#tool nuget:?package=Sundstrom.MyServiceBus.Testing&version=0.1.0-preview.1&prerelease
✉️ MyServiceBus
MyServiceBus (working title) is a lightweight, asynchronous service-bus runtime for Java and .NET, inspired by MassTransit.
It provides a consistent, opinionated broker-backed messaging model while remaining compatible with the documented MassTransit RabbitMQ envelope and messaging semantics. This makes it possible for Java and .NET services to send, publish, and consume messages across platforms, or interoperate with MassTransit in the verified compatibility scenarios.
See samples below.
What is MyServiceBus?
MyServiceBus defines a stable messaging runtime with concepts such as:
- publish vs send
- consumers
- request/response
- retries and error handling
- middleware / pipeline behaviors
- scheduling
- in-memory testing
These portable concepts remain consistent across supported transport profiles, while broker-specific capabilities and guarantees remain explicit.
Unlike most Java messaging solutions, MyServiceBus does not require a framework-wide commitment (such as Spring). It can be used as a self-contained runtime, integrated into an existing application, or composed via factories and decorators—depending on project needs.
Goals
- Provide a focused, community-driven alternative for basic MassTransit-style broker-backed messaging scenarios.
- Preserve a MassTransit-compatible messaging model across Java and .NET.
- Enable Java services to easily connect with .NET/C# services using shared messaging semantics.
- Offer a familiar experience for developers coming from .NET.
- Maintain feature parity and consistent behavior between the C# and Java implementations.
See the design guidelines for architectural and behavioral parity.
Features
- Fire-and-forget message sending
- Publish/subscribe pattern
- Request/response pattern (
RequestClientand scoped client factory) - RabbitMQ transport
- In-memory mediator and test harness
- Compatibility with MassTransit message envelopes
- Raw JSON messages
- Fault and error handling semantics aligned with MassTransit
- Middleware / pipeline behaviors
- OpenTelemetry support
- Java and C# implementations with aligned semantics
Specification
Getting Started
Prerequisites
- .NET SDK
- Java (for the Java modules): JDK 17
- Gradle
Building
- .NET
dotnet restore
dotnet build
- Java
Java build and run instructions are documented in
src/Java/README.md.
Running tests
.NET
dotnet testJava
gradle test
Quick start
Minimal steps to configure MyServiceBus and publish a message. For a broader tour of the library, see the feature walkthrough, which covers both basic and advanced usage.
C#
Register the bus with the ASP.NET host builder:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddServiceBus(x =>
{
x.AddConsumer<SubmitOrderConsumer>();
x.UsingRabbitMq((context, cfg) =>
{
cfg.ConfigureEndpoints(context);
});
});
var app = builder.Build();
await app.StartAsync();
var bus = app.Services.GetRequiredService<IMessageBus>();
Define the messages and consumer:
public record SubmitOrder(Guid OrderId);
public record OrderSubmitted(Guid OrderId);
class SubmitOrderConsumer : IConsumer<SubmitOrder>
{
public Task Consume(ConsumeContext<SubmitOrder> context) =>
context.Publish(new OrderSubmitted(context.Message.OrderId));
}
Publish the SubmitOrder message 🚀:
await bus.Publish(
new SubmitOrder(Guid.NewGuid()),
ctx => ctx.Headers["trace-id"] = Guid.NewGuid()
);
Java
Register the bus:
ServiceCollection services = ServiceCollection.create();
services.from(MessageBusServices.class)
.addServiceBus(cfg -> {
cfg.addConsumer(SubmitOrderConsumer.class);
cfg.using(
RabbitMqFactoryConfigurator.class,
(context, rbCfg) -> rbCfg.configureEndpoints(context)
);
});
ServiceProvider provider = services.buildServiceProvider();
MessageBus bus = provider.getService(MessageBus.class);
bus.start().join();
Define the messages and consumer:
record SubmitOrder(UUID orderId) { }
record OrderSubmitted(UUID orderId) { }
class SubmitOrderConsumer implements Consumer<SubmitOrder> {
@Override
public CompletableFuture<Void> consume(ConsumeContext<SubmitOrder> context) {
return context.publish(
new OrderSubmitted(context.getMessage().orderId())
);
}
}
Publish the SubmitOrder message:
bus.publish(
new SubmitOrder(UUID.randomUUID()),
ctx -> ctx.getHeaders().put("trace-id", UUID.randomUUID())
).join();
Repository structure
src/– C# and Java source codetest/– Test projectsdocs/– Documentation, including the feature walkthrough and specifications Development documents live indocs/development/docker-compose.yml– Docker configuration for local infrastructure
Java Quickstart
See src/Java/README.md for detailed Java build and run instructions, including JDK 17 prerequisites and running the test application.
Contributing
Contributions are welcome!
Please run dotnet test before submitting a pull request and follow the coding conventions described in AGENTS.md.
License
This project is licensed under the MIT 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
- Sundstrom.MyServiceBus (>= 0.1.0-preview.1)
- Sundstrom.MyServiceBus.Abstractions (>= 0.1.0-preview.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.12 | 52 | 10/7/2026 |
| 0.1.0-preview.11 | 83 | 9/4/2026 |
| 0.1.0-preview.10 | 74 | 9/4/2026 |
| 0.1.0-preview.9 | 69 | 9/1/2026 |
| 0.1.0-preview.8 | 70 | 8/31/2026 |
| 0.1.0-preview.7 | 82 | 8/30/2026 |
| 0.1.0-preview.6 | 78 | 8/29/2026 |
| 0.1.0-preview.5 | 77 | 8/28/2026 |
| 0.1.0-preview.4 | 74 | 8/27/2026 |
| 0.1.0-preview.2 | 74 | 8/27/2026 |
| 0.1.0-preview.1 | 78 | 8/26/2026 |