RabbitMqConfig.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.poyee.mq;
  2. import org.springframework.amqp.core.Binding;
  3. import org.springframework.amqp.core.BindingBuilder;
  4. import org.springframework.amqp.core.DirectExchange;
  5. import org.springframework.amqp.core.Queue;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10. /**
  11. *
  12. */
  13. @Configuration
  14. public class RabbitMqConfig {
  15. /**
  16. * 测试队列
  17. */
  18. public static final String QUEUE_TEST_HELLO = "QUEUE_TEST_HELLO";
  19. /**死信交换机**/
  20. public static final String SYS_ORDER_DELAY_EXCHANGE = "SYS_ORDER_DELAY_EXCHANGE";
  21. /**接收死信队列消息**/
  22. public static final String SYS_ORDER_RECEIVE_EXCHANGE = "SYS_ORDER_RECEIVE_EXCHANGE";
  23. /**死信接收队列**/
  24. public static final String SYS_ORDER_RECEIVE_QUEUE = "SYS_ORDER_RECEIVE_QUEUE";
  25. /**延时队列**/
  26. public static final String SYS_ORDER_DELAY_QUEUE = "SYS_ORDER_DELAY_QUEUE";
  27. /**路由key**/
  28. public static final String SYS_ORDER_RECEIVE_KEY = "SYS_ORDER_RECEIVE_KEY";
  29. /**死信队列路由key**/
  30. public static final String SYS_ORDER_DELAY_KEY = "SYS_ORDER_DELAY_KEY";
  31. /**
  32. * 测试发送消息到MQ
  33. * @return
  34. */
  35. @Bean
  36. public Queue testHello() {
  37. return new Queue(QUEUE_TEST_HELLO);
  38. }
  39. /**
  40. * 死信交换机
  41. * @return
  42. */
  43. @Bean
  44. public DirectExchange sysOrderDelayExchange() {
  45. return new DirectExchange(SYS_ORDER_DELAY_EXCHANGE);
  46. }
  47. /**
  48. * 死信队列
  49. * @return
  50. */
  51. @Bean
  52. public Queue sysOrderDelayQueue() {
  53. Map<String, Object> map = new HashMap<String, Object>(16);
  54. map.put("x-dead-letter-exchange",SYS_ORDER_RECEIVE_EXCHANGE); //指定死信送往的交换机
  55. map.put("x-dead-letter-routing-key", SYS_ORDER_RECEIVE_KEY); //指定死信的routingkey
  56. return new Queue(SYS_ORDER_DELAY_QUEUE, true, false, false, map);
  57. }
  58. /**
  59. * 给死信队列绑定死信交换机
  60. * @return
  61. */
  62. @Bean
  63. public Binding sysOrderDelayBinding() {
  64. return BindingBuilder.bind(sysOrderDelayQueue()).to(sysOrderDelayExchange()).with(SYS_ORDER_DELAY_KEY);
  65. }
  66. /**
  67. * 死信接收交换机,用于接收死信队列的消息
  68. * @return
  69. */
  70. @Bean
  71. public DirectExchange sysOrderReceiveExchange() {
  72. return new DirectExchange(SYS_ORDER_RECEIVE_EXCHANGE);
  73. }
  74. /**
  75. * 死信接收队列
  76. * @return
  77. */
  78. @Bean
  79. public Queue sysOrderReceiveQueue() {
  80. return new Queue(SYS_ORDER_RECEIVE_QUEUE);
  81. }
  82. /**
  83. * 死信接收交换机绑定接收死信队列消费队列
  84. * @return
  85. */
  86. @Bean
  87. public Binding sysOrdeReceiveBinding() {
  88. return BindingBuilder.bind(sysOrderReceiveQueue()).to(sysOrderReceiveExchange()).with(SYS_ORDER_RECEIVE_KEY);
  89. }
  90. }