Advertisement
Guest User

StoneMQBench

a guest
Nov 15th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.92 KB | None | 0 0
  1. using System;
  2. using RabbitMQ.Client;
  3. using StoneMQ.Connection;
  4. using StoneMQ.Serializer;
  5.  
  6. namespace StoneMQPerformanceTest
  7. {
  8.     class DummySerializer : ISerializer
  9.     {
  10.         private int _size;
  11.  
  12.         public DummySerializer(int size)
  13.         {
  14.             _size = size;
  15.         }
  16.  
  17.         public byte[] Marshal<T>(T o)
  18.         {
  19.             return new byte[_size];
  20.         }
  21.  
  22.         public T Unmarshal<T>(byte[] bytes)
  23.         {
  24.             throw new NotImplementedException();
  25.         }
  26.     }
  27.  
  28.     internal class Program
  29.     {
  30.         public static void Main(string[] args)
  31.         {
  32.             var factory = new ConnectionFactory
  33.             {
  34.                 HostName = "localhost",
  35.                 Port = 5672,
  36.                 UserName = "guest",
  37.                 Password = "guest",
  38.                 VirtualHost = "/"
  39.             };
  40.             using (var connection = factory.CreateConnection())
  41.             {
  42.                 using (var channel = connection.CreateModel())
  43.                 {
  44.                     channel.QueueDeclare("test", true, autoDelete: false, exclusive: false);
  45.                     channel.ExchangeDeclare("test", "direct", true);
  46.                     channel.QueueBind("test", "test", "");
  47.                 }
  48.             }
  49.             SendBuilkWithRabbiMQClient(10000, 100);
  50.             SendBuilkWithStoneMQ(10000, 100);
  51.             var start = DateTime.Now;
  52.             SendBuilkWithRabbiMQClient(10000, 10000);
  53.             var end = DateTime.Now;
  54.             Console.WriteLine("RabbitMQClient: " + (end - start));
  55.             start = DateTime.Now;
  56.             SendBuilkWithBulkStoneMQ(10000, 10000);
  57.             end = DateTime.Now;
  58.             Console.WriteLine("StoneMQ: " + (end - start));
  59.         }
  60.  
  61.         public static void SendBuilkWithStoneMQ(int size, int number)
  62.         {
  63.             using (var connecion = new StoneMQConnection("app", "localhost", 5672, "guest", "guest"))
  64.             {
  65.                 connecion.Serializer = new DummySerializer(size);
  66.                 var message = new byte[size];
  67.                 for (var i = 0; i < number; i++)
  68.                 {
  69.                     connecion.Publish("test", "test", message);
  70.                 }
  71.             }
  72.         }
  73.  
  74.         public static void SendBuilkWithBulkStoneMQ(int size, int number)
  75.         {
  76.             using (var connecion = new StoneMQConnection("app", "localhost", 5672, "guest", "guest"))
  77.             {
  78.                 connecion.Serializer = new DummySerializer(size);
  79.                 var message = new byte[size];
  80.                 using (var publisher = connecion.Bulk())
  81.                 {
  82.                     for (var i = 0; i < number; i++)
  83.                     {
  84.                         publisher.Publish("test", "test", message);
  85.                     }
  86.                 }
  87.             }
  88.         }
  89.  
  90.         public static void SendBuilkWithRabbiMQClient(int size, int number)
  91.         {
  92.             var factory = new ConnectionFactory
  93.             {
  94.                 HostName = "localhost",
  95.                 Port = 5672,
  96.                 UserName = "guest",
  97.                 Password = "guest",
  98.                 RequestedHeartbeat = 60,
  99.                 AutomaticRecoveryEnabled = true,
  100.                 NetworkRecoveryInterval = TimeSpan.FromMilliseconds(1000)
  101.             };
  102.             using (var connection = factory.CreateConnection())
  103.             {
  104.                 using (var channel = connection.CreateModel())
  105.                 {
  106.                     var properties = channel.CreateBasicProperties();
  107.                     var message = new byte[size];
  108.                     properties.Persistent = true;
  109.                     properties.DeliveryMode = 2;
  110.                     for (var i = 0; i < number; i++)
  111.                     {
  112.                         channel.BasicPublish("test", "", true, properties, message);
  113.                     }
  114.                 }
  115.             }
  116.         }
  117.     }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement