Awesome Open Source
Awesome Open Source

Ray

Join the chat at https://gitter.im/RayTale/Ray

This is a high-performance distributed framework that integrates Actor, Event Sourcing, and Eventual consistency (see: http://dotnet.github.io/orleans/)

Case start steps

In the case is a simple transactionless transfer function

  1. Install (mongodb or postgresql or mysql or sqlserver) and (rabbitmq or kafka).

  2. Select the event persistence method and EventBus in Program.cs of the Ray.Host project.

    var builder = new SiloHostBuilder()
        .UseConfiguration(config)
        .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(Account).Assembly).WithReferences())
        .ConfigureServices((context, servicecollection) =>
        {
            //Register postgresql as an event repository
            servicecollection.AddPostgreSQLStorage(config =>
            {
                config.ConnectionDict.Add("core_event", "Server=127.0.0.1;Port=5432;Database=Ray;User Id=postgres;Password=XXXX;Pooling=true;MaxPoolSize=20;");
            });
            //Configure distributed transaction manager (not required, only need to be set if distributed transaction is required)
            servicecollection.AddPostgreSQLTxStorage(options =>
            {
                options.ConnectionKey = "core_event";
                options.TableName = "Transaction_TemporaryRecord";
            });
            servicecollection.PSQLConfigure();
        })
        .Configure<MongoConfig>(c => c.Connection = "mongodb://127.0.0.1:28888")
        .Configure<RabbitConfig>(c =>
        {
            c.UserName = "admin";
            c.Password = "XXXX";
            c.Hosts = new[] {"127.0.0.1:5672" };
            c.MaxPoolSize = 100;
            c.VirtualHost = "/";
        })
        .ConfigureLogging(logging => logging.AddConsole());

Third, modify the configuration information of Ray.Client.

    var config = ClientConfiguration.LocalhostSilo();
    var client = new ClientBuilder()
        .UseConfiguration(config)
        .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(IAccount).Assembly).WithReferences())
        .ConfigureLogging(logging => logging.AddConsole())
        .Build();
    await client.Connect();

Fourth, start Ray.Host

Five, start Ray.Client


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
c-sharp (11,790
distributed-systems (285
cqrs (156
event-sourcing (131
event-driven (89
actor (19
orleans (18

Find Open Source By Browsing 7,000 Topics Across 59 Categories