Hazelcast下实现一个有初始容量的LinkedBlockingQueue
Hazelcast下能直接利用instance.getQueue("myQueue");方法获取一个Distributed Queue,但是目前由于业务需要能获取到一个能初始化容量(capacity)的LinkedBlockingQueue用于cluster间。
希望大虾们给点指导。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
hz:queue name="task_one*" max-size="100" hz:queue name="task_two*" max-size="200"
请参考评论,OSC的评论禁止了一些特殊字符
先设定这样的模板, IQueue queue = hazelcastInstance.getQueue("task_two_xxxx"); 这个Queue的maxSize就是200 这应该是一个“不完全”的解决方案。但应该是比较简单有效的方式。 Hazelcast没有留更灵活的API接口,他内部是使用QueueConfig来做的,但是初始化较复杂。 建议不要Hack他代码
嗯 这样是可以创建一个初始容量的Queue,但是我这边在某些业务情况下需要更改这个容量,而不是在配置文件中设置定死;不知道可不可以动态的设置配置文件中的参数?
<hz:queue name="task_one*" max-size="100"/> <hz:queue name="task_two*" max-size="200"/> 先设定这样的模板, IQueue queue = hazelcastInstance.getQueue("task_two_1"); 这个Queue的maxSize就是200
Hazelcast支持按照模板来创建对象,如下: IQueue queue = hazelcastInstance.getQueue("task_two_1"); 这个Queue的maxSize就是200。 这应该是一个“不完全”的解决方案,不了解你的具体业务,什么场景下需要精确的指定Q的size呢?
配置文件中只能指定最大最小容量吧,我的Queue还需要根据一定的业务在运行中根据新的容量重新创建。
明天我用config api试试,然后回复哈~
用配置文件声明就可以了吧。