MongoDB不适用于使用Camel 2.18.1的Karaf 4.0.8

时间:2017-01-24 12:46:54

标签: mongodb apache-camel karaf blueprint-osgi

我们创建了一个简单的测试包,但是一旦我们尝试在我们的一个Camel路由中使用MongoDB,该路由就不再启动了。

蓝图很简单:

if (!isNetworkAvailable(this)) {

   } else {}

MongoDB作为POM中的依赖项添加。登录DEBUG模式的摘录给出了以下几行:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
    xsi:schemaLocation="
         http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
         http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
         http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd">

    <bean id="mongo" class="com.mongodb.Mongo">
        <argument value="localhost"/>
    </bean>

    <camelContext id="blueprint-bean-context"
        xmlns="http://camel.apache.org/schema/blueprint">

        <route id="testTimer">
            <from uri="timer:testTimer?period=5000" />

            <setBody>
                <spel>{"type": "product"}</spel>
            </setBody>
            <to uri="mongodb:mongo?database=testdb&amp;collection=mycollection&amp;operation=findAll" />
            <log message="Result was queried" />

        </route>
    </camelContext>

</blueprint>

为什么Camel上下文会立即启动和关闭?不执行计时器,并且永远不会打印日志消息。只要我们删除用于调用MongoDB的2017-01-24 13:41:27,672 | DEBUG | raf-4.0.8/deploy | ReferenceRecipe | 12 - org.apache.aries.blueprint.core - 1.7.1 | Binding reference .camelBlueprint.languageResolver.spel to [org.apache.camel.spi.LanguageResolver] 2017-01-24 13:41:27,672 | DEBUG | raf-4.0.8/deploy | BlueprintLanguageResolver | 55 - org.apache.camel.camel-blueprint - 2.18.1 | Found language resolver: spel in registry: org.apache.camel.impl.osgi.Activator$BundleLanguageResolver@6841375f 2017-01-24 13:41:27,673 | DEBUG | raf-4.0.8/deploy | DefaultChannel | 58 - org.apache.camel.camel-core - 2.18.1 | Initialize channel for target: 'SetBody[spel{SpelExpression[{"type": "product"}]}]' 2017-01-24 13:41:27,673 | DEBUG | raf-4.0.8/deploy | BlueprintContainerImpl | 12 - org.apache.aries.blueprint.core - 1.7.1 | Instantiating component blueprintBundle 2017-01-24 13:41:27,676 | DEBUG | raf-4.0.8/deploy | DefaultManagementAgent | 58 - org.apache.camel.camel-core - 2.18.1 | Registered MBean with ObjectName: org.apache.camel:context=de.test.bundle-x1-blueprint-bean-context,type=tracer,name=BacklogTracer 2017-01-24 13:41:27,676 | DEBUG | raf-4.0.8/deploy | BlueprintContainerImpl | 12 - org.apache.aries.blueprint.core - 1.7.1 | Instantiating component blueprintBundle 2017-01-24 13:41:27,680 | DEBUG | raf-4.0.8/deploy | DefaultManagementAgent | 58 - org.apache.camel.camel-core - 2.18.1 | Registered MBean with ObjectName: org.apache.camel:context=de.test.bundle-x1-blueprint-bean-context,type=tracer,name=BacklogDebugger 2017-01-24 13:41:27,683 | DEBUG | raf-4.0.8/deploy | DefaultManagementAgent | 58 - org.apache.camel.camel-core - 2.18.1 | Registered MBean with ObjectName: org.apache.camel:context=de.test.bundle-x1-blueprint-bean-context,type=errorhandlers,name="DefaultErrorHandlerBuilder(ref:CamelDefaultErrorHandlerBuilder)" 2017-01-24 13:41:27,686 | DEBUG | raf-4.0.8/deploy | DefaultComponent | 58 - org.apache.camel.camel-core - 2.18.1 | Creating endpoint uri=[mongodb://mongo?collection=processing_requests&database=genex&operation=findAll], path=[mongo] 2017-01-24 13:41:27,686 | DEBUG | raf-4.0.8/deploy | BlueprintContainerImpl | 12 - org.apache.aries.blueprint.core - 1.7.1 | Instantiating component mongo 2017-01-24 13:41:27,687 | INFO | raf-4.0.8/deploy | BlueprintCamelContext | 58 - org.apache.camel.camel-core - 2.18.1 | Apache Camel 2.18.1 (CamelContext: blueprint-bean-context) is shutting down 2017-01-24 13:41:27,687 | DEBUG | raf-4.0.8/deploy | efaultAsyncProcessorAwaitManager | 58 - org.apache.camel.camel-core - 2.18.1 | Shutting down with no inflight threads. 2017-01-24 13:41:27,688 | DEBUG | raf-4.0.8/deploy | TimerListenerManager | 58 - org.apache.camel.camel-core - 2.18.1 | Removed TimerListener: org.apache.camel.management.mbean.ManagedCamelContext@1350b665 2017-01-24 13:41:27,688 | DEBUG | raf-4.0.8/deploy | DefaultManagementAgent | 58 - org.apache.camel.camel-core - 2.18.1 | Unregistered MBean with ObjectName: org.apache.camel:context=de.test.bundle-x1-blueprint-bean-context,type=context,name="blueprint-bean-context" 2017-01-24 13:41:27,688 | DEBUG | raf-4.0.8/deploy | DefaultInflightRepository | 58 - org.apache.camel.camel-core - 2.18.1 | Shutting down with no inflight exchanges. ,它就会起作用。

1 个答案:

答案 0 :(得分:1)

更改bean声明

<bean id="mongo" class="com.mongodb.Mongo">

<bean id="mongo" class="com.mongodb.MongoClient">

您可以在Camel的Mongo组件的official documentation中阅读更多相关信息。