8000 GitHub - Rotvig/HarakaMQ at Version_1.0.1
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Rotvig/HarakaMQ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HarakaMQ

Reliable Message Oriented Middleware Based on UDP and created with .NET Core 2.0

Guarantees

  • Message Delivery
  • Order of messages across distributed brokers
  • Eventual Consistency

Development

  • Fail over when a broker goes down in a cluster setup
  • Reconciliation when a broker rejoins a cluster
  • Broker and client auto discovery in a cluster setup
  • Add a new broker without restart of a cluster

Nuget

HarakaMQ.Client

https://www.nuget.org/packages/HarakaMQ.Client/

Message Broker

Start up the Broker by building the MessageBroker project, and runs it with the command "dotnet HarakaMQ.MessageBroker.dll". Remember to add a "settings.json" file in the running directory with this content:

{  
   "BrokerPort":11100,
   "PrimaryNumber":1,
   "AntiEntropyMilliseonds":1000,
   "RunInCLusterSetup":false,
   "Brokers":[]
}

You can also use the pre-builded Message broker (Client-Server setup) from this project https://github.com/Rotvig/HarakaMQ-Benchmark/tree/master/ClientServerSetup/Broker

Publish

var factory = new ConnectionFactory {HostName = "127.0.0.1", ListenPort = 11000, Port = 11100};
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
    channel.QueueDeclare("hello");
    channel.BasicPublish("hello", Encoding.UTF8.GetBytes("Hello world"));

    Console.WriteLine(" Press [enter] to exit.");
    Console.ReadLine();
}

Subscribe

var factory = new ConnectionFactory {HostName = "127.0.0.1", ListenPort = 12000, Port = 11100};
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
    channel.QueueDeclare("hello");
    var consumer = new DefaultBasicConsumer(channel);
    consumer.Received += (model, ea) =>
    {
        Console.WriteLine(Encoding.UTF8.GetString(ea.Body));
    };
    channel.BasicConsume("hello", consumer);

    Console.WriteLine(" Press [enter] to exit.");
    Console.ReadLine();
}

Test Repo

https://github.com/Rotvig/HarakaMQ-Benchmark

About

Reliable Message Oriented Middleware Based on UDP

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages

0