Проблема с файловой поддержкой весенней интеграции - PullRequest
0 голосов
/ 13 июля 2020

https://docs.spring.io/spring-integration/docs/5.3.1.RELEASE/reference/html/index-single.html#configuring -with- java -configuration-8

По приведенной выше ссылке показан официальный пример кода. Когда я тестирую этот код, возникает исключение.

"Exception in thread "main" org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'directory' cannot be found on object of type 'org.springframework.messaging.MessageHeaders' - maybe not public or not valid?"

Но дело не в этом, поэтому я изменил программу и продолжил тестирование.

@SpringBootApplication
@IntegrationComponentScan
public class SimpleFileApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context =
                new SpringApplicationBuilder(SimpleFileApplication.class)
                        .web(WebApplicationType.NONE)
                        .run(args);
        MyGateway gateway = context.getBean(MyGateway.class);
//        gateway.writeToFile("foo.txt", new File("/Users/duandarui/temp/", "fileWritingFlow"), "foo");
        gateway.writeToFile("foo");
    }

    @Bean
    @ServiceActivator(inputChannel = "writeToFileChannel")
    public MessageHandler fileWritingMessageHandler() {
//        Expression directoryExpression = new SpelExpressionParser().parseExpression("headers.directory");
//        FileWritingMessageHandler handler = new FileWritingMessageHandler(directoryExpression);
        FileWritingMessageHandler handler = new FileWritingMessageHandler(new File("/Users/duandarui/temp/log.txt"));
        handler.setFileExistsMode(FileExistsMode.APPEND);
        return handler;
    }

    @MessagingGateway(defaultRequestChannel = "writeToFileChannel")
    public interface MyGateway {
        void writeToFile(String data);
        void writeToFile(@Header(FileHeaders.FILENAME) String fileName,
                         @Header(FileHeaders.FILENAME) File directory, String data);

    }
}

Затем я получил другое исключение.

Exception in thread "main" org.springframework.messaging.MessageHandlingException: error occurred in message handler [bean 'fileWritingMessageHandler'; defined in: 'com.example.integration.simplefile.SimpleFileApplication'; from source: 'org.springframework.core.type.StandardMethodMetadata@18920cc']; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available, failedMessage=GenericMessage [payload=foo, headers={id=d122a505-1066-8904-041e-372ef36d3385, timestamp=1594630697745}]
    
    ... ...
    
Caused by: org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available

Итак, я хочу знать причину исключения «нет выходного канала или заголовка replyChannel».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...