Printemps RabbitMQ - à l'aide de manuel canal d'accusé de réception sur un service avec @RabbitListener de configuration

Comment reconnaître les messages manuellement, sans l'aide de l'auto accusé de réception.
Est-il possible d'utiliser en parallèle avec le @RabbitListener et @EnableRabbit style de configuration.
La plupart de la documentation nous dit d'utiliser SimpleMessageListenerContainer avec ChannelAwareMessageListener.
Cependant, l'utilisation que l'on perd de la souplesse qui est fourni avec les annotations.
J'ai configuré mon service en tant que ci-dessous :

@Service
public class EventReceiver {

@Autowired
private MessageSender messageSender;

@RabbitListener(queues = "${eventqueue}")
public void receiveMessage(Order order) throws Exception {

  //code for processing order
}

Mon RabbitConfiguration est comme ci-dessous

@EnableRabbit
public class RabbitApplication implements RabbitListenerConfigurer {

public static void main(String[] args) {
    SpringApplication.run(RabbitApplication.class, args);
}

@Bean


public MappingJackson2MessageConverter jackson2Converter() {
        MappingJackson2MessageConverter converter = new  MappingJackson2MessageConverter();
        return converter;
    @Bean
public SimpleRabbitListenerContainerFactory myRabbitListenerContainerFactory() {
      SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
      factory.setConnectionFactory(rabbitConnectionFactory());
      factory.setMaxConcurrentConsumers(5);
      factory.setMessageConverter((MessageConverter) jackson2Converter());
      factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
      return factory;
    }

@Bean
public ConnectionFactory rabbitConnectionFactory() {
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
    connectionFactory.setHost("localhost");
    return connectionFactory;
}

@Override
public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {
    registrar.setContainerFactory(myRabbitListenerContainerFactory());
}

@Autowired
private EventReceiver receiver;
}
}

Toute aide sera appréciée sur la façon d'adapter le manuel de canal d'accusé de réception avec le style précédent de configuration.
Si nous mettons en œuvre la ChannelAwareMessageListener puis le onMessage signature va changer.
Pouvons-nous mettre en œuvre ChannelAwareMessageListener sur un service ?

Une question est pourquoi vous avez besoin même de le faire. Si votre code est comme dans votre réponse ci-dessous, (rejeter en cas d'échec, ack autrement), le conteneur va le faire automatiquement pour vous avec AUTO ack mode - si l'auditeur déclenche une exception, le message sera rejeté; sinon roupe animé.

OriginalL'auteur Guru | 2016-08-02