我认为集成通道名称不是我配置的名称。是什么赋予了?

时间:2019-03-28 20:24:58

标签: spring spring-integration

似乎通道名称正在与应用程序包装程序的toString()结果并置以创建实际的通道名称。

  1. 这有关系吗?
  2. 这与我追寻的“调度员没有频道订阅者”错误有关吗?
  3. 如果是,我该怎么办?
  4. 如果没有,如何找到我要追查的实际错误?

根据抛出的异常,通道的名称为 :

ng serve

我的代码是:

org.springframework.web.context.support.AnnotationConfigWebApplicationContext@78e22c75.outbound-requests

1 个答案:

答案 0 :(得分:2)

  1. 是的,这很重要。您的应用程序可能具有多个应用程序上下文。假设父母/子女关系和您的“子女”可能具有相同的bean名称。因此,仅登录一个没有应用程序上下文ID的bean名称。相对的代码是这样的:

    /**
     * Returns the fully qualified channel name including the application context
     * id, if available.
     *
     * @return The name.
     */
     public String getFullChannelName() {
        if (this.fullChannelName == null) {
            String contextId = getApplicationContextId();
            String componentName = getComponentName();
            componentName = (StringUtils.hasText(contextId) ? contextId + "." : "") +
                    (StringUtils.hasText(componentName) ? componentName : "unknown.channel.name");
            this.fullChannelName = componentName;
        }
        return this.fullChannelName;
    }
    
  2. 不,不是。这样的异常意味着在发送消息的那一刻,该频道没有订阅的端点。否则,您根本就不会将此频道作为input频道,或者端点之间已经停止。

  3. 研究在何处将此通道用作输入通道,或者如何停止可能的端点。

  4. 从Framework的角度来看,无法确定您要对此频道执行的操作。 DirectChannel是一种通道实现,它要求订阅者在将消息发送到该通道之前处于活动状态。

我回答了您的所有问题,但仍不清楚您追求与我们分享所有这些信息的目的是什么。

用两个词表示:拥有该频道的订阅者,您的Dispatcher has no subscribers for channel将会加入!换句话说,它与@ServiceActivator@Transformer或相关的XML配置,甚至Java DSL IntegrationFlow有关。

要解决您的实际问题,我们需要查看有关outbound-requests渠道定义的更多配置。