2014-12-01 1 views
0

MongoDB 인바운드 채널 어댑터를 구성했습니다. 그러나 인바운드 채널 어댑터가 예상대로 작동하지 않습니다. 나는 아웃 바운드 채널 어댑터를 시도하고 DB에 일부 내용을 작성하는 데 성공했습니다. 연결이 성공했지만 데이터 검색이 성공적이지 않은 것 같습니다. 나는 로그도 볼 수 없다. 아무도 내가 누락 된 부분을 지적 할 수 있습니까? 당신의 <int-mongodb:inbound-channel-adapter>auto-startup="false"로 표시되어 모든Spring 통합 - 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

첫째. 따라서, start()mongoInboundAdapter까지 DB에서 데이터를 폴링하지 않습니다.

반대편에서 query="{'_id' : '10'}"은 좋지 않다는 것을 이해해야합니다. 왜냐하면 당신은 DB에서 단지 하나의 문서 만 가지고 있고 그것은 id == 10이있을 때만 탐색하기 때문입니다.

orders 컬렉션에 그러한 문서가 있는지 정말로 확신합니까?

+0

'auto-startup = "false"'도 제거해 보았습니다. 그것은 작동하지 않았다. 나는'id == 10'을 가진 문서가 존재한다고 확신한다. 'db.orders.find ({ "_ id": "10"})'는 DB에 대해 실행 중일 때 단일 문서를 반환합니다. – nebula

+0

'auto-startup = "true"'는 효과가 없습니다. – nebula

+0

'주문 '이 실제로'테스트'데이터베이스에 있습니까? –