You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by di...@apache.org on 2019/10/29 05:56:14 UTC

[rocketmq-client-go] branch master updated: fix(client):throw exception when producer or consumer miss model (#269)

This is an automated email from the ASF dual-hosted git repository.

dinglei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-client-go.git


The following commit(s) were added to refs/heads/master by this push:
     new 52006e3  fix(client):throw exception when producer or consumer miss model (#269)
52006e3 is described below

commit 52006e3aa28b104e7112bb608bc39e52c6a1dbe3
Author: rongtong <79...@qq.com>
AuthorDate: Tue Oct 29 13:56:06 2019 +0800

    fix(client):throw exception when producer or consumer miss model (#269)
---
 core/producer.go      |  5 ++++-
 core/push_consumer.go | 43 ++++++++++++++++++-------------------------
 2 files changed, 22 insertions(+), 26 deletions(-)

diff --git a/core/producer.go b/core/producer.go
index 9c6901f..2e1279a 100644
--- a/core/producer.go
+++ b/core/producer.go
@@ -85,8 +85,11 @@ func newDefaultProducer(config *ProducerConfig) (*defaultProducer, error) {
 	var cproduer *C.struct_CProducer
 	if config.ProducerModel == OrderlyProducer {
 		cproduer = C.CreateOrderlyProducer(cs)
-	} else {
+	} else if config.ProducerModel == CommonProducer {
 		cproduer = C.CreateProducer(cs)
+	} else {
+		C.free(unsafe.Pointer(cs))
+		return nil, errors.New("ProducerModel is invalid or empty")
 	}
 	C.free(unsafe.Pointer(cs))
 
diff --git a/core/push_consumer.go b/core/push_consumer.go
index bd7b68a..0dc27c4 100644
--- a/core/push_consumer.go
+++ b/core/push_consumer.go
@@ -185,33 +185,26 @@ func newPushConsumer(config *PushConsumerConfig) (PushConsumer, error) {
 		}
 	}
 
-	if config.Model != 0 {
-		var mode C.CMessageModel
-		switch config.Model {
-		case BroadCasting:
-			mode = C.BROADCASTING
-		case Clustering:
-			mode = C.CLUSTERING
-		}
-		err = rmqError(C.SetPushConsumerMessageModel(cconsumer, mode))
-
-		if err != NIL {
-			return nil, err
-		}
-
+	if config.Model == BroadCasting {
+		err = rmqError(C.SetPushConsumerMessageModel(cconsumer, C.BROADCASTING))
+	} else if config.Model == Clustering {
+		err = rmqError(C.SetPushConsumerMessageModel(cconsumer, C.CLUSTERING))
+	} else {
+		return nil, errors.New("model is invalid or empty")
+	}
+	if err != NIL {
+		return nil, err
 	}
 
-	if config.ConsumerModel != 0 {
-		switch config.ConsumerModel {
-		case Orderly:
-			err = rmqError(C.RegisterMessageCallbackOrderly(cconsumer, (C.MessageCallBack)(unsafe.Pointer(C.callback_cgo))))
-		case CoCurrently:
-			err = rmqError(C.RegisterMessageCallback(cconsumer, (C.MessageCallBack)(unsafe.Pointer(C.callback_cgo))))
-		}
-		if err != NIL {
-			return nil, err
-		}
-
+	if config.ConsumerModel == Orderly {
+		err = rmqError(C.RegisterMessageCallbackOrderly(cconsumer, (C.MessageCallBack)(unsafe.Pointer(C.callback_cgo))))
+	} else if config.ConsumerModel == CoCurrently {
+		err = rmqError(C.RegisterMessageCallback(cconsumer, (C.MessageCallBack)(unsafe.Pointer(C.callback_cgo))))
+	} else {
+		return nil, errors.New("consumer model is invalid or empty")
+	}
+	if err != NIL {
+		return nil, err
 	}
 
 	consumer.cconsumer = cconsumer