消息队列RocketMQ入门实践(二)

前言

嗨,大家好,我是希留。

上一篇文章中我们介绍了RocketMQ的相关概念,以及安装部署。消息队列RocketMQ入门实践(一)
今天我们就来具体操作一下,在代码里面如何实现发送消息,消费消息。

项目源码:Gitee地址

1、快速入门

1.1 创建topic

/**
 * @author xiliu
 * @description
 * @date 2022/3/1
 */
public class TopicDemo {
   

    public static void main(String[] args) throws MQClientException{
   
        // 创建一个生产者组
        DefaultMQProducer producer = new DefaultMQProducer("xiliu_producer_group");
        // 生产者需用通过NameServer获取所有broker的路由信息,多个用分号隔开
        producer.setNamesrvAddr("42.194.222.32:9876");
        // 启动
        producer.start();

        // 创建topic  key:broker名称  newTopic:topic名称  queueNum:队列数(分区)
        producer.createTopic("broker_xiliu", "xiliu_topic", 8);

        System.out.println("创建topic成功");

        producer.shutdown();
    }
}

运行出错:
在这里插入图片描述
原因:开发机上访问不到broker的ip地址。
所以,需要指定broker的ip地址。

#修改broker配置文件
vim /conf/broker.conf
brokerIP1=42.194.222.32
namesrvAddr=42.194.222.32:9876

在这里插入图片描述

修改完成之后,先关闭启动了的broker,再重新启动。

#关闭命令
sh bin/mqshutdown broker

#重新启动broker,通过 -c 指定配置文件
nohup sh bin/mqbroker -c conf/broker.conf  &

在这里插入图片描述
运行代码,创建topic成功
在这里插入图片描述

1.2 发送消息(同步)

代码示例如下:

public class SyncProducerDemo {
   

    public static void main(String[] args) throws Exception {
   
        DefaultMQProducer producer = new DefaultMQProducer("xiliu_producer_group");
        producer.setNamesrvAddr("42.194.222.32:9876");
        producer.start();
        String msgStr = "用户A发送同步消息给用户B";
        /*Message代表一条信息,第一个参数是topic,这是主题
        第二个参数是tags,这是可选参数,用于消费端过滤消息
        第三个参数是keys,这也是可选参数,如果有多个,用空格隔开。RocketMQ可以根据这些key快速检索到消息,相当于
        消息的索引,可以设置为消息的唯一编号(主键)。
        第四个参数是body,消息主体*/
        Message message = new Message("broker-a","xiliu_tag",msgStr.getBytes(RemotingHelper.DEFAULT_CHARSET));
        //SendResult是发送结果的封装,包括消息状态,消息id,选择的队列等等,只要不抛异常,就代表发送成功
        SendResult sendResult = producer.send(message, 10000);
        System.out.println("消息状态:" + sendResult.getSendStatus());
        System.out.println("消息id:" + sendResult.getMsgId());
        System.out.println("消息queue:" + sendResult
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Java升级之路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值