依赖循环on Spring WebSocket拦截器和spring云流

时间:2017-04-07 06:32:53

标签: spring-websocket spring-cloud-stream

我正在尝试创建一个websocket拦截器,它使用来自Spring云流的MessageChannel发送消息。我正面临一个依赖循环

ActiveX

我的问题是我需要将一个MessageChannel注入websocket拦截器

如果我使用@Autowire

,我收到以下错误
Button1

1 个答案:

答案 0 :(得分:1)

行。谢谢!不,我看到了问题。

查找

  • MyChannelInterceptor取决于BinderService自动创建的频道。
  • 那个尝试从应用程序上下文中推断MessageConverter
  • AbstractMessageBrokerConfiguration提供了一个CompositeMessageConverter brokerMessageConverter
  • 该类由@EnableWebSocketMessageBroker
  • 实例化
  • 反过来会因WebSocketConfig
  • 而扫描您的AbstractWebSocketMessageBrokerConfigurer
  • 最后一个想要注射你的MyChannelInterceptor

不确定如何将其作为开箱即用的功能进行修复,但这是一种解决方法:

public class MyChannelInterceptor extends ChannelInterceptorAdapter {

    @Autowired
    private MessageChannel output;
@Configuration
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Bean
    public MyChannelInterceptor myChannelInterceptor() {
        return new MyChannelInterceptor();
    }
...
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
    registration.setInterceptors(myChannelInterceptor());
}