如何在 cdi-camel 中使用外部 OpenShift 命名空间
How to use an external OpenShift namespace in cdi-camel
我正在尝试使用原型 cdi-camel-mq-archetype 在其自己的命名空间中测试 OpenShift 上的应用程序 运行。我希望此应用程序使用驻留在同一 OpenShift 集群上的不同命名空间中的消息代理。但是当我 运行 OpenShift 上的应用程序时,我在 POD 的日志中看到以下错误:
java.lang.RuntimeException: Failed to process @Factory annotated method: create on bean: com.demo.mqdemotest.ActiveMQComponentFactory. Failed to lookup bean of type: class org.apache.activemq.ActiveMQConnectionFactory for service: broker-tcp.
Caused by: java.lang.RuntimeException: Failed to process @Factory annotated method: create on bean: com.demo.mqdemotest.mq.ActiveMQConfigurer. Failed to lookup service broker-tcp.
Caused by: java.lang.IllegalArgumentException: No kubernetes service could be found for name: broker-tcp in namespace: null
有没有办法将我的代理所在的命名空间注入我的应用程序(因为我在 fabric8 cdi 文档中没有看到这样做的方法)?如果不是,我怎么能让它按预期工作?
你有两个选择。根据您的设置:
- 您可以将您的服务公开为路由并在另一个项目中使用它OpenShift Origin: Routes
- 你可以加入两个项目的网络OpenShift Origin: Joining project networks
将来通过链接支持,您将能够直接提供从一个项目到另一个项目的服务。
如果您的 OpenShift 安装中有一个平面网络并且没有名称空间隔离,那么您遇到的问题可能是您如何在项目之间引用您的服务。
如果您在 camel-mq
项目中,则可以通过 url:
使用 mq-demo
项目中的服务
<service>.mq-demo.svc.cluster.local:<port>
要在您的 mq-demo
运行 中获得服务:
oc get svc -n mq-demo
可在此处找到有关网络的更多信息:OpenShift Origin: Networking
下一种可能性 - 基于异常消息 broker-tcp in namespace: null
。也许您应该指定 broker-tcp
服务所在的命名空间。
我正在尝试使用原型 cdi-camel-mq-archetype 在其自己的命名空间中测试 OpenShift 上的应用程序 运行。我希望此应用程序使用驻留在同一 OpenShift 集群上的不同命名空间中的消息代理。但是当我 运行 OpenShift 上的应用程序时,我在 POD 的日志中看到以下错误:
java.lang.RuntimeException: Failed to process @Factory annotated method: create on bean: com.demo.mqdemotest.ActiveMQComponentFactory. Failed to lookup bean of type: class org.apache.activemq.ActiveMQConnectionFactory for service: broker-tcp.
Caused by: java.lang.RuntimeException: Failed to process @Factory annotated method: create on bean: com.demo.mqdemotest.mq.ActiveMQConfigurer. Failed to lookup service broker-tcp.
Caused by: java.lang.IllegalArgumentException: No kubernetes service could be found for name: broker-tcp in namespace: null
有没有办法将我的代理所在的命名空间注入我的应用程序(因为我在 fabric8 cdi 文档中没有看到这样做的方法)?如果不是,我怎么能让它按预期工作?
你有两个选择。根据您的设置:
- 您可以将您的服务公开为路由并在另一个项目中使用它OpenShift Origin: Routes
- 你可以加入两个项目的网络OpenShift Origin: Joining project networks
将来通过链接支持,您将能够直接提供从一个项目到另一个项目的服务。
如果您的 OpenShift 安装中有一个平面网络并且没有名称空间隔离,那么您遇到的问题可能是您如何在项目之间引用您的服务。
如果您在 camel-mq
项目中,则可以通过 url:
mq-demo
项目中的服务
<service>.mq-demo.svc.cluster.local:<port>
要在您的 mq-demo
运行 中获得服务:
oc get svc -n mq-demo
可在此处找到有关网络的更多信息:OpenShift Origin: Networking
下一种可能性 - 基于异常消息 broker-tcp in namespace: null
。也许您应该指定 broker-tcp
服务所在的命名空间。