RocketMQ学习2 结合Java实现简单的推送和消费

本文介绍了如何使用Java和RocketMQ5.0创建Spring项目,添加依赖,以及模拟生产者循环推送消息和消费者消费消息的基本操作。

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

RocketMQ学习2 结合Java实现基本的操作

创建项目

笔者使用的是idea开发工具。首先创建新的项目,然后选中Spring Initilizr,输入项目名称,选择Maven项目,设置自己的GroupName等,并选择自己的JDK版本。
在这里插入图片描述
引入SpringWeb和Lombok两个依赖即可,然后点击create按钮创建项目
在这里插入图片描述

添加依赖

在pom文件中,引入RocketMQ相关依赖,笔者使用的是RocketMQ5.x版本,所以引入的版本是5.0。

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

生产者

模拟推送消息

创建一个Producer类,模拟循环推送信息,具体内容如下:

public class Producer {

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

        //1.创建消息生产者producer,并指定生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("DEFAULT_PRODUCER_GROUP");
        //2.指定Nameserver地址,也可以通过环境变量配置
        producer.setNamesrvAddr("127.0.0.1:9876");
        //3.启动producer
        producer.start();

        for (int i = 0; i < 5; i++)
            try {
                {
                    //4.创建消息对象,指定主题Topic、Tag和消息体
                    Message msg = new Message(RocketMQConstant.DEMO_TOPIC,
                            "",
                            "",
                           String.format("%s %s", "Hello World : Demo Topic ", i).getBytes(RemotingHelper.DEFAULT_CHARSET));

                    //5.发送消息
                    //同步发送
                    SendResult sendResult = producer.send(msg);
                    System.out.printf("%s%n", sendResult);
                    //单向发送,这个方法没有返回值。
                    producer.sendOneway(msg);
                }

            } catch (Exception e) {
                e.printStackTrace();
            }

        //6.关闭生产者producer
        producer.shutdown();
    }

}

执行当前方法,会推送消息。

消费者

模拟消费

创建ConsumerConfig,具体内容如下:

@Configuration
@Slf4j
public class ConsumerConfig {

    @Bean
    public MQConsumer mqConsumer(){
        DefaultMQPushConsumer defaultMQPushConsumer = new DefaultMQPushConsumer("broker-a");
        try{
            defaultMQPushConsumer.setNamesrvAddr("127.0.0.1:9876");
            defaultMQPushConsumer.subscribe(RocketMQConstant.DEMO_TOPIC, "*");
            defaultMQPushConsumer.registerMessageListener(new MessageListenerConcurrently() {
                @Override
                public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                    for(MessageExt msg : list){
                        log.debug("Receive Message :{} --> {}", msg.getMsgId(), new String(msg.getBody()));
                    }
                    return null;
                }
            });
            defaultMQPushConsumer.start();
            log.info("mqConsumer init success");
        }catch(Exception e){
            log.error("mqConsumer init error",e);
        }

        return defaultMQPushConsumer;
    }
}

启动项目,会接收到刚才推送的消息。

这样,最基本的简单的推送消息和接收消息就实现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

michaeldongd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值