2017-02-01 2 views
0

Ich versuche, das Urbild cdi-Kamel-mq-Urbild zu verwenden, um eine Anwendung auf Openshift in einem eigenen Namensraum laufen zu testen. Ich möchte, dass diese Anwendung einen Nachrichtenbroker verwendet, der sich in einem anderen Namespace im selben OpenShift-Cluster befindet. Aber wenn ich die Anwendung leite auf Openshift sehe ich den folgenden Fehler in den Protokollen des POD:Wie ein externen Openshift-Namespace in cdi-Kamel verwenden

java.lang.RuntimeException: Fehler @Factory kommentierten Methode verarbeiten: Erstellen Sie auf Bean: com.demo.mqdemotest.ActiveMQComponentFactory . Fehler beim Suchen nach Bean vom Typ: class org.apache.activemq.ActiveMQConnectionFactory für service: broker-tcp.

Verursacht von: java.lang.RuntimeException: Die Methode @Factory konnte nicht mit Annotationen verarbeitet werden: create on bean: com.demo.mqdemotest.mq.ActiveMQConfigurer. Fehler beim Suchen des Service-Brokers-tcp.

Verursacht durch: java.lang.IllegalArgumentException: broker-tcp im Namensraum:: null

Gibt es eine Möglichkeit, den Namensraum, der mein Broker lebt in meinem einzuspritzen No Kubernetes Service für Namen gefunden werden kann Anwendung (wie sehe ich keinen Weg, dies in der Fabric8-cdi-Dokumentation zu tun)? Wenn nicht, wie könnte ich das wie erwartet zur Arbeit bringen?

Antwort

1

Sie haben zwei Möglichkeiten. Je nach Konfiguration:

in Zukunft durch die Verknüpfung Unterstützung Sie können direkt einen Service von einem Projekt zum anderen bereitstellen.

Wenn Sie ein flaches Netzwerk in Ihrer Openshift Installation und keinen Namensraum Segregation haben, könnte das Problem in Ihrem Fall sein, wie Sie Ihre Leistungen zwischen den Projekten verweisen.

Wenn Sie in camel-mq Projekt sind, können Sie die Dienste von mq-demo Projekt verwenden Sie die URL:

<service>.mq-demo.svc.cluster.local:<port> 

Um Dienste in Ihrem mq-demo Lauf zu erhalten:

oc get svc -n mq-demo 

Mehr auf Networking kann sein - auf der Grundlage der Ausnahmemeldung

Nächste Möglichkeit: hier. Vielleicht sollten Sie den Namespace angeben, in dem der broker-tcp-Dienst existiert.

+0

Was bringt oc netnamespaces return? –

+0

Danke, das für mich gearbeitet: tcp: // . .svc.cluster.local: nerdyoutdoorsman

Verwandte Themen