Mulesoft 插入 Mongo 数据库

Mulesoft Insertion into Mongo DB database

我正在使用 Mongo 数据库连接器将数据插入位于 mLab 中的 Mongo 实例。 我确信我使用的是正确的凭据,因为当我通过 Java 代码使用这些凭据时,它们可以正常工作。 但是这里使用 Mongo 数据库连接器不断地抛出一个错误,如下所示。

org.mule.api.ConnectionException: Couldn't connect with the given credentials org.mule.api.ConnectionException: Couldn't connect with the given credentials at org.mule.module.mongo.MongoCloudConnector.getDatabase(MongoCloudConnector.java:1304) at org.mule.module.mongo.MongoCloudConnector.connect(MongoCloudConnector.java:1173) at org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionFactory.makeObject(MongoCloudConnectorConnectionFactory.java:56) at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220) at org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionManager.acquireConnection(MongoCloudConnectorConnectionManager.java:361) at org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionManager.test(MongoCloudConnectorConnectionManager.java:444) at org.mule.tooling.metadata.api.utils.ConnectionTester.internalTestConnection(ConnectionTester.java:88) at org.mule.tooling.metadata.api.utils.ConnectionTester.testConnectionFor(ConnectionTester.java:113) at

这里有我遗漏的东西吗?

下面是 XML :

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:mongo="http://www.mulesoft.org/schema/mule/mongo" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/mongo http://www.mulesoft.org/schema/mule/mongo/current/mule-mongo.xsd">
    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
    <http:request-config name="HTTP_Request_Configuration" host="developers.zomato.com" port="80" doc:name="HTTP Request Configuration"/>
    <http:request-config name="HTTP_Request_Configuration1" host="api.mlab.com" port="80" doc:name="HTTP Request Configuration"/>
    <mongo:config name="Mongo_DB" password="XXXXX" database="restaurant_data" host="ds241039.mlab.com" port="41039" doc:name="Mongo DB" username="XxXx"/>
    <flow name="rest-webservice-applicationFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/rest" allowedMethods="GET" doc:name="HTTP"/>
        <http:request config-ref="HTTP_Request_Configuration" path="api/v2.1/search" method="GET" doc:name="HTTP">
            <http:request-builder>
                <http:query-param paramName="entity_id" value="1"/>
                <http:query-param paramName="entity_type" value="city"/>
                <http:header headerName="user-key" value="XXXXXXXXX"/>
            </http:request-builder>
        </http:request>
        <dw:transform-message doc:name="Transform Message" metadata:id="13f7b603-ac1e-45b4-9950-32c39a20ee36">
            <dw:input-payload mimeType="application/json"/>
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
{
    results_found: payload.results_found,
    results_start: payload.results_start,
    results_shown: payload.results_shown,
    restaurants: payload.restaurants map ((restaurant , indexOfRestaurant) -> {
        restaurant: {
            R: restaurant.restaurant.R,
            id: restaurant.restaurant.id,
            name: restaurant.restaurant.name,
            url: restaurant.restaurant.url,
            location: restaurant.restaurant.location,
            switch_to_order_menu: restaurant.restaurant.switch_to_order_menu,
            cuisines: restaurant.restaurant.cuisines,
            average_cost_for_two: restaurant.restaurant.average_cost_for_two,
            price_range: restaurant.restaurant.price_range,
            currency: restaurant.restaurant.currency,
            offers: restaurant.restaurant.offers map ((offer , indexOfOffer) -> offer),
            thumb: restaurant.restaurant.thumb,
            user_rating: restaurant.restaurant.user_rating,
            photos_url: restaurant.restaurant.photos_url,
            menu_url: restaurant.restaurant.menu_url,
            featured_image: restaurant.restaurant.featured_image,
            has_online_delivery: restaurant.restaurant.has_online_delivery,
            is_delivering_now: restaurant.restaurant.is_delivering_now,
            deeplink: restaurant.restaurant.deeplink,
            has_table_booking: restaurant.restaurant.has_table_booking,
            events_url: restaurant.restaurant.events_url
        }
    })
}]]></dw:set-payload>
        </dw:transform-message>
        <mongo:json-to-dbobject doc:name="Mongo DB"/>
        <mongo:insert-object config-ref="Mongo_DB" doc:name="Mongo DB" collection="restaurant"/>
    </flow>
</mule>

MongoDB 连接器使用已弃用的 MONGODB-CR 身份验证机制,MLab 期望使用 SCRAM-SHA-1 机制。

SCRAM-SHA-1 机制在企业版 Mulesoft ESB 中可用。

4.2.0及以上版本支持连接URI配置。这是您配置它的方式:

将连接器添加到 pom.xml:

<dependency>
  <groupId>org.mule.connectors</groupId>
  <artifactId>mule-mongo-connector</artifactId>
  <version>4.2.0</version>
</dependency>

在您的流程中配置连接:

<mongo:config-connection-string name="MongoDB_Config" 
    connectionString="mongodb://jdoe:myPass@localhost:27017?authMechanism=SCRAM-SHA-1"/>