配置类
@Configuration
public 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;
}
}
发送方法
@Component
public 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.172
spring.rabbitmq.default.port=5672
spring.rabbitmq.default.username=admin
spring.rabbitmq.default.password=admin
spring.rabbitmq.default.virtual-host=default_vhost
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>