RocketMq简介及重要概念

目录

RocketMq简介

RocketMq重要概念

单机RocketMq搭建

RocketMq总体结构

客户端寻址方式


RocketMq简介

rocketmq是一个消息中间件,基于Kafka的设计思想,但不是kafka的拷贝,它具有高吞吐量,高可用性,适用于大规模分布式系统的特点

RocketMq重要概念

1.producer

消息生产者

2.Consumer

消息消费者

3.PushConsumer

broker推送消息到consumer

4.PullConsumer

consumer主动从broker定时pull消息

5.ProducerGroup

一类producer的集合名称,这类producer通常发送一类消息,且发送逻辑一致

6.ConsumerGroup

一类consumer的集合名称,这类consumer通常消费一类消息,且消费逻辑一致

7.broker

消息中转站

8.nameserve

无状态的数据节点,记录broker的路由信息,以及topic,队列等

9.广播消息

一个消息被多个consumer消费,即使这些consumer属于同一个组,也会被组内的每个consumer都消费一次

10.集群消息

一个consumergroup中的consumer实例平均分摊消费消息,即不需要自己做消息消费的负载均衡,只需要扩展机器即可

11.Topic

表示一个类别

12.tag

Topic下的一个子类消息,更进一步细分消息类型

单机RocketMq搭建

1.上传rocketmq jar包

2.tar zxvf 解压rocketmq

3.修改虚拟机参数

/bin/runserver.sh /bin/runbroker.sh 中的虚拟机参数,因为默认4g,可以改小点

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"

4.创建log日志

在conf下更改日志打印路径

5.启动nameserver和broker

启动nameserver

nohup sh bin/mqnamesrv &

启动broker

nohup sh bin/mqbroker -n localhost:9876 &

查看连接此nameserve的broker

sh mqadmin clusterList -n localhost:9876

结果

可以看到此nameserve只有一个broker注册

测试消息的发送和接受

生产者代码:

public class FirstSyncProducer {
    public static  void main(String[] args) throws Exception{
        //Instantiate with a producer group name.
        Defau ltMQProducer producer = new
                DefaultMQProducer("please_rename_unique_group_name");
        // Specify name server addresses.
        producer.setNamesrvAddr("192.168.122.10:9876");
        producer.setVipChannelEnabled(false);
        //Launch the instance.
        producer.start();
        for (int i = 0; i < 10; i++) {
            //Create a message instance, specifying topic, tag and message body.
            Message msg = new Message("TopicTest" /* Topic */,
                    "TagA" /* Tag */,
                    ("Hello RocketMQ " +
                            i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //Call send message to deliver message to one of brokers.
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
        }
        //Shut down once the producer instance is not longer in use.
        producer.shutdown();
    }
}

发送结果:

​
SendResult [sendStatus=SEND
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值