Java 我能';t使用“spring”组织消息的延迟发送
配置类(部分): 发送消息的方法:Java 我能';t使用“spring”组织消息的延迟发送,java,spring,rabbitmq,spring-amqp,Java,Spring,Rabbitmq,Spring Amqp,配置类(部分): 发送消息的方法: try { success = clientRepository.updateAnketa(privatePersonProfile.getProfileId(), clubProAnketa, null); } catch (ClubProNotAvailableException e) { ClubProNotAvailableRabbit clubProNotAvailableRabbit
try {
success = clientRepository.updateAnketa(privatePersonProfile.getProfileId(), clubProAnketa, null);
} catch (ClubProNotAvailableException e) {
ClubProNotAvailableRabbit clubProNotAvailableRabbit = new ClubProNotAvailableRabbit();
clubProNotAvailableRabbit.setRequestContextRabbit(RequestContextRabbit.createContext(requestContextService.getContext()));
clubProNotAvailableRabbit.setCountRetry(0L);
clubProNotAvailableRabbit.setProfileId(privatePersonProfile.getProfileId());
clubProNotAvailableRabbit.setNameMethod(ChangeMethod.CHANGE_ANKETA);
clubProNotAvailableRabbit.setChangeAnketaData(anketa);
rabbitTemplate.convertAndSend(config.getExchange(), config.getRoutingKey(), clubProNotAvailableRabbit, new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties().setHeader("x-delay", 10000);
return message;
}
});
throw new ClubProNotAvailableException();
}
代理中的配置:
队列配置:
交换机的配置:
我已经阅读了文档,尝试了几个选项,但我无法将其应用到我的代码中
我做错了什么?我将非常感谢您的帮助。看来您没有延迟的exchange插件;您还将交换声明为简单的
扇出
;交易所应该是这样的:
此外,要设置发送时的延迟,应使用:
template.convertAndSend(exchangeName,queue.getName(),“foo”,消息->{
message.getMessageProperties().setDelay(1000);
返回消息;
});
不使用插件是否可以执行此操作?这里也是一样,但是没有插件,没有dlxNo;这里是插件;您可以使用第二个队列DLX和TTL来模拟它。
try {
success = clientRepository.updateAnketa(privatePersonProfile.getProfileId(), clubProAnketa, null);
} catch (ClubProNotAvailableException e) {
ClubProNotAvailableRabbit clubProNotAvailableRabbit = new ClubProNotAvailableRabbit();
clubProNotAvailableRabbit.setRequestContextRabbit(RequestContextRabbit.createContext(requestContextService.getContext()));
clubProNotAvailableRabbit.setCountRetry(0L);
clubProNotAvailableRabbit.setProfileId(privatePersonProfile.getProfileId());
clubProNotAvailableRabbit.setNameMethod(ChangeMethod.CHANGE_ANKETA);
clubProNotAvailableRabbit.setChangeAnketaData(anketa);
rabbitTemplate.convertAndSend(config.getExchange(), config.getRoutingKey(), clubProNotAvailableRabbit, new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties().setHeader("x-delay", 10000);
return message;
}
});
throw new ClubProNotAvailableException();
}