golang/example/producer/fifo/main.go (55 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package main import ( "context" "fmt" "log" "os" "strconv" "time" rmq_client "github.com/apache/rocketmq-clients/golang/v5" "github.com/apache/rocketmq-clients/golang/v5/credentials" ) const ( Topic = "xxxxxx" Endpoint = "xxxxxx" AccessKey = "xxxxxx" SecretKey = "xxxxxx" ) func main() { // log to console os.Setenv("mq.consoleAppender.enabled", "true") rmq_client.ResetLogger() // In most case, you don't need to create many producers, singleton pattern is more recommended. producer, err := rmq_client.NewProducer(&rmq_client.Config{ Endpoint: Endpoint, Credentials: &credentials.SessionCredentials{ AccessKey: AccessKey, AccessSecret: SecretKey, }, }, rmq_client.WithTopics(Topic), ) if err != nil { log.Fatal(err) } // start producer err = producer.Start() if err != nil { log.Fatal(err) } // graceful stop producer defer producer.GracefulStop() for i := 0; i < 10; i++ { // new a message msg := &rmq_client.Message{ Topic: Topic, Body: []byte("this is a message : " + strconv.Itoa(i)), } // set keys and tag msg.SetKeys("a", "b") msg.SetTag("ab") msg.SetMessageGroup("fifo") // send message in sync resp, err := producer.Send(context.TODO(), msg) if err != nil { log.Fatal(err) } for i := 0; i < len(resp); i++ { fmt.Printf("%#v\n", resp[i]) } // wait a moment time.Sleep(time.Second * 1) } }