切换导航条
此项目
正在载入...
登录
mmm-go
/
partnermg
·
提交
转到一个项目
GitLab
转到群组
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
唐旭辉
4 years ago
提交
d0c92946a5eb780314ccbbd5ee6f43ccf2cc99c5
1 个父辈
762fc2a4
master
...
dev
feature/multi-miniprogram
master20210315
master20210622
test
v0.8.0-dev
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.5.0
0.5.0-1
0.4.0
.
隐藏空白字符变更
内嵌
并排对比
正在显示
1 个修改的文件
包含
70 行增加
和
68 行删除
pkg/port/consumer/consumer.go
pkg/port/consumer/consumer.go
查看文件 @
d0c9294
...
...
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"time"
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/port/consumer/configs"
...
...
@@ -90,93 +91,94 @@ func NewRuner() *Runer {
return
r
}
// func (r *Runer) InitConsumer() error {
// config := sarama.NewConfig()
// //config.Consumer.Group.Rebalance.Strategy = sarama.BalanceStrategyRoundRobin
// config.Consumer.Offsets.Initial = sarama.OffsetOldest
// config.Version = sarama.V0_10_2_1
// if err := config.Validate(); err != nil {
// msg := fmt.Sprintf("Kafka producer config invalidate. config: %v. err: %v", configs.Cfg, err)
// logs.Error(msg)
// panic(msg)
// }
// consumerGroup, err := sarama.NewConsumerGroup(r.msgConsumer.kafkaHosts, r.msgConsumer.groupId, config)
// if err != nil {
// return err
// }
// r.consumerGroup = consumerGroup
// return nil
// }
func
(
r
*
Runer
)
InitConsumer
()
error
{
clusterCfg
:=
cluster
.
NewConfig
()
clusterCfg
.
Consumer
.
Return
.
Errors
=
true
clusterCfg
.
Consumer
.
Offsets
.
Initial
=
sarama
.
OffsetOldest
clusterCfg
.
Group
.
Return
.
Notifications
=
true
clusterCfg
.
Version
=
sarama
.
V0_10_2_1
khosts
:=
[]
string
{
"192.168.0.252:9092"
,
"192.168.0.251:9092"
,
"192.168.0.250:9092"
}
groupid
:=
"partnermg_dev"
topic
:=
[]
string
{
"topic_test"
}
// consumer, err := cluster.NewConsumer(r.msgConsumer.kafkaHosts, r.msgConsumer.groupId, r.msgConsumer.topics, clusterCfg)
consumer
,
err
:=
cluster
.
NewConsumer
(
khosts
,
groupid
,
topic
,
clusterCfg
)
if
err
!=
nil
{
msg
:=
fmt
.
Sprintf
(
"Create kafka consumer error: %v. config: %v"
,
err
,
clusterCfg
)
config
:=
sarama
.
NewConfig
()
//config.Consumer.Group.Rebalance.Strategy = sarama.BalanceStrategyRoundRobin
config
.
Consumer
.
Offsets
.
Initial
=
sarama
.
OffsetOldest
config
.
Version
=
sarama
.
V0_10_2_1
if
err
:=
config
.
Validate
();
err
!=
nil
{
msg
:=
fmt
.
Sprintf
(
"Kafka producer config invalidate. config: %v. err: %v"
,
configs
.
Cfg
,
err
)
logs
.
Error
(
msg
)
panic
(
msg
)
}
r
.
Consumer
=
consumer
consumerGroup
,
err
:=
sarama
.
NewConsumerGroup
(
r
.
msgConsumer
.
kafkaHosts
,
r
.
msgConsumer
.
groupId
,
config
)
if
err
!=
nil
{
return
err
}
r
.
consumerGroup
=
consumerGroup
return
nil
}
// func (r *Runer) Start(ctx context.Context) {
// defer func() {
// if e := recover(); e != nil {
// logs.Error(e)
// }
// }()
// for {
// select {
// case <-ctx.Done():
// logs.Warning("ctx cancel;consumerGroup.Close()")
// r.consumerGroup.Close()
// return
// default:
// if err := r.consumerGroup.Consume(ctx, r.msgConsumer.topics, r.msgConsumer); err != nil {
// logs.Error("consumerGroup err:%s \n", err)
// //等待重试
// timer := time.NewTimer(5 * time.Second)
// <-timer.C
// }
// r.msgConsumer.ready = make(chan struct{})
// }
// func (r *Runer) InitConsumer() error {
// clusterCfg := cluster.NewConfig()
// clusterCfg.Consumer.Return.Errors = true
// clusterCfg.Consumer.Offsets.Initial = sarama.OffsetOldest
// clusterCfg.Group.Return.Notifications = true
// clusterCfg.Version = sarama.V0_10_2_1
// khosts := []string{"192.168.0.252:9092", "192.168.0.251:9092", "192.168.0.250:9092"}
// groupid := "partnermg_dev"
// topic := []string{"topic_test"}
// // consumer, err := cluster.NewConsumer(r.msgConsumer.kafkaHosts, r.msgConsumer.groupId, r.msgConsumer.topics, clusterCfg)
// consumer, err := cluster.NewConsumer(khosts, groupid, topic, clusterCfg)
// if err != nil {
// msg := fmt.Sprintf("Create kafka consumer error: %v. config: %v", err, clusterCfg)
// logs.Error(msg)
// panic(msg)
// }
// r.Consumer = consumer
// return nil
// }
func
(
r
*
Runer
)
Start
(
ctx
context
.
Context
)
{
defer
func
()
{
if
e
:=
recover
();
e
!=
nil
{
logs
.
Error
(
e
)
}
}()
for
{
select
{
case
msg
,
more
:=
<-
r
.
Consumer
.
Messages
()
:
if
more
{
logs
.
Info
(
"Partition:%d, Offset:%d, Key:%s, Value:%s Timestamp:%s
\n
"
,
msg
.
Partition
,
msg
.
Offset
,
string
(
msg
.
Key
),
string
(
msg
.
Value
),
msg
.
Timestamp
)
r
.
Consumer
.
MarkOffset
(
msg
,
""
)
// mark message as processed
}
case
err
,
more
:=
<-
r
.
Consumer
.
Errors
()
:
if
more
{
logs
.
Info
(
"Kafka consumer error: %v"
,
err
.
Error
())
}
case
ntf
,
more
:=
<-
r
.
Consumer
.
Notifications
()
:
if
more
{
logs
.
Info
(
"Kafka consumer rebalance: %v"
,
ntf
)
}
case
<-
ctx
.
Done
()
:
logs
.
Info
(
"Stop consumer server..."
)
r
.
Consumer
.
Close
()
logs
.
Warning
(
"ctx cancel;consumerGroup.Close()"
)
r
.
consumerGroup
.
Close
()
return
default
:
if
err
:=
r
.
consumerGroup
.
Consume
(
ctx
,
r
.
msgConsumer
.
topics
,
r
.
msgConsumer
);
err
!=
nil
{
logs
.
Error
(
"consumerGroup err:%s
\n
"
,
err
)
//等待重试
timer
:=
time
.
NewTimer
(
5
*
time
.
Second
)
<-
timer
.
C
}
r
.
msgConsumer
.
ready
=
make
(
chan
struct
{})
}
}
}
// func (r *Runer) Start(ctx context.Context) {
// for {
// select {
// case msg, more := <-r.Consumer.Messages():
// if more {
// logs.Info("Partition:%d, Offset:%d, Key:%s, Value:%s Timestamp:%s\n", msg.Partition, msg.Offset, string(msg.Key), string(msg.Value), msg.Timestamp)
// r.Consumer.MarkOffset(msg, "") // mark message as processed
// }
// case err, more := <-r.Consumer.Errors():
// if more {
// logs.Info("Kafka consumer error: %v", err.Error())
// }
// case ntf, more := <-r.Consumer.Notifications():
// if more {
// logs.Info("Kafka consumer rebalance: %v", ntf)
// }
// case <-ctx.Done():
// logs.Info("Stop consumer server...")
// r.Consumer.Close()
// return
// }
// }
// }
func
(
r
*
Runer
)
IsReady
()
<-
chan
struct
{}
{
return
r
.
msgConsumer
.
ready
}
...
...
请
注册
或
登录
后发表评论