2016-11-06 9 views
0

私たちは、listenersがrabbitmqから一定の割合で1 msg/2秒でメッセージを読み込もうとしました。これまでウサギmqでこのような有用性は見つかっていませんでした。 DBを使ってこれを行うことを考えました。つまり、リスナーはメッセージを読み込んでDBに格納し、後でスケジューラはDBからその希望のレートで処理します。これを行うより良い方法があれば、お勧めします。 Springでアプリケーションを開発しています。前もって感謝します。あなたは、タスクスケジューラまたはむしろ春@Async方法のような、より洗練されたものを使用することができますもちろんrabbitmqから指定されたレートでメッセージを処理しています

答えて

0

あなたがリスナーにそれを行うことはできませんが、RabbitTemplateでそれを行うことができます...

@SpringBootApplication 
public class So40446967Application { 

    public static void main(String[] args) throws Exception { 
     ConfigurableApplicationContext context = SpringApplication.run(So40446967Application.class, args); 
     RabbitAdmin admin = context.getBean(RabbitAdmin.class); 
     AnonymousQueue queue = new AnonymousQueue(); 
     admin.declareQueue(queue); 
     RabbitTemplate template = context.getBean(RabbitTemplate.class); 
     for (int i = 0; i < 10; i++) { 
      template.convertAndSend(queue.getName(), "foo" + i); 
     } 
     String out = (String) template.receiveAndConvert(queue.getName()); 
     while (out != null) { 
      System.out.println(new Date() + " " + out); 
      Thread.sleep(2000); 
      out = (String) template.receiveAndConvert(queue.getName()); 
     } 
     context.close(); 
    } 

} 

寝るよりも。

関連する問題