【问题标题】:Connecting to MongoDB from Camel-K从 Camel-K 连接到 MongoDB
【发布时间】:2021-11-27 19:14:03
【问题描述】:

如何使用 Camel-K(版本 1.6.0)连接到 MongoDB?

我试过直接在 MongoDB Camel 组件 URI 上设置主机名:

...
.to("mongodb:mongoBean?database=[redacted]&collection=[redacted]&hosts=[redacted]&username=[redacted]&password=[redacted]&operation=getDbStats")

但它坚持调用127.0.0.1:27017:

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]
at com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:177)

可能我应该在属性文件中设置类引用,如下所示:

camel.beans.mongoBean = #class:...

但是我不确定那应该是什么类? - 以及要设置哪些其他属性名称?

我正在部署到 Kubernetes 集群(OpenShift CodeReady 容器,使用命令 kamel run MongoDBTest.java --dev)的完整 Camel-K 集成 Java 文件如下所示:

// camel-k: language=java property=file:integration.properties 

import org.apache.camel.builder.RouteBuilder;

public class MongoDBTest extends RouteBuilder {
  @Override
  public void configure() throws Exception {

      from("timer:java?period=1000")
        .routeId("java")
        .to("mongodb:mongoBean?database=[redacted]&collection=[redacted]&operation=getDbStats&hosts=[redacted]&username=[redacted]&password=[redacted]")
        .to("log:info");

  }
}

在 integration.properties 文件中我有:

camel.beans.mongoBean = #class:com.mongodb.MongoClient
  • 是否应该有其他类引用?
  • 如果不在 MongoDB Camel 组件 URI 上设置主机名,camel.beans.mongoBean 下应该有哪些属性?

【问题讨论】:

  • 它应该像设置 hosts 选项一样工作,然后应该忽略连接 bean。有一个使用 hosts 选项的集成测试 (github.com/apache/camel/blob/…) 你能提供一个复制器吗?
  • @LucaBurgazzoli,我用我正在部署到集群的 Camel-K 集成的完整示例以及相关的属性文件更新了这个问题。您看到需要添加/修改的内容了吗?
  • 你能从属性中删除camel.beans.mongoBean吗?
  • @LucaBurgazzoli,我从属性中删除了camel.beans.mongoBean,它给出了相同的结果:集群状态的客户端视图是 {type=UNKNOWN, servers=[{address=127.0.0.1:27017, type= UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, 由 {java.net.ConnectException: Connection denied (Connection denied)}} 引起的]
  • 看起来很奇怪,介意打开一个问题吗?

标签: mongodb apache-camel apache-camel-k


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 2019-03-14
  • 2020-01-20
  • 2017-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多