2014-12-01 3 views
0

Я настроил адаптер входящего канала MongoDB. Однако адаптер входящего канала работает не так, как ожидалось. Я попробовал адаптер исходящего канала и смог написать некоторый контент в БД. Кажется, что соединение выполнено успешно, но поиск данных не увенчался успехом. Я не вижу, чтобы что-то было журналом. Может ли кто-нибудь указать, что мне не хватает?Spring Integration - адаптер входящего канала MongoDB не работает

<?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" 
     xmlns:int-jms="http://www.springframework.org/schema/integration/jms" 
     xmlns:int-mongodb="http://www.springframework.org/schema/integration/mongodb" 
     xmlns:int-http="http://www.springframework.org/schema/integration/http" 
     xsi:schemaLocation="http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd 
      http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms-2.0.xsd 
      http://www.springframework.org/schema/integration/mongodb http://www.springframework.org/schema/integration/mongodb/spring-integration-mongodb.xsd 
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
      http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd"> 

     <bean id="mongoDBFactory" 
      class="org.springframework.data.mongodb.core.SimpleMongoDbFactory"> 
      <constructor-arg name="mongo"> 
       <bean class="com.mongodb.Mongo"> 
        <constructor-arg name="host" value="localhost" /> 
        <constructor-arg name="port" value="27017" /> 
       </bean> 
      </constructor-arg> 
      <constructor-arg name="databaseName" value="test" /> 
     </bean> 

     <int-mongodb:inbound-channel-adapter 
      id="mongoInboundAdapter" channel="mongoChannel" expect-single-result="true" 
      query="{'_id' : '10'}" entity-class="com.test.si.prototype.model.Order" 
      collection-name="orders" auto-startup="false" 
      mongodb-factory="mongoDBFactory"> 
      <int:poller fixed-rate="1000" /> 
     </int-mongodb:inbound-channel-adapter> 

     <int:channel id="mongoChannel" /> 
     <int:logging-channel-adapter id="logger" 
      auto-startup="true" log-full-message="true" level="INFO" channel="mongoChannel" /> 

     <int:service-activator input-channel="mongoChannel" 
      ref="messageListenerImpl" method="processMessage" /> 


     <bean id="messageListenerImpl" class="com.test.si.prototype.service.MessageListenerImpl"></bean> 
    </beans> 

ответ

0

Прежде всего ваш <int-mongodb:inbound-channel-adapter> отмечен auto-startup="false". Таким образом, он не собирается опроса данных из БД до тех пор, пока вы не окажете start()mongoInboundAdapter вручную.

С другой стороны, вы должны понимать, что query="{'_id' : '10'}" не очень хорошо. Потому что вы выберете из БД только один документ и только если у него есть id == 10.

Вы действительно уверены, что у вас есть такой документ в коллекции orders?

+0

Я попытался удалить 'auto-startup =" false "' также. Это не сработало. Я уверен, что документ с 'id == 10' существует. 'db.orders.find ({" _ id ":" 10 "})' возвращает единый документ во время работы с БД. – nebula

+0

'auto-startup =" true "' не имеет никакого эффекта. – nebula

+0

Действительно ли ваш 'заказ' находится в базе данных' test'? –

Смежные вопросы