spring集成rabbitMQ,使用amqpTemplate操作rabbitmq,但是在现在有业务场景需要有队列中的消息能延迟消费,不知道这一块如何配置和操作,有人给点思路吧
我在做的一个项目再用rabbitMq,下面是代码,当时没有用配置,好像是用配置文件时有问题,你可以参考下
/**
RabbitMQ配置.
*/
@Configuration
public class RabbitConfiguration implements RabbitListenerConfigurer {
private static final Logger log = LoggerFactory.getLogger(RabbitConfiguration.class);
@Bean
Queue queueFacebookQuery() {
return new Queue(QueueName. _QUERY, true);
}
@Bean
Queue queueFacebookResult() {
return new Queue(QueueName. _RESULT, true);
}
@Bean
DirectExchange exchange() {
return new DirectExchange(QueueName.EXCHANGE);
}
@Bean
Binding bindingQueue Query(Queue queue Query, DirectExchange exchange) {
return BindingBuilder.bind(queue Query).to(exchange).with(QueueName. _QUERY);
}
@Bean
Binding bindingQueue Result(Queue queue Result, DirectExchange exchange) {
return BindingBuilder.bind(queue Result).to(exchange).with(QueueName. _RESULT);
}
@Bean
public MappingJackson2MessageConverter jackson2Converter() {
return new MappingJackson2MessageConverter();
}
@Bean
public DefaultMessageHandlerMethodFactory myHandlerMethodFactory() {
DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();
factory.setMessageConverter(jackson2Converter());
return factory;
}
@Override
public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
registrar.setMessageHandlerMethodFactory(myHandlerMethodFactory());
}
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(
SimpleRabbitListenerContainerFactoryConfigurer configurer,
ConnectionFactory connectionFactory,
CustomErrorHandler customErrorHandler
) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setErrorHandler(customErrorHandler);
log.info("TLQ00960: factory -----> " + factory);
configurer.configure(factory, connectionFactory);
return factory;
}
@Bean
public StatefulRetryOperationsInterceptor interceptor() {
return RetryInterceptorBuilder.stateful()
.maxAttempts(5)
.backOffOptions(60000, 2.0, 200000) // initialInterval, multiplier, maxInterval
.build();
}
}