搭建RocketMQ服务

序、RocketMQ简介

最近一直在做消息通知方面的项目,其中用的是阿里公司的RocketMq(简称RMQ)作为消息服务,RMQ是阿里开发的一个很不错的消息开源组件,支持亿级消息堆积能力,它也为淘宝天猫双十一提供了稳定的消息传递平台,现在在阿里云也推出了ONS服务,也是基于RMQ组件,RMQ在应用范围还是很广的,今天先简单介绍一下如何搭建服务。

RMQ的结构分为四个部分:生产者、消费者、nameserver、brokerserver

nameserver:nameserver接收broker的请求注册broker路由信息。收client的请求根据某个topic获取所有到broker的路由信息。

brokerserver:消息的接收和推送,

生产者:发送消息,将消息推送给brokerserver。

消费者:接收消息,从brokerserver上获取消息。

一、Windows平台

安装JDK

参考[Windows下安装JDK],注意,RMQ需要1.6以上64位的版本。

安装RMQ

访问 RMQ官方Github 下载页,下载服务器端和客户端压缩包。

将下载好的alibaba-rocketmq-3.2.6.tar.gz解压到一个目录。如 D:\soft\alibaba-rocketmq\

启动RMQ

启动CMD,进入D:\soft\alibaba-rocketmq\bin目录,然后执行

mqnamesrv.exe -n 172.16.192.186:9876↙

其中,172.16.192.186为我本机的IP。

如果出现The Name Server boot success.则说明nameserver启动成功。

然后再启动一个CMD,在刚才的目录中执行

mqbroker.exe -n 172.16.192.186:9876↙

如果出现下面文字,则说明broker启动成功。

The broker[jiale-pc, 172.16.192.186:10911] boot success. and name server is 172.16.192.186:9876

二、Linux平台

安装JDK

参考[Linux下安装JDK]

RMQ

linux下安装jdk和RMQ相对简单。

安装RMQ

Java

wget https://github.com/alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3.2.6.tar.gz
tar alibaba-rocketmq-3.2.6.tar.gz
cd rocketmq
sh install.sh

启动RMQ

进入bin目录

运行 nohup mqnamesrv -n 172.16.192.186:9876 &↙ 启动nameserver服务。

运行 nohup mqbroker -n 172.16.192.186:9876↙ 启动broker服务

其中,172.16.192.186为我本机的IP。

三、测试连通性

完成了上面几部,基本上已经完成了RMQ的搭建,下面咱们用客户端进行测试一下。

创建生产者和消费者,然后生产者生产消息,消费者消费消息。具体代码如下。

生产者

新建一个Java类,如下代码

Java

public class Consumer {

    public static void main(String[] args) throws InterruptedException, MQClientException {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(
                "rmq-group");

        consumer.setNamesrvAddr("172.16.192.186:9876");
        consumer.setInstanceName("rmq-instance");
        consumer.subscribe("TopicA-test", "TagA");

        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(
                    List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                for (MessageExt msg : msgs) {
                    System.out.println(new String(msg.getBody()));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        consumer.start();
        System.out.println("Consumer Started.");
    }
}

消费者

创建一个java类,如下:

Java

public class Producer {
    public static void main(String[] args) throws MQClientException, InterruptedException {
        DefaultMQProducer producer = new DefaultMQProducer("rmq-group");
        producer.setNamesrvAddr("172.16.192.186:9876");
        producer.setInstanceName("rmq-instance");
        producer.start();
        try {
            for (int i = 0; i < 3; i++) {
                Message msg = new Message("TopicA-test",// topic
                    "TagA",// tag
                        (new Date() + "Hello RocketMQ ,QuickStart" + i)
                                .getBytes()// body
                );
                SendResult sendResult = producer.send(msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        producer.shutdown();
    }
}

运行Consumer和Producer,就可以看到生产者推送了消息,很快生产者就接收到了消息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值