クロニクル キューにさまざまな種類のメッセージを書き込み、その種類に応じてコンシューマーでメッセージを処理したいと考えています。
どうやってやるの?
クロニクル キューにさまざまな種類のメッセージを書き込み、その種類に応じてコンシューマーでメッセージを処理したいと考えています。
どうやってやるの?
これを達成するために、私はワイヤーを使用します
try (DocumentContext dc = appender.writingDocument())
{
final Wire wire = dc.wire();
final ValueOut v = wire.getValueOut();
valueOut.typePrefix(m.getClass());
valueOut.marshallable(m);
}
読み返してみると:
try (DocumentContext dc = tailer.readingDocument())
{
final Wire wire = dc.wire();
final ValueIn valueIn = wire.getValueIn();
final Class clazz = valueIn.typePrefix();
// msgPool is a prealloacted hashmap containing the messages I read
final ReadMarshallable readObject = msgPool.get(clazz);
valueIn.readMarshallable(readObject)
// readObject can now be used
}
汎用オブジェクトを読み書きすることもできます。これは、独自のスキームを使用するよりも少し遅くなりますが、書いた型を常に読み取る簡単な方法です。