rocketmq消息获取tag_RocketMQ安装与使用

本文档详细介绍了在Windows上安装和使用RocketMQ的步骤,包括下载安装包、配置环境变量、启动服务、配置插件、解决Maven打包问题以及导入依赖、创建生产者和消费者的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装

第一步:下载RocketMQ最新版本,选择"Binary"

Release Notes - Apache RocketMQ - Version 4.4.0​rocketmq.apache.org
be6ab894fb6fbf088981d94fb179cfa9.png

f632f78e83a0b5fa6192efcadcb3ea89.png

第二步:解压下载安装包,配置环境变量,将安装报改名字为rocketmq

908038ccf4b2ef113dfb97363800c297.png

7c8b4a390f78d362c40e31330cb30c0e.png

第三步:启动rocketmq服务(注意启动服务先别关闭窗口)

1.启动 mqnamesrv.cmd(或者cmd命令框执行进入至‘MQ文件夹bin’下,然后执行‘start mqnamesrv.cmd’,启动NAMESERVER。成功后会弹出提示框,此框勿关闭。)

2.启动mqbroker.cmd(cmd命令框执行进入至‘MQ文件夹bin’下,然后执行‘start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true’,启动BROKER。成功后会弹出提示框,此框勿关闭。)

9035267dad59435b3b210b7ea090efc4.png

第四步:下载rocketmq插件

github地址

apache/rocketmq-externals​github.com
b5b1e56cde06d5b62c1474885ed014c0.png

0094fec85a887d92f405927cd203ba2a.png

下载完成之后,进入‘rocketmq-externalsrocketmq-consolesrcmainresources’文件夹,打开‘application.properties’进行配置。

36c9e6fef31a07d24d223054fef4a9ac.png

第五步:maven打包(注意打包这块可能会报错,需要手动修改pom文件)

进入‘rocketmq-externalsrocketmq-console’文件夹,执行‘mvn clean package -Dmaven.test.skip=true’,编译生成。

76f4bc07724f1d96fa4f6747ecaf86c7.png

f6066c64c15e1e00fb455e6230417706.png

第六步:运行jar包,访问我们刚修改的ip+端口号,我的就是127.0.0.1:8081

rocketmq-console-ng-1.0.0.jar

458343193d11f67a3e8018df69daede0.png

注意事项:

在部署RocketMQ插件时,执行maven指令mvn spring-boot:run时遇到org.apache.rocketmq:rocketmq-tools:jar:4.4.0-SNAPSHOT等三个jar包无法下载的问题:那么我们只需要修改pom文件,声明的版本为<rocketmq.version>4.4.0</rocketmq.version>即可.

80b03484f6ab27f983e55217b38f060c.png

使用

第一步:导入依赖

    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>4.1.0-incubating</version>
    </dependency>

第二步:创建生产者

package xufei.rocketmq.producer;

import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;

/**
 * Filename:    Producer
 * Description:
 * Copyright:   Copyright (c) 2016-2017 All Rights Reserved.
 * Company:    
 *
 * @author: xufei
 * @version: 1.0
 * Create at:   2019年03月21日 10:42
 * <p>
 * Modification History:
 * Date          Author      Version     Description
 * ------------------------------------------------------------------
 * 2019年03月21日 xufei     1.0         1.0 Version
 */
public class Producer {


    public static void main(String[] args) throws  InterruptedException, MQClientException {

        //声明并初始化一个producer
        //需要一个producer group名字作为构造方法的参数,这里为producer1
        DefaultMQProducer producer = new DefaultMQProducer("producer1");

        //设置NameServer地址,此处应改为实际NameServer地址,多个地址之间用;分隔
        //NameServer的地址必须有,但是也可以通过环境变量的方式设置,不一定非得写死在代码里
        producer.setNamesrvAddr("127.0.0.1:9876;10.1.54.122:9876");

        //调用start()方法启动一个producer实例
        producer.start();

        //发送10条消息到Topic为TopicTest,tag为TagA,消息内容为“Hello RocketMQ”拼接上i的值
        for (int i = 0; i < 10; i++) {
            try {
                Message msg = new Message("TopicTest",// topic
                        "TagA",// tag
                        ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)// body
                );

                //调用producer的send()方法发送消息
                //这里调用的是同步的方式,所以会有返回结果
                SendResult sendResult = producer.send(msg);

                //打印返回结果,可以看到消息发送的状态以及一些相关信息
                System.out.println(sendResult);
            } catch (Exception e) {
                e.printStackTrace();
                Thread.sleep(1000);
            }
        }

        //发送完消息之后,调用shutdown()方法关闭producer
        producer.shutdown();
    }
}

第三步:创建消费者

package com.xufei.rocketmq;

import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.message.MessageExt;

import java.util.List;

/**
 * Filename:    Consumer
 * Description:
 * Copyright:   Copyright (c) 2016-2017 All Rights Reserved.
 * Company:     
 *
 * @author: xufei
 * @version: 1.0
 * Create at:   2019年03月21日 10:44
 * <p>
 * Modification History:
 * Date          Author      Version     Description
 * ------------------------------------------------------------------
 * 2019年03月21日 xufei     1.0         1.0 Version
 */
public class Consumer {
    public static void main(String[] args) throws InterruptedException, MQClientException, MQClientException {

        //声明并初始化一个consumer
        //需要一个consumer group名字作为构造方法的参数,这里为consumer1
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer1");

        //同样也要设置NameServer地址
        consumer.setNamesrvAddr("127.0.0.1:9876;10.1.54.122:9876");

        //这里设置的是一个consumer的消费策略
        //CONSUME_FROM_LAST_OFFSET 默认策略,从该队列最尾开始消费,即跳过历史消息
        //CONSUME_FROM_FIRST_OFFSET 从队列最开始开始消费,即历史消息(还储存在broker的)全部消费一遍
        //CONSUME_FROM_TIMESTAMP 从某个时间点开始消费,和setConsumeTimestamp()配合使用,默认是半个小时以前
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);

        //设置consumer所订阅的Topic和Tag,*代表全部的Tag
        consumer.subscribe("TopicTest", "*");

        //设置一个Listener,主要进行消息的逻辑处理
        consumer.registerMessageListener(new MessageListenerConcurrently() {

            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
                                                            ConsumeConcurrentlyContext context) {

                System.out.println(Thread.currentThread().getName() + " Receive New Messages: " + msgs);

                //返回消费状态
                //CONSUME_SUCCESS 消费成功
                //RECONSUME_LATER 消费失败,需要稍后重新消费
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });

        //调用start()方法启动consumer
        consumer.start();

        System.out.println("Consumer Started.");
    }
}

a1b9019d16845334bd1ea77d2835b99d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值