目录
🎂除了上面提到的优化,我们还可以进一步优化RocketMQ的使用,具体如下:
🎂前言:
前面写了rabbitMq的消息队列,今天补充一下RocketMQ
🎂引入 Maven 依赖:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.9.0</version>
</dependency>
🎂发送消息:
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import java.nio.charset.StandardCharsets;
public class AsyncProducer {
public static void main(String[] args) {
DefaultMQProducer producer = new DefaultMQProducer("producer-group");
producer.setNamesrvAddr("localhost:9876");
try {
producer.start();
for (int i = 0; i < 10; i++) {
Message message = new Message("topic", "tag", ("消息" + i).getBytes(StandardCharsets.UTF_8));
producer.send(message, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("消息发送成功:" + sendResult);
}
@Override
public void onException(Throwable throwable) {
System.out.println("消息发送失败:" + throwable.getMessage());
}
});
}
Thread.sleep(10000); // 等待消息发送完成
} catch (MQClientException | InterruptedException e) {
e.printStackTrace();
} finally {
producer.shutdown();
}
}
}
🎂接收消息:
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import java.util.List;
public class AsyncConsumer {
public static void main(String[] args) {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer-group");
consumer.setNamesrvAddr("localhost:9876");
try {
consumer.subscribe("topic", "tag");
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
System.out.println("消息接收成功:" + list);
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
Thread.sleep(10000); // 等待消息接收完成
} catch (Exception e) {
e.printStackTrace();
} finally {
consumer.shutdown();
}
}
}
</

本文介绍了如何使用RocketMQ进行消息的发送和接收,包括异步发送、接收消息的基本操作,以及如何利用RocketMQ的特性进行事务消息、延迟消息、顺序消息和批量消息的处理。同时,展示了生产者和消费者类的关键代码实现。
最低0.47元/天 解锁文章
1251





