0

我想将不同类型的消息写入编年史队列,并根据消费者的类型处理消费者中的消息。

我怎样才能做到这一点?

4

3 回答 3

1

Chronicle-Queue 提供了可用于编写任何类型消息的低级构建块,因此您可以自行选择正确的数据结构。

例如,您可以在写入编年史的数据前加上带有一些元数据的小标题,然后将其用作数据处理的鉴别器。

于 2015-03-25T17:39:33.943 回答
1

为此,我使用 Wire

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
}
于 2017-01-12T10:38:59.857 回答
0

您还可以写入/读取通用对象。这将比使用您自己的方案稍慢,但它是一种始终读取您编写的类型的简单方法。

于 2015-08-16T15:43:10.333 回答