Advertisement
Guest User

Untitled

a guest
Apr 19th, 2014
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. from("rabbitmq://hostname[:port]/myqueue_high")
  2. .setHeader("priority", constant(9))
  3. .to("direct:messageProcessing");
  4.  
  5. from("rabbitmq://hostname[:port]/myqueue_medium")
  6. .setHeader("priority", constant(5))
  7. .to("direct:messageProcessing");
  8.  
  9. from("rabbitmq://hostname[:port]/myqueue_low")
  10. .setHeader("priority", constant(1))
  11. .to("direct:messageProcessing");
  12.  
  13. // sort by priority by allowing duplicates (message can have same priority)
  14. // and use reverse ordering so 9 is first output (most important), and 0 is last
  15. // (of course we could have set the priority the other way around, but this way
  16. // we keep align with the JMS specification...)
  17. // use batch mode and fire every 3th second
  18. from("direct:messageProcessing")
  19. .resequence(header("priority")).batch().timeout(3000).allowDuplicates().reverse()
  20. .to("mock:result");
  21.  
  22. final PriorityBlockingQueueFactory<Exchange> priorityQueueFactory = new PriorityBlockingQueueFactory<Exchange>();
  23. priorityQueueFactory.setComparator(new Comparator<Exchange>() {
  24. @Override
  25. public int compare(final Exchange exchange1, final Exchange exchange2) {
  26. final Integer prio1 = (Integer) exchange1.getIn().getHeader("priority");
  27. final Integer prio2 = (Integer) exchange2.getIn().getHeader("priority");
  28. return -prio1.compareTo(prio2); // 9 has higher priority then 0
  29. }
  30. });
  31.  
  32. final SimpleRegistry registry = new SimpleRegistry();
  33. registry.put("priorityQueueFactory", priorityQueueFactory);
  34.  
  35. final ModelCamelContext context = new DefaultCamelContext(registry);
  36. // configure and start your context here...
  37.  
  38. from("rabbitmq://hostname[:port]/myqueue_high")
  39. .setHeader("priority", constant(9))
  40. .to("seda:priority?queueFactory=#priorityQueueFactory"); // reference queue in registry
  41.  
  42. from("rabbitmq://hostname[:port]/myqueue_medium")
  43. .setHeader("priority", constant(5))
  44. .to("seda:priority?queueFactory=#priorityQueueFactory");
  45.  
  46. from("rabbitmq://hostname[:port]/myqueue_low")
  47. .setHeader("priority", constant(1))
  48. .to("seda:priority?queueFactory=#priorityQueueFactory");
  49.  
  50. from("seda:priority")
  51. .to("direct:messageProcessing");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement