6
votes

La route de chameau ne parvient pas à générer Uuid aléatoire

Je veux générer une UUID aléatoire dans une route de chameau. (Version de chameau 2.15.3)

Je m'attends à ce que l'UUID soit différente pour chaque cycle de la route, même si l'itinéraire fonctionne deux fois sans redémarrer le contexte de chameau. J'utilise java.util.uuid (java 1.8.0) pour générer une UUID aléatoire. P>

mais l'itinéraire génère la même uuid pour chaque course de l'itinéraire, mais génère une nouvelle UUID si le contexte de chameau est redémarré. p>

la route de chameau: p> xxx pré>

Un test JUNIT qui montre l'échec: p>

[2016-03-02 11:38:56,816] [INFO ] UuidLoggerTest: ********************************************************************************
[2016-03-02 11:38:56,817] [INFO ] UuidLoggerTest: Testing: testUuidLogger(UuidLoggerTest)
[2016-03-02 11:38:56,817] [INFO ] UuidLoggerTest: ********************************************************************************
[2016-03-02 11:38:57,185] [INFO ] org.apache.camel.impl.DefaultCamelContext: Apache Camel 2.15.3 (CamelContext: camel-1) is starting
[2016-03-02 11:38:57,188] [INFO ] org.apache.camel.management.DefaultManagementStrategy: JMX is disabled
[2016-03-02 11:38:57,285] [INFO ] org.apache.camel.impl.converter.DefaultTypeConverter: Loaded 197 type converters
[2016-03-02 11:38:57,383] [INFO ] org.apache.camel.impl.DefaultCamelContext: AllowUseOriginalMessage is enabled. If access to the original message is not needed, then its recommended to turn this option off as it may improve performance.
[2016-03-02 11:38:57,383] [INFO ] org.apache.camel.impl.DefaultCamelContext: StreamCaching is not in use. If using streams then its recommended to enable stream caching. See more details at http://camel.apache.org/stream-caching.html
[2016-03-02 11:38:57,387] [INFO ] org.apache.camel.impl.DefaultCamelContext: Route: uuidLogger started and consuming from: Endpoint[direct://uuidLogger]
[2016-03-02 11:38:57,388] [INFO ] org.apache.camel.impl.DefaultCamelContext: Total 1 routes, of which 1 is started.
[2016-03-02 11:38:57,390] [INFO ] org.apache.camel.impl.DefaultCamelContext: Apache Camel 2.15.3 (CamelContext: camel-1) started in 0.205 seconds
[2016-03-02 11:38:57,405] [INFO ] UuidLogger: UuidLogger triggered with 1, headers: {breadcrumbId=ID-pc-4538-51425-1456915136858-0-1}
[2016-03-02 11:38:57,408] [INFO ] UuidLogger: Generated UUID: 783f0ae6-b9a5-45ab-babc-f02494dafdcb
[2016-03-02 11:38:57,409] [INFO ] UuidLogger: UuidLogger done
[2016-03-02 11:38:57,410] [INFO ] UuidLogger: UuidLogger triggered with 2, headers: {breadcrumbId=ID-pc-4538-51425-1456915136858-0-3}
[2016-03-02 11:38:57,410] [INFO ] UuidLogger: Generated UUID: 783f0ae6-b9a5-45ab-babc-f02494dafdcb
[2016-03-02 11:38:57,410] [INFO ] UuidLogger: UuidLogger done
[2016-03-02 11:38:57,411] [INFO ] org.apache.camel.component.mock.MockEndpoint: Asserting: Endpoint[mock://uuidLoggerMock] is satisfied
[2016-03-02 11:38:58,911] [INFO ] org.apache.camel.component.mock.MockEndpoint: Re-asserting: Endpoint[mock://uuidLoggerMock] is satisfied after 1500 millis
[2016-03-02 11:38:58,911] [INFO ] UuidLoggerTest: ********************************************************************************
[2016-03-02 11:38:58,911] [INFO ] UuidLoggerTest: Testing done: testUuidLogger(UuidLoggerTest)
[2016-03-02 11:38:58,912] [INFO ] UuidLoggerTest: Took: 1.520 seconds (1520 millis)
[2016-03-02 11:38:58,912] [INFO ] UuidLoggerTest: ********************************************************************************
[2016-03-02 11:38:58,913] [INFO ] org.apache.camel.impl.DefaultCamelContext: Apache Camel 2.15.3 (CamelContext: camel-1) is shutting down
[2016-03-02 11:38:58,914] [INFO ] org.apache.camel.impl.DefaultShutdownStrategy: Starting to graceful shutdown 1 routes (timeout 10 seconds)
[2016-03-02 11:38:58,923] [INFO ] org.apache.camel.impl.DefaultShutdownStrategy: Route: uuidLogger shutdown complete, was consuming from: Endpoint[direct://uuidLogger]
[2016-03-02 11:38:58,924] [INFO ] org.apache.camel.impl.DefaultShutdownStrategy: Graceful shutdown of 1 routes completed in 0 seconds
[2016-03-02 11:38:58,927] [INFO ] org.apache.camel.impl.DefaultCamelContext: Apache Camel 2.15.3 (CamelContext: camel-1) uptime 1.743 seconds
[2016-03-02 11:38:58,927] [INFO ] org.apache.camel.impl.DefaultCamelContext: Apache Camel 2.15.3 (CamelContext: camel-1) is shutdown in 0.013 seconds

java.lang.AssertionError: UUIDs were equal. Actual: 783f0ae6-b9a5-45ab-babc-f02494dafdcb

Process finished with exit code -1


0 commentaires

3 Réponses :


4
votes

La méthode de configuration de la routeBuilder qui est remplacée est uniquement exécutée une seule fois. La solution consiste à appeler un haricot à la place.

Code de haricot: xxx

code dans la route: xxx


0 commentaires

2
votes

Je pense qu'une solution plus simple consiste à générer l'UUID dans un processus comme: xxx


0 commentaires

0
votes

Si vous utilisez Log4J et Apache Camel ensemble, c'est une bonne solution aussi. http://www.boxjar.com / Logging-A-unique-ID-ID-for-Demande-utilisation-log4j /

Utilisez ci-dessous classe MDC. P>

import org.apache.log4j.MDC;


0 commentaires