RocketMq快速入门之消息发送实例(四)

本文详细介绍了RocketMQ的使用,包括消息生产者的创建、消息发送,消费者订阅、消息处理,以及同步、异步、单向消息发送方式。同时讲解了顺序消息、延时消息和批量消息的实现,提供了具体场景和代码示例。

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

1.消息生产者步骤

1.1.创建消息生产者,并指定生产者组名

1.2.指定NameServer地址

1.3.启动producer

1.4.创建消息对象,指定主题 Topic,Tag,消息体

1.5.发送消息

1.6.关闭producer


2.消息消费者步骤

2.1.创建消费者Consumer,并指定消费者组名

2.2.指定NameServer地址

2.3.订阅主题Topic,Tag

2.4.设置回调函数,处理消息

2.5.启动消费Consumer


3.基本样例

3.1.发送同步消息

场景

对可靠性要求比较高,比如:重要的通知、短信等

代码
/**
 * 同步消息
 * @author lidalin
 */
public class SyncProducer {
   
   

    public static void main(String[] args) throws MQClientException, MQBrokerException, RemotingException, InterruptedException, UnsupportedEncodingException {
   
   
        //1.1.创建消息生产者,并指定生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("group1");
        //1.2.指定NameServer地址
        producer.setNamesrvAddr("localhost:9876");
        //1.3.启动producer
        producer.start();
        //1.4.创建消息对象,指定主题 Topic,Tag,消息体
        Message message = new Message("TopicTest", "tag1", "Hello World".getBytes());
        //1.5.发送消息
        SendResult result = producer.send(message);
        System.out.println(result);
        //1.6.关闭producer
        producer.shutdown();
    }
}

3.2.发送异步消息

场景

对性能要求较高

代码

/**
 * 异步消息
 * @author lidalin
 */
public class SyncProducer {
   
   

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

        //1.1.创建消息生产者,并指定生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("group1");
        //1.2.指定NameServer地址
        producer.setNamesrvAddr("localhost:9876");
        //1.3.启动producer
        producer.start();
        //1.4.创建消息对象,指定主题 Topic,Tag,消息体
        Message message = new Message("TopicTest", "tag1", "Hello World".getBytes());
        //1.5.发送异步消息
        producer.send(message, new SendCallback() {
   
   
            @Override
            public void onSuccess(SendResult sendResult) {
   
   
                System.out.println(sendResult);
            }

            @Override
            public void onException(Throwable e) {
   
   
                System.out.println(e);
            }
        });
        //1.6.关闭producer
        producer.shutdown();
    }
}

3.3.发送单向消息

场景

生产者不关心发送结果,数据价值不高

代码
/**
 * 单向消息
 * @author lidalin
 */
public class OnewayProducer {
   
   

    public static void main(String[] args) throws MQClientException
### RocketMQ 快速入门教程 #### 1. 环境准备 为了能够顺利运行 RocketMQ,在安装之前需确认已准备好 Java 运行环境,因为 RocketMQ 是基于 JVM 的项目。建议使用 JDK 版本为 8 或以上。 #### 2. 下载与解压 可以从 Apache 官网下载最新稳定版的 RocketMQ 套件[^1]。获取到压缩包之后将其放置于服务器上合适的位置并完成解压操作。 #### 3. 启动 Name Server 进入解压后的目录下的 `bin` 文件夹内执行启动命令来开启 Name Server 组件: ```bash nohup sh mqnamesrv & ``` 这一步骤对于整个集群来说至关重要,因为它负责管理所有的 Broker 节点信息,并提供路由查询服务给生产者和消费者节点访问。 #### 4. 启动 Broker 在同一文件夹下继续输入指令以激活至少一个 Broker 实例: ```bash nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true & ``` 这里 `-n` 参数指定了刚才创建好的 Name Server 地址;而 `autoCreateTopicEnable=true` 则表示当有新的 Topic 请求到来时自动创建该主题而不必手动配置。 #### 5. 发送消息 (Producer) 编写简单的 Producer 应用程序向指定的主题发送测试数据。下面给出一段 Python 示例代码用于演示如何实现这一点: ```python from rocketmq.client import PushConsumer, Message producer = Producer('test_producer_group') producer.set_namesrv_addr('localhost:9876') producer.start() msg = Message('TestTopic', 'TagA') msg.body = b'Hello RocketMQ' producer.send(msg) producer.shutdown() ``` 这段脚本会连接至本地运行的服务端并向名为 "TestTopic" 的队列里投入一条携带标签的消息体。 #### 6. 接收消息 (Consumer) 同样地构建 Consumer 来监听特定 topic 并处理接收到的信息流。以下是对应的 Python 示例片段: ```python consumer = PushConsumer('test_consumer_group') consumer.set_namesrv_addr('localhost:9876') def callback(msg): print(f'Received message: {msg.body.decode()}') consumer.subscribe('TestTopic', callback=callback) consumer.start() while True: pass ``` 此段逻辑将持续等待来自相同主题的新通知直到进程被人为终止为止。 通过上述步骤即可初步体验 RocketMQ 的基本功能特性及其工作原理。当然实际应用场景中还需要考虑更多因素比如高可用架构设计、性能优化措施等方面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值