配置类

  1. @Configuration
  2. public class AmqpConfig {
  3. @Bean
  4. @Primary
  5. public ConnectionFactory defaultConnectionFactory(
  6. @Value("${spring.rabbitmq.default.host}") String host,
  7. @Value("${spring.rabbitmq.default.port}") int port,
  8. @Value("${spring.rabbitmq.default.username}") String username,
  9. @Value("${spring.rabbitmq.default.password}") String password,
  10. @Value("${spring.rabbitmq.default.virtual-host}") String virtualHost) {
  11. CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
  12. connectionFactory.setHost(host);
  13. connectionFactory.setPort(port);
  14. connectionFactory.setUsername(username);
  15. connectionFactory.setPassword(password);
  16. connectionFactory.setVirtualHost(virtualHost);
  17. return connectionFactory;
  18. }
  19. @Bean
  20. @Primary
  21. public RabbitTemplate defaultRabbitTemplate(@Qualifier("defaultConnectionFactory") ConnectionFactory connectionFactory) {
  22. RabbitTemplate hospSyncRabbitTemplate = new RabbitTemplate(connectionFactory);
  23. return hospSyncRabbitTemplate;
  24. }
  25. @Bean
  26. public SimpleRabbitListenerContainerFactory defaultFactory(
  27. SimpleRabbitListenerContainerFactoryConfigurer configurer,
  28. @Qualifier("defaultConnectionFactory") ConnectionFactory connectionFactory) {
  29. SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
  30. configurer.configure(factory, connectionFactory);
  31. factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
  32. return factory;
  33. }
  34. }

发送方法

  1. @Component
  2. public class TmsAmqpMessageSender {
  3. private static Logger logger = LoggerFactory.getLogger(TmsAmqpMessageSender.class);
  4. @Autowired
  5. private BeanFactory beanFactory;
  6. /**
  7. *
  8. * @param exchangeName
  9. * @param routingKey
  10. * @param message
  11. */
  12. public void sendMessage(String exchangeName, String routingKey, String message, boolean zip) {
  13. //判断是否加密
  14. if(zip) {
  15. message = GZipUtils.gzip(message, GZipUtils.DEFAULT_CHARSET);
  16. }
  17. //构造mq template
  18. RabbitTemplate rabbitTemplate = beanFactory.getBean("defaultRabbitTemplate", RabbitTemplate.class);
  19. Message messageBean = MessageBuilder.withBody(message.getBytes())
  20. .setHeader("routingKey",routingKey).build();
  21. //推送mq
  22. rabbitTemplate.convertAndSend(exchangeName, routingKey, messageBean);
  23. logger.info("推送mq消息routingKey:{},内容:{}",routingKey, message);
  24. }
  25. }

配置文件

  1. spring.rabbitmq.default.host=192.168.8.172
  2. spring.rabbitmq.default.port=5672
  3. spring.rabbitmq.default.username=admin
  4. spring.rabbitmq.default.password=admin
  5. spring.rabbitmq.default.virtual-host=default_vhost

依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-amqp</artifactId>
  4. </dependency>