七、curator recipes之阻塞队列SimpleDistributedQueue
2024-08-27 14:42:35
简介
Java在单机环境实现了BlockQueue阻塞队列,与之类似的curator实现了分布式场景下的阻塞队列,SimpleDistributedQueue
官方文档:http://curator.apache.org/curator-recipes/simple-distributed-queue.html
注意:zookeeper虽然可以实现队列,但是官方并不推荐使用zookeeper来做队列,主要原因在于zookeeper的空间大小设计的比较小,且对于大量数据的处理性能比较低,所以比较适合用户处理一些元数据以及应用协调,对于大量数据的建议使用其它分布式队列,比如redisson之类的,或者采用共享存储来实现。
代码示例
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.recipes.queue.SimpleDistributedQueue;
import org.apache.curator.retry.ExponentialBackoffRetry; public class SimpleQueueDemo {
private static CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", new ExponentialBackoffRetry(3000, 2));
private static String path = "/queue/path001";
public static void main(String[] args) throws InterruptedException {
client.start();
System.out.println("started");
SimpleDistributedQueue queue = new SimpleDistributedQueue(client, path);
new Thread(() -> {
try {
System.out.println("sleeping");
Thread.sleep(3000);
System.out.println("sleep end");
new SimpleDistributedQueue(client, path).offer("lay".getBytes("utf-8"));
System.out.println("offered");
} catch (Exception e) {
System.out.println("exception");
e.printStackTrace();
}
}).start();
System.out.println("polling");
String data = null;
try {
data = new String(queue.take());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("data=" + data);
client.close();
}
}
输出结果
started
polling
sleeping
sleep end
offered
data=lay
主线程会阻塞直到offer了数据
最新文章
- 【那些年关于java多态应用】
- 并查集(union-find)算法
- [Eigen] Issues when using Eigen
- 第10章 同步设备I/O和异步设备I/O(1)_常见设备及CreateFile函数
- c# 中使用memcached
- MVC4中的Display Mode简介
- lisp 题目
- 20145236 《Java程序设计》第八周学习总结
- GridView 鼠标经过时变色两种方法
- 【Django】Django命令(Manager.py)
- Django创建模板、URL模式、创建视图函数
- C++每次读取一行字符串输入(学习笔记) (转)
- day17.初识递归函数
- springcloud第二步:发布服务提供者
- python3+requests库框架设计02-封装日志类
- React 入门学习笔记整理(三)—— 组件
- 七牛图片存储api
- Linux 更改时区
- CF960G Bandit Blues 分治+NTT(第一类斯特林数)
- net 总数据中取随机几条数据