2017-05-25 1 views
0

Je développe une application de démarrage personnalisée en utilisant le code here, car je voulais y ajouter TcpSSLContextSupport. J'ai réussi à le faire, et cela a bien fonctionné sur mon serveur SCDF local, mais maintenant je veux le déployer sur SCDF pour Kubernetes sur Google Cloud. J'ai créé un image pour cela et cela fonctionne, mais le comportement est un peu inattendu. J'ai créé un flux de type stream create stream-name --definition "app-name | log". Tout d'abord, il a créé un sujet selon la convention stream-name.app-name, et je m'attendais à ce qu'il me montre les messages, mais il écrit en fait dans le sujet "sortie", ce qui est étrange. Je n'ai fourni aucune configuration supplémentaire. Je l'ai essayé avec la dernière version de SCDF ainsi qu'avec 1.2.0.RELEASE avec les mêmes résultats.L'application personnalisée SCDF Starter écrit sur le thème "sortie"

Répondre

0

Depuis la création du sujet stream-name.app-name, le SCDF définit correctement le nom de la destination sortante pour votre application source. Notez que SCDF définit uniquement la propriété spring.cloud.stream.bindings.output.destination pour les applications. Ici, le canal sortant est supposé être output.

Je suppose que vous avez un nom de cible de liaison différent pour le canal de message outbound dans votre application personnalisée. SCDF ne définissant pas la destination de cette application, l'application utilise par défaut output comme destination.

Vérifiez votre nom de cible outbound dans votre application personnalisée. Vous devez définir la propriété spring.cloud.stream.bindings.<customOutboundTargetName>.destination en tant que propriété de déploiement pour l'application.

Par exemple,

`` `

flux de données:> flux Déployez flux nom --properties « app.source-app-name.spring.cloud.stream.bindings.customOutboundTargetName.destination = yourTopic, app.sink-app-name.spring.cloud.stream.bindings.customInboudTargetName.destination = yourTopic »

` ``

note: customOutboundTargetName et customInboundTargetName sont définis comme output et input par défaut via SCDF.

+0

Je connais la configuration que je peux ajouter, mais j'essaie de comprendre pourquoi Spring le fait spécifiquement avec mon application personnalisée, mais pas quand j'utilise le 'tcp | log' option, surtout quand je n'ai rien changé que je puisse penser. Et je ne sais pas non plus ce que vous voulez dire quand vous avez dit que Spring définit correctement le canal sortant quand 'stream-name.app-name' est créé, car il définit clairement le canal sortant à' output' malgré cela? – ystark

+0

Toutes les applications prêtes à l'emploi proposent les noms de canaux sortants et entrants comme 'output' et' input'. C'est la raison pour laquelle SCDF définit le nom de la destination en utilisant ce nom de canal. Si vous utilisez un nom de chaîne différent dans votre application personnalisée, vous devez configurer comme indiqué ci-dessus. –

+1

En outre, c'est Spring Cloud Stream qui définit le nom de la destination sortante (topic) comme 'output' et cela se passe ici: https://github.com/spring-cloud/spring-cloud-stream/blob/master/spring- cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingServiceProperties.java # L207 –