fix(client):throw exception when producer or consumer miss model (#269)
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 @@
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 @@
}
}
- 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