Advertisement
Guest User

Untitled

a guest
Apr 13th, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. //Create the connection factory
  2. var connectionFactory = new ConnectionFactory() {
  3. HostName = host,
  4. UserName = userName,
  5. Password = password
  6. };
  7.  
  8.  
  9. connectionFactory.RequestedHeartbeat = 10;
  10. connectionFactory.RequestedConnectionTimeout = 30000;
  11. connectionFactory.AutomaticRecoveryEnabled = true;
  12. connectionFactory.NetworkRecoveryInterval = TimeSpan.FromSeconds(10);
  13.  
  14.  
  15. //connection
  16. var connection = connectionFactory.CreateConnection();
  17.  
  18. logger.Info($"Connected to RabbitMQ {host}");
  19. connection.ConnectionShutdown += Connection_ConnectionShutdown;
  20.  
  21. var model = connection.CreateModel();
  22.  
  23. model.BasicQos(0, 1, false);
  24.  
  25. var consumer = new QueueingBasicConsumer(model);
  26.  
  27. model.BasicConsume(queueName, false, consumer);
  28.  
  29. while (true) {
  30.  
  31. try {
  32.  
  33.  
  34. var deliveryArgs = consumer.Queue.Dequeue();
  35.  
  36. model.BasicAck(deliveryArgs.DeliveryTag, false);
  37.  
  38. var jsonString = Encoding.Default.GetString(deliveryArgs.Body);
  39. var itemtoprocess= jsonString.FromJson<recieved message>();
  40.  
  41. if (deliveryArgs.Redelivered) {
  42.  
  43. model.BasicReject(deliveryArgs.DeliveryTag, false);
  44. }
  45. else {
  46.  
  47. var task = Task.Factory.StartNew(() => {
  48. //Do work here on different thread then this one
  49. //Call the churner to process the message
  50. //Some long running method here to process item recieve
  51. });
  52.  
  53. Task.WaitAll(task);
  54.  
  55.  
  56. }
  57.  
  58.  
  59. }
  60. catch (EndOfStreamException ex) {
  61. //log
  62. }
  63.  
  64. }
  65.  
  66. channel.ExchangeDeclare (exchangeName, ExchangeType.Topic, true, false, null);
  67.  
  68. //Queue
  69. var queue = channel.QueueDeclare (queueName, true, false, false, null );
  70.  
  71. channel.QueueBind (queue.QueueName, exchangeName, routingKey);
  72. }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement