当前位置: 首页 > 知识库问答 >
问题:

使用Spring Data Mongo的连接性问题以及Spring与Azure CosmosDB(MongoDB)的集成

郭浩穰
2023-03-14

我有以下设置:

    null
return IntegrationFlows.from(MongoDb.reactiveInboundChannelAdapter(mongoDbFactory,
        new Query().addCriteria(Criteria.where("status").is(ProcessingStatus.PROCESSED))
                .with(Sort.by(Sort.Direction.DESC, "modifiedDate")).limit(1))
                .collectionName("processingMetadata")
                .entityClass(ProcessingMetadata.class)
                .expectSingleResult(true),
        e -> e.poller(Pollers.fixedDelay(Duration.ofSeconds(pollingIntervalSeconds))))
        .<Mono<ProcessingMetadata>>handle((p, h) -> {
            // do something
        })

它应该每3秒轮询一次Mongo,但它实际上从来没有这样做(再次,它在本地工作没有问题)。

之后连接工作良好,因为我有另一个由文件上传触发的进程,它工作正常(数据被写入MongoDB)。

老实说,我有点困惑是哪个组件在这里出了问题,所以我希望你能帮我缩小范围。

.handle(Jpa.retrievingGateway(this.sourceEntityManagerFactory)
        .entityClass(DocumentHeader.class)
        .jpaQuery("from DocumentHeader d where d.modifiedDate > :modified")
        .parameterExpression("modified", "payload")
        .maxResults(maxResults), e -> e.id("retrieveDocumentHeader"))
.<List>handle((p, h) -> {
    if (p.isEmpty())
        this.advices.waitUntilCompletedAdvice().setWait(false);
    return p;
})
.channel(Channels.DOCUMENT_HEADER.name())
2020-09-25 08:35:07.771 DEBUG 1 --- [ask-scheduler-3] o.s.d.m.core.ReactiveMongoTemplate       : find using query: { "status" : "PROCESSED"} fields: Document{{}} for class: class com.zurich.ccmc.data.orchestrator.domain.targetdb.ProcessingMetadata in collection: processingMetadata
2020-09-25 08:35:07.771 DEBUG 1 --- [ask-scheduler-3] o.s.i.e.SourcePollingChannelAdapter      : Poll resulted in Message: GenericMessage [payload=MonoNext, headers={mongo_collectionName=processingMetadata, id=4a26e221-deb9-f1af-1c35-7ba0d47042b1, timestamp=1601022907771}]
2020-09-25 08:35:07.778 DEBUG 1 --- [ask-scheduler-3] o.s.i.splitter.DefaultMessageSplitter    : handler 'bean 'setProcessingStatusToOpen.splitter#0' for component 'setProcessingStatusToOpen.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; defined in: 'class path resource [xxx/processing/ProcessingMetadataFlow.class]'; from source: 'bean method setProcessingStatusToOpen'' produced no reply for request Message: GenericMessage [payload=[], headers={mongo_collectionName=processingMetadata, id=0a446b4c-12fc-d72d-d4ad-8453eb51227c, timestamp=1601022907778}]

共有1个答案

高嘉熙
2023-03-14

发现问题了。jdbc-URL参数错误(部署到AKS时一开始缺少jdbc:sqlserver://)。我希望有某种适当的例外,但只有这个警告:

2020-09-24 14:33:04.710  WARN 1 --- [         task-1] o.h.e.j.e.i.JdbcEnvironmentInitiator     : HHH000342: Could not obtain connection to query metadata : Driver com.microsoft.sqlserver.jdbc.SQLServerDriver 
accept jdbcUrl, xxx.database.windows.net

我也不明白为什么JPA.RetrievingGateway没有抛出任何异常并跳转到下一个处理程序...

 类似资料:
  • 我的spring应用程序使用mongodb进行持久化。应用程序使用用户名/密码连接到mongodb。 为了找到Spring Native的好处,我在我的Ubuntu18LTS上创建了一个docker映像。当我使用docker compose运行应用程序映像和mongodb映像时,一切看起来都很好。当我调用插入mongodb的rest api时,应用程序会抛出一个错误 操作系统:Ubuntu18LT

  • 因此,在aws实例中,我们尝试将spring kafka与msk连接起来,在msk中使用本地kafka。接下来没有ssl。我试着用telnet运行它。但是在运行应用程序时,出现了这个异常。 我们的msk集群在同一个vpc中。所有代理连接配置字符串都正常

  • 问题内容: 当我的MongoDB连接空闲几分钟后,下一个请求将错误结束。从命令行客户端,它看起来像这样: 我看到针对MongoHQ和MongoLab的沙箱实例的问题。 由于重新连接,下一个请求通过正常。这是我的网络应用程序中的一个问题,因为几分钟不活动后,在网络请求期间将出现此错误。有两件事让我感到惊讶: MongoDB连接被如此频繁和频繁地破坏,并且 驱动程序只是引发一个异常,而不是在重新连接后

  • 当我用我的节点运行MongoDB连接时。js应用程序哪个游戏平台我在这里面临着越来越多的MongoDB连接的问题[不使用任何查询,但它不断增加],达到819,我的MongoDB复制服务器停止响应,间接应用程序停止工作。但是我想保持至少20个关于如何解决这些问题的联系,请帮助我。 ** Mongodb连接:const connectionString=mongodb://AAAA:PASSWORD@

  • 未能配置数据源:未指定“url”属性,无法配置任何嵌入的数据源。 原因:未能确定合适的驱动程序类 行动:

  • 刚到spring boot,我想知道如何为MongoDB配置连接细节。我已经尝试了正常的例子,但没有涉及连接的细节。 我想指定将要使用的数据库和运行MongoDB的主机的URL/端口。 有什么提示或提示吗?