RabbitConfig.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.fdkankan.modeling.config;
  2. import com.fdkankan.modeling.mq.BuildSceneReceiver;
  3. import lombok.extern.log4j.Log4j2;
  4. import org.springframework.amqp.core.Queue;
  5. import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
  6. import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
  7. import org.springframework.amqp.rabbit.connection.ConnectionFactory;
  8. import org.springframework.amqp.rabbit.core.RabbitTemplate;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.beans.factory.config.ConfigurableBeanFactory;
  11. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.context.annotation.Scope;
  15. @Log4j2
  16. @Configuration
  17. public class RabbitConfig {
  18. @Value("${spring.rabbitmq.host}")
  19. private String host;
  20. @Value("${spring.rabbitmq.port}")
  21. private int port;
  22. @Value("${spring.rabbitmq.username}")
  23. private String username;
  24. @Value("${spring.rabbitmq.password}")
  25. private String password;
  26. @Value("${rabbitmq.queue}")
  27. private String queue;
  28. @Bean
  29. public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
  30. SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
  31. factory.setConnectionFactory(connectionFactory());
  32. factory.setPrefetchCount(1);
  33. return factory;
  34. }
  35. @Bean
  36. public ConnectionFactory connectionFactory() {
  37. CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host,port);
  38. connectionFactory.setUsername(username);
  39. connectionFactory.setPassword(password);
  40. connectionFactory.setVirtualHost("/");
  41. connectionFactory.setPublisherConfirms(true);
  42. return connectionFactory;
  43. }
  44. @Bean
  45. @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
  46. public RabbitTemplate rabbitTemplate() {
  47. return new RabbitTemplate(connectionFactory());
  48. }
  49. @Bean
  50. public Queue workQueue() {
  51. return new Queue(queue);
  52. }
  53. @Bean
  54. @ConditionalOnProperty(name = "rabbitmq.queue.enable",havingValue = "true")
  55. public BuildSceneReceiver buildSceneReceiver1() {
  56. return new BuildSceneReceiver();
  57. }
  58. }