redis
  • spring-xd
  • 2017-06-30 10 views 1 likes 
    1

    Im essayant de mettre en œuvre Redis évier avec spécifique au type de collection = MAPRedis printemps-xd évier avec le type de collection MAP

    stream create tTEST_GF_SINK --definition "trigger --initialDelay=0 --fixedDelay=1 --timeUnit=MINUTES --payload= 'new Date().toString()' --outputType=application/json | 
        transform --expression='new java.util.Date().toString()'| 
        redis --collectionType=MAP --key=1" --deploy 
    

    Pour tous les autres types de collections comme LIST, SET, flux Zset est capable d'écrire dans ces redis coule mais quand j'utilise MAP comme type de collection, il lance l'erreur suivante sur redis_mapkey.

    2017-06-30T16: 47: 59-0400 1.3.1.RELEASE erreur-tâche ordonnanceur-3 handler.LoggingHandler - org.springframework.messaging.MessageHandlingException: Impossible de stocker les données de message dans la collecte Redis; l'exception imbriquée est org.springframework.expression.spel.SpelEvaluationException: EL1008E: (pos 8): La propriété ou le champ 'redis_mapKey' est introuvable sur l'objet de type 'org.springframework.messaging.MessageHeaders' - peut-être pas public? à org.springframework.integration.redis.outbound.RedisStoreWritingMessageHandler.handleMessageInternal (RedisStoreWritingMessageHandler.java:278) à org.springframework.integration.handler.AbstractMessageHandler.handleMessage (AbstractMessageHandler.java:127) à org.springframework.integration .dispatcher.AbstractDispatcher.tryOptimizedDispatch (AbstractDispatcher.java:116) à org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch (UnicastingDispatcher.java:147) à org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch (UnicastingDispatcher.java : 120) à org.springframework.integration.channel.AbstractSubscribableChannel.doSend (AbstractSubscribableChannel.java:77) à org.springframework.integration.ch annel.AbstractMessageChannel.send (AbstractMessageChannel.java:442) à org.springframework.integration.channel.AbstractMessageChannel.send (AbstractMessageChannel.java:392) à org.springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java: 115) à org.springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:45) à org.springframework.messaging.core.AbstractMessageSendingTemplate.send (AbstractMessageSendingTemplate.java:105) à org.springframework.integration. handler.AbstractMessageProducingHandler.sendOutput (AbstractMessageProducingHandler.java:231) à org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput (AbstractMessageProducingHandler.java:154) at org.springfr amework.integration.handler.AbstractMessageProducingHandler.sendOutputs (AbstractMessageProducingHandler.java:102) à org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal (AbstractReplyProducingMessageHandler.java:105) à org.springframework.integration.handler.AbstractMessageHandler.handleMessage (AbstractMessageHandler.java:127) à org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch (AbstractDispatcher.java:116) à org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch (UnicastingDispatcher.java:147) à org. springframework.integration.dispatcher.UnicastingDispatcher.dispatch (UnicastingDispatcher.java:120) à org.springframework.integration.channel.AbstractSubscribableChannel.doSend (AbstractSubscriba bleChannel.java:77) à org.springframework.integration.channel.AbstractMessageChannel.send (AbstractMessageChannel.java:442) à org.springframework.integration.channel.AbstractMessageChannel.send (AbstractMessageChannel.java:392) à org. springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:115) à org.springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:45) à org.springframework.messaging.core.AbstractMessageSendingTemplate.send (AbstractMessageSendingTemplate.java: 105) à org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput (AbstractMessageProducingHandler.java:231) à org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput (AbstractMessageProducingHandler.java:154) à org.springframework. integration.handler.AbstractMessageProducingHandler.sendOutputs (AbstractMessageProducingHandler.java:102) à org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal (AbstractReplyProducingMessageHandler.java:105) à org.springframework.integration.handler.AbstractMessageHandler.handleMessage (AbstractMessageHandler. java: 127) à org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch (AbstractDispatcher.java:116) à org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch (UnicastingDispatcher.java:147) à org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch (UnicastingDispatcher.java:120) à org.springframework.integration.channel. AbstractSubscribableChannel.doSend (AbstractSubscribableChannel.java:77) à org.springframework.integration.channel.AbstractMessageChannel.send (AbstractMessageChannel.java:442) à org.springframework.integration.channel.AbstractMessageChannel.send (AbstractMessageChannel.java:392) à org.springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:115) à org.springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:45) at org.springfr amework.messaging.core.AbstractMessageSendingTemplate.send (AbstractMessageSendingTemplate.java:105) à org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput (AbstractMessageProducingHandler.java:231) à org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput (AbstractMessageProducingHandler.java:154) à org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs (AbstractMessageProducingHandler.java:102) à org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal (AbstractReplyProducingMessageHandler.java:105) à org. springframework.integration.handler.AbstractMessageHandler.handleMessage (AbstractMessageHandler.java:127) à org.springframework.integration.dispatcher.Abstra ctDispatcher.tryOptimizedDispatch (AbstractDispatcher.java:116) à org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch (UnicastingDispatcher.java:147) à org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch (UnicastingDispatcher.java:120) à org.springframework.integration.channel.AbstractSubscribableChannel.doSend (AbstractSubscribableChannel.java:77) à org.springframework.integration.channel.AbstractMessageChannel.send (AbstractMessageChannel.java:442) à org.springframework.integration.channel. AbstractMessageChannel.send (AbstractMessageChannel.java:392) à org.springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:115) à org.springframework.messaging.core.GenericMessagingTemplate .doSend (GenericMessagingTemplate.java:45) à org.springframework.messaging.core.AbstractMessageSendingTemplate.send (AbstractMessageSendingTemplate.java:105) à org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput (AbstractMessageProducingHandler.java:231) à org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput (AbstractMessageProducingHandler.java:154) à org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs (AbstractMessageProducingHandler.java:102) à org.springframework.integration.handler.AbstractReplyProducingMessageHandler .handleMessageInternal (AbstractReplyProducingMessageHandler.java:105) at org.springframework.integration.handler.AbstractMessageHandler.handleMessage (AbstractMessageHandler.java: 127) à org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch (AbstractDispatcher.java:116) à org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch (UnicastingDispatcher.java:147) à org.springframework. integration.dispatcher.UnicastingDispatcher.dispatch (UnicastingDispatcher.java:120) à org.springframework.integration.channel.AbstractSubscribableChannel.doSend (AbstractSubscribableChannel.java:77) à org.springframework.integration.channel.AbstractMessageChannel.send (canal de message Abstract. java: 442) à org.springframework.integration.channel.AbstractMessageChannel.send (AbstractMessageChannel.java:392) à org.springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:115) à org.springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:45) à org.springframework.messaging.core.AbstractMessageSendingTemplate.send (AbstractMessageSendingTemplate.java:105) à org.springframework.integration.handler. AbstractMessageProducingHandler.sendOutput (AbstractMessageProducingHandler.java:231) à org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput (AbstractMessageProducingHandler.java:154) à org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs (AbstractMessageProducingHandler.java:102) à org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal (AbstractReplyProducingMessageHandler.java:105) à org.spring framework.integration.handler.AbstractMessageHandler.handleMessage (AbstractMessageHandler.java:127) à org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch (AbstractDispatcher.java:116) à org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch (UnicastingDispatcher.java:147) à org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch (UnicastingDispatcher.java:120) à org.springframework.integration.channel.AbstractSubscribableChannel.doSend (AbstractSubscribableChannel.java:77) à org. springframework.integration.channel.AbstractMessageChannel.send (AbstractMessageChannel.java:442) à org.springframework.integration.channel.AbstractMessageChannel.send (AbstractMessageChannel.java:392) à org.springfr amework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:115) à org.springframework.messaging.core.GenericMessagingTemplate.doSend (GenericMessagingTemplate.java:45) à org.springframework.messaging.core.AbstractMessageSendingTemplate.send (AbstractMessageSendingTemplate.java:105) à org.springframework.integration.endpoint.SourcePollingChannelAdapter.handleMessage (SourcePollingChannelAdapter.java:161) à org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll (AbstractPollingEndpoint.java:251) à org. springframework.integration.endpoint.AbstractPollingEndpoint.access 000 $ (AbstractPollingEndpoint.java:57) à org.springframework.integration.endpoint.AbstractPollingEndpoint 1.call $ (AbstractPollingEndpoint.java:176) org .springframework.integration.endpoint.AbstractPollingEndpoint $ 1.call (AbstractPollingEndpoint.java:173) à org.springframework.integration.endpoint.AbstractPollingEndpoint $ Bollard $ 1.run (AbstractPollingEndpoint.java:330) à org.springframework.integration.util .ErrorHandlingTaskExecutor 1.run $ (ErrorHandlingTaskExecutor.java:55) à org.springframework.core.task.SyncTaskExecutor.execute (SyncTaskExecutor.java:50) à org.springframework.integration.util.ErrorHandlingTaskExecutor.execute (ErrorHandlingTaskExecutor.java: 51) à org.springframework.integration.endpoint.AbstractPollingEndpoint $ Poller.run (AbstractPollingEndpoint.java:324) à org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run (DelegatingErrorHandlingRunnable.java:54) org.springframework.scheduling.concurrent.ReschedulingRunnable.run (ReschedulingRunnable.java:81) à l'adresse java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) at java.util.concurrent.FutureTask.run (FutureTask. java: 266) à java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access 201 $ (ScheduledThreadPoolExecutor.java:180) à java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:293) à java.util .concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) à java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) à java.lang.Thread.run (Thread.java:745) Causé par: org.springframework.expression.spel.SpelEvaluationExcept ion: EL1008E: (pos 8): La propriété ou le champ 'redis_mapKey' est introuvable sur l'objet de type 'org.springframework.messaging.MessageHeaders' - peut-être pas public? à org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty (PropertyOrFieldReference.java:224) à org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal (PropertyOrFieldReference.java:94) à org.springframework. expression.spel.ast.PropertyOrFieldReference.access $ 000 (PropertyOrFieldReference.java:46) à org.springframework.expression.spel.ast.PropertyOrFieldReference $ AccessorLValue.getValue (PropertyOrFieldReference.java:374) à org.springframework.expression.spel .ast.CompoundExpression.getValueInternal (CompoundExpression.java:88) à org.springframework.expression.spel.ast.SpelNodeImpl.getValue (SpelNodeImpl.java:120) à org.springframework.expression.spel.standard.SpelExpression.getValue (SpelExpression.java:267) à org.springframework.integration.redis.outbound.RedisStoreWritingMessageHandler.determineMapKey (RedisStoreWritingMessageHandler.java:415) à org.springframework.integration.redis.outbound.RedisStoreWritingMessageHandler.writeToMap (RedisStoreWritingMessageHandler.java:379) à org.springframework. integration.redis.outbound.RedisStoreWritingMessageHandler.handleMessageInternal (RedisStoreWritingMessageHandler.java:271) ... 99 plus

    peut me aider jusqu'à

    Répondre

    0

    Avec une collection MAP, il y a deux clés impliqués; la clé sous laquelle la carte est stockée et la clé avec laquelle l'élément est stocké sur la carte.

    Le module XD n'expose pas mapKey en tant que propriété. Vous pouvez soit ajouter un en-tête en-tête en amont pour définir l'en-tête redis_mapKey, soit modifier la configuration du module pour ajouter le map-key-expression.

    Par exemple, l'édition xd/modules/sink/redis/config/redis.xml comme si ...

    <beans:beans profile="use-store-expression"> 
        <redis:store-outbound-channel-adapter 
         map-key-expression="payload.substring(17)" 
         key-expression="${keyExpression}" collection-type="${collectionType}" 
         channel="input" connection-factory="redisConnectionFactory" /> 
    </beans:beans> 
    

    avec ...

    xd:>stream create foo --definition "time | redis --collectionType=MAP --key='foo'" --deploy 
    

    résultats dans ...

    127.0.0.1:6379> hgetall "foo" 
    1) "52" 
    2) "2017-07-01 08:43:52" 
    3) "53" 
    4) "2017-07-01 08:43:53" 
    5) "54" 
    6) "2017-07-01 08:43:54" 
    7) "55" 
    8) "2017-07-01 08:43:55" 
    ... 
    
    0

    @Gary. J'ai essayé votre suggestion pour header-enricher d'ajouter redis_mapkey. Cela fonctionne bien.

    flux créer tTEST_GF_SINK --definition « déclencheur --initialDelay = 0 --fixedDelay = 1 --timeUnit = 'new Date(). ToString()' --outputType = application/JSON Minutes s = | header-enricher --headers = {\ "redis_mapKey \": \ "payload.substring (17) \"} | transformer --expression = 'new java.util.Date().toString() '| Redis --collectionType = MAP --key = 1" --deploy

    127.0.0.1:6379> hgetall 1

    1) "ng()"

    2) « Sat 1 juillet 23:29:16 EDT 2017 "

     Questions connexes

    • Aucun problème connexe^_^