rmq_client "github.com/apache/rocketmq-clients/golang/v5"
"github.com/apache/rocketmq-clients/golang/v5/credentials"
Endpoint = "rocketmq-xxxx:8080"
awaitDuration = time.Second * 5
maxMessageNum int32 = 16
invisibleDuration = time.Second * 20
os.Setenv("mq.consoleAppender.enabled", "true")
rmq_client.ResetLogger()
simpleConsumer, err := rmq_client.NewSimpleConsumer(&rmq_client.Config{
ConsumerGroup: ConsumerGroup,
Credentials: &credentials.SessionCredentials{
AccessSecret: SecretKey,
rmq_client.WithAwaitDuration(awaitDuration),
rmq_client.WithSubscriptionExpressions(map[string]*rmq_client.FilterExpression{
Topic: rmq_client.SUB_ALL,
err = simpleConsumer.Start()
if r := recover(); r != nil {
_ = simpleConsumer.GracefulStop()
ch := make(chan struct{})
for i := 0; i < receiveConcurrency; i++ {
mvs, err := simpleConsumer.Receive(context.TODO(), maxMessageNum, invisibleDuration)
for _, mv := range mvs {
if err := simpleConsumer.Ack(context.TODO(), mv); err != nil {
exit := make(chan os.Signal, 1)
signal.Notify(exit, syscall.SIGINT, syscall.SIGTERM)