J'essaie d'utiliser le plugin d'échange retardé, mais en quelque sorte son ne fonctionne pas pour moi et le message sont reçus sans délai.RabbitMQ message retardé ne fonctionne pas
J'ai essayé les choses suivantes:
a) permis rabbitmq_delayed_message_exchange avec succès et redémarré le serveur rabbitmq sur ubuntu-16.04.
b) d'échange Déclarant
Map<String,Object> props = new HashMap<String,Object>();
props.put("x-delayed-type", "direct");
this.automationExchange = new DirectExchange(exchangeName,true,false, props);
c) Pousser message comme
DefaultClassMapper typeMapper = QueueUtils.classMapper;
typeMapper.setDefaultType(type);
Jackson2JsonMessageConverter converter = QueueUtils.converter;
converter.setClassMapper(typeMapper);
RabbitTemplate template = AMQPRabbitMQTemplate.getAMQPTemplate();
template.setMessageConverter(converter);
template.convertAndSend(routingKey, message, new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message m) throws AmqpException {
m.getMessageProperties().setDelay(delayMiliSeconds);
m.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
return m;
}
});
Maintenant, quand je suis en train d'imprimer un message
public void onMessage(Message message, Channel channel) throws Exception{
System.out.println(message.getMessageProperties().getDelay());
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}
impression est nulle pour getDelay, qui devrait idéalement être négatif de la valeur de consigne selon https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq.
S'il vous plaît laissez-moi savoir si je fais quelque chose de mal. J'utilise la version 1.6.8.RELEASE pour spring-amqp et spring-rabbit.
Merci Gary cela a fonctionné après avoir réglé setDelayed (true). –