Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_57962205
redisson
提交
c296910b
R
redisson
项目概览
weixin_57962205
/
redisson
与 Fork 源项目一致
从无法访问的项目Fork
通知
10
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redisson
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c296910b
编写于
2月 19, 2020
作者:
N
Nikita Koksharov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed - RPriorityBlockingQueue.poll(int limited) method implemented
上级
c23f5c8d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
5 deletion
+25
-5
redisson/src/main/java/org/redisson/RedissonPriorityBlockingQueue.java
...main/java/org/redisson/RedissonPriorityBlockingQueue.java
+15
-2
redisson/src/main/java/org/redisson/RedissonPriorityQueue.java
...son/src/main/java/org/redisson/RedissonPriorityQueue.java
+10
-3
未找到文件。
redisson/src/main/java/org/redisson/RedissonPriorityBlockingQueue.java
浏览文件 @
c296910b
...
...
@@ -220,7 +220,20 @@ public class RedissonPriorityBlockingQueue<V> extends RedissonPriorityQueue<V> i
@Override
public
RFuture
<
List
<
V
>>
pollAsync
(
int
limit
)
{
throw
new
UnsupportedOperationException
();
return
pollAsync
(()
->
{
return
commandExecutor
.
evalWriteAsync
(
getName
(),
codec
,
RedisCommands
.
EVAL_LIST
,
"local result = {};"
+
"for i = 1, ARGV[1], 1 do "
+
"local value = redis.call('lpop', KEYS[1]);"
+
"if value ~= false then "
+
"table.insert(result, value);"
+
"else "
+
"return result;"
+
"end;"
+
"end; "
+
"return result;"
,
Collections
.
singletonList
(
getName
()),
limit
);
});
}
@Override
...
...
@@ -235,6 +248,6 @@ public class RedissonPriorityBlockingQueue<V> extends RedissonPriorityQueue<V> i
@Override
public
List
<
V
>
poll
(
int
limit
)
{
throw
new
UnsupportedOperationException
(
);
return
get
(
pollAsync
(
limit
)
);
}
}
\ No newline at end of file
redisson/src/main/java/org/redisson/RedissonPriorityQueue.java
浏览文件 @
c296910b
...
...
@@ -26,6 +26,7 @@ import java.util.Comparator;
import
java.util.Iterator
;
import
java.util.NoSuchElementException
;
import
java.util.concurrent.TimeUnit
;
import
java.util.function.Supplier
;
import
org.redisson.api.RBucket
;
import
org.redisson.api.RFuture
;
...
...
@@ -290,15 +291,21 @@ public class RedissonPriorityQueue<V> extends RedissonList<V> implements RPriori
}
protected
<
T
>
RFuture
<
V
>
pollAsync
(
RedisCommand
<
T
>
command
,
Object
...
params
)
{
return
pollAsync
(()
->
{
return
commandExecutor
.
writeAsync
(
getName
(),
codec
,
command
,
params
);
});
};
protected
final
<
T
,
R
>
RFuture
<
R
>
pollAsync
(
Supplier
<
RFuture
<
R
>>
callable
)
{
long
threadId
=
Thread
.
currentThread
().
getId
();
RPromise
<
V
>
result
=
new
RedissonPromise
<
V
>();
RPromise
<
R
>
result
=
new
RedissonPromise
<
R
>();
lock
.
lockAsync
(
threadId
).
onComplete
((
r
,
exc
)
->
{
if
(
exc
!=
null
)
{
result
.
tryFailure
(
exc
);
return
;
}
RFuture
<
V
>
f
=
commandExecutor
.
writeAsync
(
getName
(),
codec
,
command
,
params
);
RFuture
<
R
>
f
=
callable
.
get
(
);
f
.
onComplete
((
value
,
e
)
->
{
if
(
e
!=
null
)
{
result
.
tryFailure
(
e
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录