2015-05-29 11 views
5

Mam aplikację, którą napisałem w .NET, która może monitorować wiele kolejek RabbitMq za pomocą pojedynczego klienta.Monitorowanie wielu subskrypcji RabbitMq przy użyciu pojedynczej aplikacji

Na przykład:

using (IConnection connection = factory.CreateConnection()) 
{ 
    using (IModel channel = connection.CreateModel()) 
    { 
     var _consumer = new QueueingBasicConsumer(channel);   
     string[] list = new string[] { "Queue1", "Queue2", "Queue3", "Queue4" }; 
     _consumer = new QueueingBasicConsumer(channel); 
     foreach (string currQueueName in list) 
     { 
      channel.QueueDeclare(currQueueName, false, false, false, null); 
      channel.BasicConsume(currQueueName, true, _consumer); 
     }   

     while (true) 
     { 
      var ea = (BasicDeliverEventArgs)_consumer.Queue.Dequeue(); 

      var body = ea.Body; 
      var message = Encoding.UTF8.GetString(body); 
      Console.WriteLine(" [x] Received {0}", message); 
      ProcessMessage(message); 
     } 
    } 
}  

Zasadniczo, po prostu chcę, aby móc rozpowszechniać pracę na wielu kolejek, ale tylko jeden wniosek ich wszystko (lub wiele aplikacji może być wdrożony czasochłonne i pełnią tę samą funkcję).

Próbuję rozłożyć pracę w kolejkach, aby konsumenci podejmowali równomiernie pracę w kolejkach.

Czy jest to możliwe przy użyciu Bunny lub macierzystego sterownika Ruby?

+0

Czy można konsumować z wielu kolejek za pomocą Bunny? Tak. Poradniki dotyczące królików są tutaj: http://www.rabbitmq.com/tutorials/tutorial-one-ruby.html –

Odpowiedz

0

Sądzę, że po prostu musiałem poświęcić nieco więcej czasu na to.

Dodaję krótką odpowiedź na wszelki wypadek, że to pomoże ktoś (lub jeśli ktoś chce zapewnić czystsze rozwiązanie: P)

client = Bunny.new 
client.start 

channel = client.create_channel 
queues = %w(testing1 testing2 testing3) 
queues.each do |name| 
    channel.queue(name).subscribe(timeout: 2) do |info, props, body| 
    puts "[#{name}] Got #{body}" 
    end 
end 
loop do  
    sleep 1 
end 

To skutecznie robi to, co opisywał w PO.

Powiązane problemy