RocketMQ发送接收消息

RocketMQ 是一个开源的分布式消息中间件,它提供了可靠的消息传递和高可用性、高性能的特性。在 RocketMQ 中,消息的发送和接收主要涉及到 Producer(生产者)和 Consumer(消费者)两个角色。以下是使用 Java 演示 RocketMQ 发送和接收消息的基本步骤。

发送消息(Producer)

首先,你需要创建一个消息生产者,将消息发送到指定的主题(Topic)。

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;

public class RocketMQProducer {

    public static void main(String[] args) throws Exception {
        // 创建一个消息生产者实例
        DefaultMQProducer producer = new DefaultMQProducer("your_producer_group");
        // 指定 NameServer 地址,多个地址用分号隔开
        producer.setNamesrvAddr("your_namesrv_addr");
        // 启动生产者实例
        producer.start();

        try {
            // 创建消息对象,参数分别为:主题(Topic)、标签(Tag)、消息内容
            Message message = new Message("your_topic", "your_tag", "Hello, RocketMQ".getBytes());
            // 发送消息到指定主题
            producer.send(message);
            System.out.println("消息发送成功");
        } finally {
            // 关闭生产者实例
            producer.shutdown();
        }
    }
}

接收消息(Consumer)

然后,你需要创建一个消息消费者,从指定主题订阅消息并处理。

import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.common.message.MessageExt;

import java.util.List;

public class RocketMQConsumer {

    public static void main(String[] args) throws Exception {
        // 创建一个消息消费者实例
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("your_consumer_group");
        // 指定 NameServer 地址,多个地址用分号隔开
        consumer.setNamesrvAddr("your_namesrv_addr");
        // 订阅主题和标签,* 表示订阅所有标签
        consumer.subscribe("your_topic", "*");
        // 注册消息监听器,处理消息
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> messages, ConsumeConcurrentlyContext context) {
                for (MessageExt message : messages) {
                    // 处理接收到的消息
                    System.out.println("接收到消息:" + new String(message.getBody()));
                }
                // 消息处理成功
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });

        // 启动消费者实例
        consumer.start();

        System.out.println("消费者启动成功");
    }
}

在上述代码中,需要替换以下参数:

  • your_producer_group: 生产者组名
  • your_consumer_group: 消费者组名
  • your_namesrv_addr: RocketMQ NameServer 的地址
  • your_topic: 指定的主题
  • your_tag: 指定的标签

以上代码演示了一个简单的 RocketMQ 消息的发送和接收过程。实际应用中,你可能需要更复杂的逻辑和处理方式,例如处理消息重试、处理异常等。请根据实际情况调整代码。

你可能感兴趣的:(rocketmq)