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
浙公网安备 33010602011771号