1
저는 Spring 통합 프레임 워크를 처음 사용합니다. 스프링 통합 웹 소켓 샘플 code을 실행하는 동안 'outputChannel'또는 'outputChannelName'이 필요합니다. 예외입니다.스프링 통합 websocket "outputChannel"또는 "outputChannelName"이 필요합니다. 예외 "
내가 무엇을 놓쳤습니까? 다음
내 코드는,
@Configuration
@ComponentScan
@EnableAutoConfiguration
@RestController
public class Application {
public static void main(String args[]) throws Throwable {
SpringApplication.run(Application.class, args);
}
@Bean
ServerWebSocketContainer serverWebSocketContainer() {
return new ServerWebSocketContainer("/names").withSockJs();
}
@Bean
MessageHandler webSocketOutboundAdapter() {
return new WebSocketOutboundMessageHandler(serverWebSocketContainer());
}
@Bean(name = "webSocketFlow.input")
MessageChannel requestChannel() {
return new DirectChannel();
}
@Bean
IntegrationFlow webSocketFlow() {
return f -> {
Function<Message, Object> splitter = m -> serverWebSocketContainer().getSessions().keySet().stream()
.map(s -> MessageBuilder.fromMessage(m).setHeader(SimpMessageHeaderAccessor.SESSION_ID_HEADER, s).build()).collect(Collectors.toList());
f.split(Message.class, splitter).channel(c -> c.executor(Executors.newCachedThreadPool())).handle(webSocketOutboundAdapter());
};
}
@RequestMapping("/hi/{name}")
public void send(@PathVariable String name) {
requestChannel().send(MessageBuilder.withPayload(name).build());
}
}
예외 스택,
java.lang.IllegalStateException: 'outputChannel' or 'outputChannelName' is required
at org.springframework.util.Assert.state(Assert.java:70)
at org.springframework.integration.endpoint.MessageProducerSupport.afterSingletonsInstantiated(MessageProducerSupport.java:153)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:781)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
지원해 주셔서 감사합니다. WebSocketInboundChannelAdapter Bean 정의가있는 config 클래스가 있다고합니다. 클라우드 스트림 시동기를위한 소스 앱을 만들려고했는데, 매우 새로 웠습니다. 왜냐하면 websocket 소스는 github에서 사용할 수 없기 때문입니다. 소스로 websocket 서버를 시작하고 브로커 (Kafka/rabit)에게받은 메시지를 전달하고 싶습니다. 프레임 워크에 의해 처리되는 부분과 소스 부분에 작성해야 할 내용을 알고 싶습니다. 당신이 나에게 간단한 것을 줄 수 있니? – Krishas
글쎄, 그건 별도로 질문을받을 가치가있어. 현재와 관련이 없습니다. 그러나 적절한 GH 문제 (https://github.com/spring-cloud-stream-app-starters/websocket/issues/2)에서 논의 할 수 있습니다. 그리고 언급 된 문제가 충분하다면 여기 내 대답을 받아 들여야합니다. –
물론입니다. 완료 ... – Krishas