RabbitAdmin主要用于对队列进行管理,用于创建,绑定,删除队列与交换机,发送消息等。
1.首先添加配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=secret
2.创建RabbitMq配置类,配置连接工厂和对象
@Data
@Configuration
@ConditionalOnProperty("spring.rabbitmq.host")
public class RabbitConfig{
@Value("${spring.rabbitmq.host}")
private String host;
@Value("${spring.rabbitmq.port}")
private Integer port;
@Value("${spring.rabbitmq.username}")
private String username;
@Value("${spring.rabbitmq.password}")
private String password;
@Bean
public ConnectionFactory connectionFactory {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
return CachingConnectionFactory;
}
//rabbitAdmin主要用于在Java代码中对队列进行管理,用于创建、绑定、删除队列与交换机,发送消息等
@Bean
public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
return new RabbitAdmin(connectionFactory);
}
}
3.配置消息队列,交换机等信息
@Configuration
public class RabbitSenderConfig {
@Value("${PUSH_POINT_QUEUE_NAME}")
private String QUEUE_NAME;
@Value("${PUSH_POINT_EXCHANGE_NAME}")
private String EXCHANGE_NAME;
@Value("${PUSH_POINT_ROUTINGKEY}")
private String ROUTINGKEY;
@Bean
public Queue pushPointQueue(){
return new Queue(QUEUE_NAME,true);
}
@Bean
DirectExchange directExchange() {
return new DirectExchange(EXCHANGE_NAME);
}
@Bean
public Binding bindingExchangeMessage(Queue pushPointQueue, DirectExchange directExchange) {
return BindingBuilder.bind(pushPointQueue).to(directExchange).with(ROUTINGKEY);
}
4.发送消息
rabbitMessagingTemplate.convertAndSend(EXCHANGE_NAME, ROUTINGKEY,message);
5.监听器
@Component
@Slf4j
@RabbitListener(queues = "${PUSH_POINT_QUEUE_NAME}",containerFactory = "queneRabbitListenerContainerFactory")
public class PushPointRabbitReceiver {
@RabbitHandler
public void process(String content) {
/*处理消息*/
}