在RocketMQ中,发送消息的方式主要有三种:同步发送、异步发送和单向发送。下面是这三种发送方式在Spring Boot项目中的实现示例。
1. 同步发送消息
同步发送是指发送方发送一条消息后,会等待服务器返回确认信息后再进行后续操作。这种方式适用于需要可靠性保证的场景。
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class RocketMQSyncProducer {
@Autowired
private RocketMQTemplate rocketMQTemplate;
public void sendSyncMessage(String topic, String message) {
rocketMQTemplate.convertAndSend(topic, message);
}
}
2. 异步发送消息
异步发送是指发送方发送消息后,不等待服务器返回确认信息,而是通过回调接口处理返回结果。这种方式适用于对响应时间要求较高的场景。
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class RocketMQAsyncProducer {
@Autowired
private RocketMQTemplate rocketMQTemplate;
public void sendAsyncMessage(String topic, String message) {
rocketMQTemplate.asyncSend(topic, message, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("Async message sent successfully: " + sendResult);
}
@Override
public void onException(Throwable throwable) {
System.err.println("Async message send failed: " + throwable.getMessage());
}
});
}
}
3. 单向发送消息
单向发送是指发送方只负责发送消息,不关心服务器的响应。该方式适用于对可靠性要求不高的场景,如日志收集。
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class RocketMQOnewayProducer {
@Autowired
private RocketMQTemplate rocketMQTemplate;
public void sendOnewayMessage(String topic, String message) {
rocketMQTemplate.sendOneWay(topic, message);
}
}