【发布时间】:2017-01-23 09:35:07
【问题描述】:
我有一个应用程序,它使用 spring AMQP 来向其他应用程序消费和生成消息。 我有一个场景发生了一些异常,我需要重新排队回到 RabbitMQ。对于一些我需要忽略的异常(基本上我需要忽略不需要重新排队的消息)
目前在下面的代码中, 我已将配置设置为
factory.setDefaultRequeueRejected(false);
但我的要求是动态拒绝某些消息并重新排队返回 RabbitMQ 以获取某些消息。
请推荐
@Bean(name="rabbitListenerContainerFactory")
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
Jackson2JsonMessageConverter messageConverter = new Jackson2JsonMessageConverter();
DefaultClassMapper classMapper = new DefaultClassMapper();
Map<String, Class<?>> idClassMapping = new HashMap<String, Class<?>>();
idClassMapping.put(Constants.JOB_TYPE_ID_, JobListenerDTO.class);
classMapper.setIdClassMapping(idClassMapping);
messageConverter.setClassMapper(classMapper);
factory.setMessageConverter(messageConverter);
factory.setDefaultRequeueRejected(false);
factory.setReceiveTimeout(10L);
return factory;
}
【问题讨论】: