2017-09-13 2 views
2

Pour le concept de reprise, j'ai besoin de copier des données d'une file d'attente de chroniques à une autre.Copie de données d'une Chronique à une autre

Serait-il prudent de copier directement l'intégralité de l'objet Bytes d'un fil d'une file à un autre?

quelque chose comme

documentContext() fil() octets()... Lire (byte_buffer)

puis envelopper cette byte_buffer dans byte_store et de l'écriture comme

documentContext() fil. () .bytes(). write (byte_Store).

La raison pour laquelle je le fais est d'éviter toute conversion dans les objets personnalisés?

Répondre

1

Vous pouvez, mais une approche plus simple consiste à copier directement de l'un à l'autre.

ChronicleQueue inQ = SingleChronicleQueueBuilder.binary("in").build(); 
ExcerptTailer tailer = inQ.createTailer(); 
ChronicleQueue outQ = SingleChronicleQueueBuilder.binary("out").build(); 
ExcerptAppender appender = outQ.acquireAppender(); 

while(true) { 
    try (DocumentContext inDC = tailer.readingDocument()) { 
     if (!inDC.isPresent()) { 
      // not message available 
      break; // or pause or do something else. 
     } 
     try (DocumentContext outDC = appender.writingDocument()) { 
      outDC.wire().write(inDC.wire().bytes()); 
     } 
    } 
} 

}

+0

Ahh ok, merci. Juste une question à confirmer, les fichiers chroniques semblent être agnostiques à la machine ou au serveur qui les a créés, ie je peux copier un fichier de chronologie généré en plus env à mon env pour le débogage (je crois que c'est aussi ce dont parle le document) . Est-ce que ma compréhension est correcte? – user3887600