Да, это важно. Ваше приложение может иметь несколько контекстов приложения. Допустим, отношения между родителями и детьми и ваши «дети» могут иметь одно и то же имя. Таким образом, войдите только имя компонента без идентификатора контекста приложения Соответствующий код выглядит так:
/**
* 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;
}
Нет, это не так. Такое исключение означает, что на момент отправки сообщения на этом канале нет подписанной конечной точки. Или у вас просто нет этого канала как input
где-либо, или конечная точка была остановлена между ними.
Выясните, где вы используете этот канал в качестве входного или как возможно, что ваша возможная конечная точка остановлена.
С точки зрения Framework невозможно определить, что вы хотели бы делать с этим каналом. DirectChannel
- это тот тип реализации канала, который требует, чтобы подписчик был активным, прежде чем сообщение будет отправлено на этот канал.
Я ответил на все ваши вопросы, но до сих пор не ясно, какую цель вы преследуете, делясь с нами всей этой информацией.
В двух словах: у вас есть подписчик на этот канал и ваш Dispatcher has no subscribers for channel
пойдет! Другими словами, речь идет о @ServiceActivator
, @Transformer
или соответствующей конфигурации XML или даже о Java DSL IntegrationFlow
.
Чтобы решить вашу реальную проблему, нам нужно увидеть больше настроек вокруг этого outbound-requests
определения канала.