github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/rocket/rocketmq.go (about)

     1  package rocket
     2  
     3  import (
     4  	"github.com/artisanhe/tools/conf"
     5  	rocketmq "github.com/apache/rocketmq-client-go/core"
     6  )
     7  
     8  type Producer struct {
     9  	GroupID        string
    10  	NameServer     string
    11  	AccessKey      string
    12  	SecretKey      string
    13  	SendMsgTimeout int
    14  	CompressLevel  int
    15  	MaxMessageSize int
    16  	ProducerModel  int
    17  	producer       rocketmq.Producer
    18  }
    19  
    20  func (Producer) DockerDefaults() conf.DockerDefaults {
    21  	return conf.DockerDefaults{}
    22  }
    23  
    24  func (Producer) MarshalDefaults(v interface{}) {
    25  	if producer, ok := v.(*Producer); ok {
    26  		if producer.NameServer == "" {
    27  			producer.NameServer = "rocketmq"
    28  		}
    29  		if producer.GroupID == "" {
    30  			producer.GroupID = "g7pay"
    31  		}
    32  		if producer.ProducerModel == 0 {
    33  			producer.ProducerModel = 1
    34  		}
    35  
    36  	}
    37  }
    38  
    39  func (p *Producer) Init() {
    40  
    41  	pc := &rocketmq.ProducerConfig{
    42  		ClientConfig: rocketmq.ClientConfig{
    43  			GroupID:    p.GroupID,
    44  			NameServer: p.NameServer,
    45  		},
    46  		ProducerModel: rocketmq.ProducerModel(p.ProducerModel),
    47  	}
    48  	if p.AccessKey != "" && p.SecretKey != "" {
    49  		pc.ClientConfig.Credentials = &rocketmq.SessionCredentials{
    50  			AccessKey: p.AccessKey,
    51  			SecretKey: p.SecretKey,
    52  		}
    53  	}
    54  
    55  	if p.SendMsgTimeout != 0 {
    56  		pc.SendMsgTimeout = p.SendMsgTimeout
    57  	}
    58  
    59  	if p.CompressLevel != 0 {
    60  		pc.CompressLevel = p.CompressLevel
    61  	}
    62  
    63  	if p.MaxMessageSize != 0 {
    64  		pc.MaxMessageSize = p.MaxMessageSize
    65  	}
    66  
    67  	producer, err := rocketmq.NewProducer(pc)
    68  	if err != nil {
    69  		panic(err)
    70  
    71  	}
    72  	p.producer = producer
    73  
    74  }
    75  
    76  func (p *Producer) Get() rocketmq.Producer {
    77  	return p.producer
    78  }
    79  
    80  type PushConsumer struct {
    81  	GroupID       string
    82  	NameServer    string
    83  	AccessKey     string
    84  	SecretKey     string
    85  	MessageModel  int
    86  	ConsumerModel int
    87  	pushConsumer  rocketmq.PushConsumer
    88  }
    89  
    90  func (PushConsumer) DockerDefaults() conf.DockerDefaults {
    91  	return conf.DockerDefaults{}
    92  }
    93  
    94  func (PushConsumer) MarshalDefaults(v interface{}) {
    95  	if pushConsumer, ok := v.(*PushConsumer); ok {
    96  		if pushConsumer.NameServer == "" {
    97  			pushConsumer.NameServer = "rocketmq"
    98  		}
    99  		if pushConsumer.GroupID == "" {
   100  			pushConsumer.GroupID = "g7pay"
   101  		}
   102  		if pushConsumer.ConsumerModel == 0 {
   103  			pushConsumer.ConsumerModel = 1
   104  		}
   105  		if pushConsumer.MessageModel == 0 {
   106  			pushConsumer.MessageModel = 1
   107  		}
   108  	}
   109  }
   110  
   111  func (p *PushConsumer) Init() {
   112  
   113  	config := &rocketmq.PushConsumerConfig{
   114  		ClientConfig: rocketmq.ClientConfig{
   115  			GroupID:    p.GroupID,
   116  			NameServer: p.NameServer,
   117  		},
   118  		Model:         rocketmq.MessageModel(p.MessageModel),
   119  		ConsumerModel: rocketmq.ConsumerModel(p.ConsumerModel),
   120  	}
   121  	if p.AccessKey != "" && p.SecretKey != "" {
   122  		config.ClientConfig.Credentials = &rocketmq.SessionCredentials{
   123  			AccessKey: p.AccessKey,
   124  			SecretKey: p.SecretKey,
   125  		}
   126  	}
   127  	consumer, err := rocketmq.NewPushConsumer(config)
   128  	if err != nil {
   129  		panic(err)
   130  
   131  	}
   132  	p.pushConsumer = consumer
   133  }
   134  
   135  func (p *PushConsumer) Get() rocketmq.PushConsumer {
   136  	return p.pushConsumer
   137  }
   138  
   139  type PullConsumer struct {
   140  	GroupID    string
   141  	NameServer string
   142  	AccessKey  string
   143  	SecretKey  string
   144  
   145  	pullConsumer rocketmq.PullConsumer
   146  }
   147  
   148  func (PullConsumer) DockerDefaults() conf.DockerDefaults {
   149  	return conf.DockerDefaults{}
   150  }
   151  
   152  func (PullConsumer) MarshalDefaults(v interface{}) {
   153  	if pullConsumer, ok := v.(*PullConsumer); ok {
   154  		if pullConsumer.NameServer == "" {
   155  			pullConsumer.NameServer = "rocketmq"
   156  		}
   157  		if pullConsumer.GroupID == "" {
   158  			pullConsumer.GroupID = "g7pay"
   159  		}
   160  	}
   161  }
   162  
   163  func (p *PullConsumer) Init() {
   164  	config := &rocketmq.PullConsumerConfig{
   165  		ClientConfig: rocketmq.ClientConfig{
   166  			GroupID:    p.GroupID,
   167  			NameServer: p.NameServer,
   168  		},
   169  	}
   170  	if p.AccessKey != "" && p.SecretKey != "" {
   171  		config.ClientConfig.Credentials = &rocketmq.SessionCredentials{
   172  			AccessKey: p.AccessKey,
   173  			SecretKey: p.SecretKey,
   174  		}
   175  	}
   176  
   177  	pullConsumer, err := rocketmq.NewPullConsumer(config)
   178  	if err != nil {
   179  		panic(err)
   180  
   181  	}
   182  	p.pullConsumer = pullConsumer
   183  }
   184  
   185  func (p *PullConsumer) Get() rocketmq.PullConsumer {
   186  	return p.pullConsumer
   187  }