配置类
@Configurationpublic class AmqpConfig { @Bean @Primary public ConnectionFactory defaultConnectionFactory( @Value("${spring.rabbitmq.default.host}") String host, @Value("${spring.rabbitmq.default.port}") int port, @Value("${spring.rabbitmq.default.username}") String username, @Value("${spring.rabbitmq.default.password}") String password, @Value("${spring.rabbitmq.default.virtual-host}") String virtualHost) { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setHost(host); connectionFactory.setPort(port); connectionFactory.setUsername(username); connectionFactory.setPassword(password); connectionFactory.setVirtualHost(virtualHost); return connectionFactory; } @Bean @Primary public RabbitTemplate defaultRabbitTemplate(@Qualifier("defaultConnectionFactory") ConnectionFactory connectionFactory) { RabbitTemplate hospSyncRabbitTemplate = new RabbitTemplate(connectionFactory); return hospSyncRabbitTemplate; } @Bean public SimpleRabbitListenerContainerFactory defaultFactory( SimpleRabbitListenerContainerFactoryConfigurer configurer, @Qualifier("defaultConnectionFactory") ConnectionFactory connectionFactory) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); configurer.configure(factory, connectionFactory); factory.setAcknowledgeMode(AcknowledgeMode.MANUAL); return factory; }}
发送方法
@Componentpublic class TmsAmqpMessageSender { private static Logger logger = LoggerFactory.getLogger(TmsAmqpMessageSender.class); @Autowired private BeanFactory beanFactory; /** * * @param exchangeName * @param routingKey * @param message */ public void sendMessage(String exchangeName, String routingKey, String message, boolean zip) { //判断是否加密 if(zip) { message = GZipUtils.gzip(message, GZipUtils.DEFAULT_CHARSET); } //构造mq template RabbitTemplate rabbitTemplate = beanFactory.getBean("defaultRabbitTemplate", RabbitTemplate.class); Message messageBean = MessageBuilder.withBody(message.getBytes()) .setHeader("routingKey",routingKey).build(); //推送mq rabbitTemplate.convertAndSend(exchangeName, routingKey, messageBean); logger.info("推送mq消息routingKey:{},内容:{}",routingKey, message); }}
配置文件
spring.rabbitmq.default.host=192.168.8.172spring.rabbitmq.default.port=5672spring.rabbitmq.default.username=adminspring.rabbitmq.default.password=adminspring.rabbitmq.default.virtual-host=default_vhost
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>