Spring集成网关“Dispatcher”没有订阅者



我在outboundChannel上得到一个异常Dispatcher has no subscribers,不知道为什么。我确信它很简单,我已经将我的代码剥离到下面一个非常简单的示例:

我的上下文是:

<bean id="requestService"
    class="com.sandpit.RequestService" />
<integration:channel id="inboundChannel" />
<integration:service-activator id="service"
    input-channel="inboundChannel"
    output-channel="outboundChannel"
    ref="requestService"
    method="handleRequest" />
<integration:channel id="outboundChannel" />
<integration:gateway id="gateway"
    service-interface="com.sandpit.Gateway"
    default-request-channel="inboundChannel"
    default-reply-channel="outboundChannel" />
<bean class="com.sandpit.GatewayTester">
    <property name="gateway"
        ref="gateway" />
</bean>
我的Java代码是:
public interface Gateway {
    String receive();
    void send(String message);
}
public class RequestService {
    public String handleRequest(String request) {
        return "Request received: " + request;
    }
}
public class GatewayTester implements ApplicationListener<ContextRefreshedEvent> {
    private Gateway gateway;
    public void setGateway(Gateway gateway) {
        this.gateway = gateway;
    }
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        gateway.send("Hello world!");
        System.out.println("FROM SERVICE: " + gateway.receive());
    }
}

注意:断点确实告诉我RequestService实际上正在处理请求。

没有参数的receive()需要回复通道为PollableChannel,参见文档

添加<queue/>outboundChannel .

或者,您可以将网关方法更改为String sendAndReceive(String in),一切都将按预期工作(您甚至可以完全删除outboundChannel)。

最新更新