Skip to content

A lightweight, high-performance messaging system.

License

Notifications You must be signed in to change notification settings

rickdotnet/Apollo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Apollo

Warning

Apollo is evolving. The journey continues as part of Aether.


Apollo aims to be a lightweight, high-performance messaging client designed to provide developers with a simple yet powerful way to incorporate flexible architectures into their .NET applications.

Documentation

Apollo is under rapid development. Please refer to the Apollo Docs for the most up-to-date information.

Example Usage

Hosted Example

builder.Services.AddApollo(ab => ab
            .CreateMissingResources()
            .WithDefaultNamespace("instance-1")
            .WithDefaultConsumerName("default-consumer")
            .AddEndpoint<HostEventsEndpoint>(HostEventsEndpointConfig.Default)
            .AddNatsProvider(opts => opts with
            {
                Url = "nats://localhost:4222",
                AuthOpts = new NatsAuthOpts
                {
                    Username = "username",
                    Password = "password"
                }
            })
        );

Direct Usage

var apolloConfig = new ApolloConfig { InstanceId = "my-instance", DefaultConsumerName = "my-consumer" };
var client = new ApolloClient(apolloConfig, endpointProvider: new EndpointProvider());

// configure and add an endpoint
var endpointConfig = new EndpointConfig
{
    Namespace = "dev.myapp",
    EndpointName = "My Endpoint"
};

var endpoint = client.AddEndpoint<TestEndpoint>(endpointConfig);
_ = endpoint.StartEndpoint(cancellationToken);

await Task.Delay(-1, cancellationToken);

// clean up
await endpoint.DisposeAsync();

About

A lightweight, high-performance messaging system.

Resources

License

Stars

Watchers

Forks

Languages