Mulesoft插入Mongo DB数据库

时间:2018-04-10 18:39:22

标签: mongodb mule-studio mlab

我使用Mongo DB连接器将数据插入位于mLab的Mongo Instance。 我确信我正在使用正确的凭据,因为当我通过Java代码使用它们时这些凭据正在工作。 但是在这里使用Mongo DB连接器会不断地向我发出错误,如下所示。

  

org.mule.api.ConnectionException:无法与给定的连接   凭证org.mule.api.ConnectionException:无法连接   给定的凭证在   org.mule.module.mongo.MongoCloudConnector.getDatabase(MongoCloudConnector.java:1304)   在   org.mule.module.mongo.MongoCloudConnector.connect(MongoCloudConnector.java:1173)   在   org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionFactory.makeObject(MongoCloudConnectorConnectionFactory.java:56)   在   org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)   在   org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionManager.acquireConnection(MongoCloudConnectorConnectionManager.java:361)   在   org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionManager.test(MongoCloudConnectorConnectionManager.java:444)   在   org.mule.tooling.metadata.api.utils.ConnectionTester.internalTestConnection(ConnectionTester.java:88)   在   org.mule.tooling.metadata.api.utils.ConnectionTester.testConnectionFor(ConnectionTester.java:113)   在

我在这里缺少什么东西吗?

以下是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>

1 个答案:

答案 0 :(得分:1)

MongoDB连接器使用不推荐使用的MONGODB-CR身份验证机制,MLab期待SCRAM-SHA-1机制。

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

4.2.1版及更高版本提供了连接URI配置。这是你配置它的方式:

将连接器添加到pom.xml:

def lps(s):
    print(s)
    n = len(s)
    if n <= 1:
        return n

    if s[0] == s[n-1]:
        return 2 + lps(s[1:-1])
    return max(lps(s[:-1]), lps(s[1:]))

在您的流程中配置连接:

<dependency>
  <groupId>org.mule.connectors</groupId>
  <artifactId>mule-mongo-connector</artifactId>
  <version>4.2.0</version>
</dependency>
相关问题