Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在编年史队列中使用方法读写器_Java_Design Patterns_Chronicle Queue - Fatal编程技术网

Java 在编年史队列中使用方法读写器

Java 在编年史队列中使用方法读写器,java,design-patterns,chronicle-queue,Java,Design Patterns,Chronicle Queue,嗨,伙计们,我在一个个人项目上遇到了一个难题,我使用编年史队列记录日志。我有两种类型的消息要从队列本身读取和写入。我的问题是,我使用的是使用方法读写器的策略,但是我需要有两个不同的方法名称来对历史记录队列执行操作。当我尝试使用一个方法读取器来读取,该读取器使用相同名称的方法传递接口的两个实现时,只会从编年史抽象中查找第一个实现。我想要一种只维护一个方法名的方法,以便从历史记录队列读取和写入不同的消息 下面我将更清楚地与大家分享这个问题: interface Message1Listener{

嗨,伙计们,我在一个个人项目上遇到了一个难题,我使用编年史队列记录日志。我有两种类型的消息要从队列本身读取和写入。我的问题是,我使用的是使用方法读写器的策略,但是我需要有两个不同的方法名称来对历史记录队列执行操作。当我尝试使用一个方法读取器来读取,该读取器使用相同名称的方法传递接口的两个实现时,只会从编年史抽象中查找第一个实现。我想要一种只维护一个方法名的方法,以便从历史记录队列读取和写入不同的消息

下面我将更清楚地与大家分享这个问题:

interface Message1Listener{
    void message(Message1 message);
}

interface Message2Listener{
    void message(Message2 message);
}

public class Messag1 extends SelfDescribingMarshallable{
    ByteBuffer text;
    
    public Message1(ByteBuffer text){
        this.text = text;
    }
}

public class Messag2 extends SelfDescribingMarshallable{
    ByteBuffer email;
    int uniqueKey;

    public Message1(ByteBuffer email, int uniqueKey){
        this.email = email;
        this.uniqueKey = uniqueKey;
    }
}

public Message1Processor implements Message1Listener{
    public void message(Message1 message){
        //do something with message
    }
}

public Message2Processor implements Message2Listener{
    public void message(Message2 message){
        //do something with message
    }
}

//write the messages
Message1Listener writer1 = queue.acquireAppender().methodWriter(Message1Listener.class);
Message2Listener writer2 = queue.acquireAppender().methodWriter(Message2Listener.class);

//read the messages
MethodReader reader = queue.createTailer().methodReader(new Message1Processor(), new Message2Processor());