0

如this question的答案中所述,我想使用编年史队列使用高级API存储消息。但我也想要我的消息的某种密钥,如此处所述

1.) 首先,这是使用高级 API 进行读/写的正确/有效方式吗?- 下面的代码示例

2.) 如何区分不同类别的消息?例如“获取特定键的所有消息,下面代码示例中的键是 ric”。也许在同一个队列中使用不同的主题?但我该怎么做呢?

这是我要写入队列的测试代码:

public void saveHighLevel(MyInterface obj)
{
    try (ChronicleQueue queue = ChronicleQueue.singleBuilder(_location).build()) {
        ExcerptAppender appender = queue.acquireAppender();
        MyInterface trade = appender.methodWriter(MyInterface.class);
        // Write
        trade.populate(obj);
    }
}

这是一个要阅读的内容:

public void readHighLevel()
{
    try(ChronicleQueue queue = ChronicleQueue.singleBuilder(_location).build()) {
        ExcerptTailer tailer = queue.createTailer();
        MyInterface container = new MyData();
        MethodReader reader = tailer.methodReader(container);
        while (reader.readOne()) {
            System.out.println(container);
        }
    }
}

我的界面:

public interface MyInterface
{
    public double getPrice();
    public int getSize();
    public String getRic();
    public void populate(MyInterface obj);
}

实现填充:

 public void populate(MyInterface obj)
 {
    this.price = obj.getPrice();
    this.ric = obj.getRic();
    this.size = obj.getSize();
 }
4

1 回答 1

0

我在这篇文章的问题中找到了我问题的第 (2) 部分的答案。

基本上通过这样做: ChronicleQueue queue = ChronicleQueue.singleBuilder("Topic/SubTopic").build();

其中 Topic 可以用我正在寻找的密钥替换。

于 2019-08-16T19:19:10.467 回答