Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
52bd6abd
M
milvus
项目概览
milvus
/
milvus
11 个月 前同步成功
通知
260
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
52bd6abd
编写于
1月 13, 2021
作者:
X
Xiangyu Wang
提交者:
yefu.chen
1月 13, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Change RocksMQ interface
Signed-off-by:
N
Xiangyu Wang
<
xiangyu.wang@zilliz.com
>
上级
3d885742
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
162 addition
and
2 deletion
+162
-2
docs/developer_guides/chap04_message_stream.md
docs/developer_guides/chap04_message_stream.md
+2
-2
internal/msgstream/rmq/rmq_msgstream.go
internal/msgstream/rmq/rmq_msgstream.go
+30
-0
internal/util/rocksmq/rocksmq.go
internal/util/rocksmq/rocksmq.go
+130
-0
未找到文件。
docs/developer_guides/chap04_message_stream.md
浏览文件 @
52bd6abd
...
...
@@ -195,14 +195,14 @@ type Channel struct {
endOffset MessageID
}
type Co
m
sumerGroupContext struct {
type Co
n
sumerGroupContext struct {
currentOffset MessageID
}
// Every collection has its RocksMQ
type RocksMQ struct {
channels map[string]Channel
cgCtxs map[string]Co
m
sumerGroupContext
cgCtxs map[string]Co
n
sumerGroupContext
mu sync.Mutex
}
...
...
internal/msgstream/rmq/rmq_msgstream.go
0 → 100644
浏览文件 @
52bd6abd
package
rmqmsgstream
import
"github.com/zilliztech/milvus-distributed/internal/msgstream"
type
RmqMsgStream
struct
{
}
func
NewRmqMsgStream
()
*
RmqMsgStream
{
return
nil
}
func
(
ms
*
RmqMsgStream
)
Start
()
{
}
func
(
ms
*
RmqMsgStream
)
Close
()
{
}
func
(
ms
*
RmqMsgStream
)
Produce
(
pack
*
msgstream
.
MsgPack
)
error
{
return
nil
}
func
(
ms
*
RmqMsgStream
)
Consume
()
*
msgstream
.
MsgPack
{
return
nil
}
func
(
ms
*
RmqMsgStream
)
Chan
()
<-
chan
*
msgstream
.
MsgPack
{
return
nil
}
internal/util/rocksmq/rocksmq.go
0 → 100644
浏览文件 @
52bd6abd
package
rocksmq
import
(
"sync"
"github.com/zilliztech/milvus-distributed/internal/errors"
"github.com/zilliztech/milvus-distributed/internal/kv"
memkv
"github.com/zilliztech/milvus-distributed/internal/kv/mem"
"github.com/zilliztech/milvus-distributed/internal/util/typeutil"
)
type
UniqueID
=
typeutil
.
UniqueID
type
ProducerMessage
struct
{
payload
[]
byte
}
type
ConsumerMessage
struct
{
msgID
UniqueID
payload
[]
byte
}
type
Channel
struct
{
beginOffset
UniqueID
endOffset
UniqueID
}
type
ConsumerGroupContext
struct
{
currentOffset
UniqueID
}
type
RocksMQ
struct
{
kv
kv
.
Base
channels
map
[
string
]
*
Channel
cgCtxs
map
[
string
]
ConsumerGroupContext
mu
sync
.
Mutex
}
func
NewRocksMQ
()
*
RocksMQ
{
mkv
:=
memkv
.
NewMemoryKV
()
rmq
:=
&
RocksMQ
{
kv
:
mkv
,
}
return
rmq
}
func
(
rmq
*
RocksMQ
)
checkKeyExist
(
key
string
)
bool
{
_
,
err
:=
rmq
.
kv
.
Load
(
key
)
return
err
==
nil
}
func
(
rmq
*
RocksMQ
)
CreateChannel
(
channelName
string
)
error
{
beginKey
:=
channelName
+
"/begin_id"
endKey
:=
channelName
+
"/end_id"
// Check if channel exist
if
rmq
.
checkKeyExist
(
beginKey
)
||
rmq
.
checkKeyExist
(
endKey
)
{
return
errors
.
New
(
"Channel "
+
channelName
+
" already exists."
)
}
err
:=
rmq
.
kv
.
Save
(
beginKey
,
"0"
)
if
err
!=
nil
{
return
err
}
err
=
rmq
.
kv
.
Save
(
endKey
,
"0"
)
if
err
!=
nil
{
return
err
}
channel
:=
&
Channel
{
beginOffset
:
0
,
endOffset
:
0
,
}
rmq
.
channels
[
channelName
]
=
channel
return
nil
}
func
(
rmq
*
RocksMQ
)
DestroyChannel
(
channelName
string
)
error
{
beginKey
:=
channelName
+
"/begin_id"
endKey
:=
channelName
+
"/end_id"
err
:=
rmq
.
kv
.
Remove
(
beginKey
)
if
err
!=
nil
{
return
err
}
err
=
rmq
.
kv
.
Remove
(
endKey
)
if
err
!=
nil
{
return
err
}
return
nil
}
func
(
rmq
*
RocksMQ
)
CreateConsumerGroup
(
groupName
string
,
channelName
string
)
error
{
key
:=
groupName
+
"/"
+
channelName
+
"/current_id"
if
rmq
.
checkKeyExist
(
key
)
{
return
errors
.
New
(
"ConsumerGroup "
+
groupName
+
" already exists."
)
}
err
:=
rmq
.
kv
.
Save
(
key
,
"0"
)
if
err
!=
nil
{
return
err
}
return
nil
}
func
(
rmq
*
RocksMQ
)
DestroyConsumerGroup
(
groupName
string
,
channelName
string
)
error
{
key
:=
groupName
+
"/"
+
channelName
+
"/current_id"
err
:=
rmq
.
kv
.
Remove
(
key
)
if
err
!=
nil
{
return
err
}
return
nil
}
func
(
rmq
*
RocksMQ
)
Produce
(
channelName
string
,
messages
[]
ProducerMessage
)
error
{
return
nil
}
func
(
rmq
*
RocksMQ
)
Consume
(
groupName
string
,
channelName
string
,
n
int
)
([]
ConsumerMessage
,
error
)
{
return
nil
,
nil
}
func
(
rmq
*
RocksMQ
)
Seek
(
groupName
string
,
channelName
string
,
msgID
UniqueID
)
error
{
return
nil
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录