installation de rocketmq mac

1. GitHub clone le projet rocketmq et le construit

Ajouter des variables d'environnement

JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
git clone https://github.com/apache/rocketmq.git
cd rocketmq
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/rocketmq-4.7.1/rocketmq-4.7.1

L'installation rencontre une erreur, reportez-vous à la solution :

aMac&Ubuntu install rocketMQ - Programmeur recherché

2. Démarrez le serveur de noms

nohup sh bin/mqnamesrv &
tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success. serializeType=JSON

rencontré une erreur

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Unrecognized VM option 'UseCMSCompactAtFullCollection'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

La version java est trop élevée, et les commandes associées ont été supprimées et ne sont pas compatibles.

La solution consiste à installer java8, il existe plusieurs versions de java dans l'ordinateur, faites pointer la version actuelle vers java8

//  查看mac中安装的java版本
ls /Library/Java/JavaVirtualMachines

// 本机版本如下
adoptopenjdk-8.jdk openjdk-13.0.1.jdk

// 查看当前指向的java版本
echo $JAVA_HOME

// 修改环境变量指向低版本java
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

Puis recommencer normalement

3. Démarrez le courtier

Ajouter des variables d'environnement

ROCKETMQ_HOME=/Users/chenpeng/software/rocketmq/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1
nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &
tail -f ~/logs/rocketmqlogs/broker.log 

4. Envoyer et recevoir des messages

Avant d'envoyer/recevoir des messages, nous devons indiquer au client où se trouve le serveur de noms.
RocketMQ fournit plusieurs façons d'y parvenir.
Pour simplifier, nous utilisons la variable d'environnementNAMESRV_ADDR

export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

5. Fermeture du service

sh bin/mqshutdown broker

The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

sh bin/mqshutdown namesrv

The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

6. Exemple de code Go

Utilisez le package officiel https://github.com/apache/rocketmq-client-go

go get github.com/apache/rocketmq-client-go/v2

Il y a des exemples de code dans les exemples de chemin du package, collez-les ici

Consommateur

package main

import (
	"context"
	"fmt"
	"os"
	"time"

	"github.com/apache/rocketmq-client-go/v2"
	"github.com/apache/rocketmq-client-go/v2/consumer"
	"github.com/apache/rocketmq-client-go/v2/primitive"
)

func main() {
	c, _ := rocketmq.NewPushConsumer(
		consumer.WithGroupName("testGroup"),
		consumer.WithNameServer([]string{"127.0.0.1:9876"}),
                // 多个consumer消费同一个group,同一个topic instance要设置唯一值,否则报错
                // consumer.WithInstance("instance name"),
	)
	err := c.Subscribe("test", consumer.MessageSelector{}, func(ctx context.Context,
		msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) {
		for i := range msgs {
			fmt.Printf("subscribe callback: %v \n", msgs[i])
		}

		return consumer.ConsumeSuccess, nil
	})
	if err != nil {
		fmt.Println(err.Error())
	}
	// Note: start after subscribe
	err = c.Start()
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(-1)
	}
	time.Sleep(time.Hour)
	err = c.Shutdown()
	if err != nil {
		fmt.Printf("shutdown Consumer error: %s", err.Error())
	}
}

Remarque : plusieurs consommateurs consomment le même groupe et une valeur unique doit être définie pour la même instance de sujet, sinon une erreur sera signalée

Producteur

package main

import (
	"context"
	"fmt"
	"os"
	"strconv"

	"github.com/apache/rocketmq-client-go/v2"
	"github.com/apache/rocketmq-client-go/v2/primitive"
	"github.com/apache/rocketmq-client-go/v2/producer"
)

// Package main implements a simple producer to send message.
func main() {
	p, _ := rocketmq.NewProducer(
		producer.WithNameServer([]string{"127.0.0.1:9876"}),
		producer.WithRetry(2),
	)
	err := p.Start()
	if err != nil {
		fmt.Printf("start producer error: %s", err.Error())
		os.Exit(1)
	}
	topic := "test"

	for i := 0; i < 10; i++ {
		msg := &primitive.Message{
			Topic: topic,
			Body:  []byte("Hello RocketMQ Go Client! " + strconv.Itoa(i)),
		}
		res, err := p.SendSync(context.Background(), msg)

		if err != nil {
			fmt.Printf("send message error: %s\n", err)
		} else {
			fmt.Printf("send message success: result=%s\n", res.String())
		}
	}
	err = p.Shutdown()
	if err != nil {
		fmt.Printf("shutdown producer error: %s", err.Error())
	}
}

7. Documents du site officiel

Démarrage rapide - Apache RocketMQ

https://github.com/apache/rocketmq/tree/master/docs/cn

Je suppose que tu aimes

Origine blog.csdn.net/chen_peng7/article/details/109513294
conseillé
Classement