Я изо всех сил стараюсь найти способ для запланированных/отложенных сообщений весной AMQP/Rabbit MQ.
После долгих поисков я не могу этого сделать весной AMQP. Может кто-нибудь, пожалуйста, скажите мне, как сделать x-delay весной AMQP.
Я хочу задержать сообщение, если какое-то исключение возникает в потребительской стороне. RabbitMQ говорит, чтобы добавить й задержку и установить плагин, который я уже сделал, но все сообщения сразу пришедшими без каких-либо задержекЗапланированная/Задержка обмена сообщениями весной AMQP RabbitMq
Я получаю это сообщение
Received < (Body: '[B @ 60a4ae5f (байт [26]) 'MessageProperties [заголовки = {х задержка = 15000}
@Bean
ConnectionFactory connectionFactory(){
CachingConnectionFactory connectionFactory=new CachingConnectionFactory("127.0.0.1");
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
connectionFactory.setPort(1500);
connectionFactory.setPublisherReturns(true);
return connectionFactory;
}
@Bean
Binding binding(@Qualifier("queue")Queue queue, DirectExchange exchange) {
return new Binding(queue.getName(), Binding.DestinationType.QUEUE, exchange.getName(), queue.getName(), null);
//return BindingBuilder.bind(queue).to(exchange).with(queueName);
}
@Bean
DirectExchange exchange() {
DirectExchange exchange=new DirectExchange("delay-exchange");
return exchange;
}
Потребитель ---
@Override
public void onMessage(Message message, Channel channel) throws Exception {
System.out.println("Received <" + message+ ">" +rabbitTemplate);
if(i==1){
AMQP.BasicProperties.Builder props = new AMQP.BasicProperties.Builder();
Map<String,Object> headers = message.getMessageProperties().getHeaders();
headers.put("x-delay", 15000);
props.headers(headers);
i++;
channel.basicPublish(message.getMessageProperties().getReceivedExchange(), message.getMessageProperties().getReceivedRoutingKey(),
props.build(), message.getBody());
}
}
Не уверен, кто рекомендовал вам пометить этот вопрос тегом 'jms', но это неверно. Это касается только RabbitMQ. И да, 'spring-amqp'. Фиксация ... –