java nats request-many 支持的一些模式

java nats request-many 提供 了fetch,queue 以及 callbck 模式,fetch 以及queue 底层实际都是使用的callback

参考处理

  • fetch 模式
public List<RmMessage> fetch(String subject, Headers headers, byte[] payload) {
    List<RmMessage> results = new ArrayList<>();
    request(subject, headers, payload, rmm -> {
        if (!rmm.isNormalEndOfData()) {
            results.add(rmm);
        }
        return true;
    });
    return results;
}
  • queue
public LinkedBlockingQueue<RmMessage> queue(String subject, Headers headers, byte[] payload) {
    final LinkedBlockingQueue<RmMessage> q = new LinkedBlockingQueue<>();
    conn.getOptions().getExecutor().submit(() -> {
        request(subject, headers, payload, rmm -> {
            q.add(rmm);
            return true;
        });
    });
    return q;
}

说明

request-many 功能算是一个比较重要的功能,比如nats 以及的agent 协议中就使用了此方法(python sdk 自己实现了)

参考资料

https://github.com/synadia-io/orbit.java/tree/main/request-many

posted on 2026-06-10 08:00  荣锋亮  阅读(5)  评论(0)    收藏  举报

导航