2017-09-30 2 views
2

je dois interroger les données de MongoDB en utilisant l'intégration de printemps, je peux pouvoir interroger les données de MongoDB, mais les mêmes données sont renvoyées plus d'une fois,Spring Integration - MongoDB canal entrant en lisant les mêmes données

<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:channel id="controlChannel"/> 

    <int:control-bus input-channel="controlChannel"/> 

    <int-mongodb:inbound-channel-adapter 
     id="mongoInboundAdapter" channel="splittingChannel" auto-startup= "false" 
     query="{_id:1}" 
     collection-name="order" 
     mongodb-factory="mongoDBFactory"> 
     <int:poller fixed-rate="10000" max-messages-per-poll="1000"/> 
    </int-mongodb:inbound-channel-adapter> 

    <int:splitter input-channel="splittingChannel" output-channel="logger"/> 

    <int:logging-channel-adapter id="logger" level="WARN"/> 

J'utilise le canal de contrôle pour démarrer et arrêter, s'il vous plaît aidez-moi comment puis-je arrêter l'adaptateur de canal entrant une fois la requête terminée.

Merci à l'avance

Répondre

0

Je vous suggère d'utiliser transaction-synchronization-factory pour modifier ou supprimer les documents au lieu d'arrêter l'adaptateur. Voir Reference Manual pour plus d'informations.

+0

Je n'ai pas besoin de supprimer ou de modifier un document dans la base de données, je veux juste lire tous les documents correspondant à la requête @Artem Bilan – Vigneshwaran

+0

Eh bien, d'accord. Pensez à utiliser ensuite ': https://docs.spring.io/spring-integration/docs/5.0.0.M6/reference/html/mongodb.html#mongodb-outbound- passerelle. Ou juste 'MongoTemplate' directement. Cependant, vous pouvez utiliser la même approche de synchronisation des transactions pour arrêter l'interrogation Channel Adapter –