Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我能';t使用“spring”组织消息的延迟发送_Java_Spring_Rabbitmq_Spring Amqp - Fatal编程技术网

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();
        }