目录
重点方法分析和使用示例
1. syncSend-同步发送
2. asyncSend-异步发送
3. sendOneWay-单向发送
4. syncSendOrderly-同步顺序发送
5. asyncSendOrderly-异步顺序发送
6. sendOneWayOrderly-单向排序发送
7. sendAndReceive-请求响应模式
8. 其他重载方法
同步发送消息,等待发送结果返回。
public SendResult syncSend(String destination, Object payload)
SendResult result = rocketMQTemplate.syncSend("TestTopic", "Hello RocketMQ");
System.out.println(result);
异步发送消息,通过回调处理发送结果。
public void asyncSend(String destination, Object payload, SendCallback sendCallback)
rocketMQTemplate.asyncSend("TestTopic", "Hello RocketMQ", new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("Message sent successfully: " + sendResult);
}
@Override
public void onException(Throwable e) {
System.err.println("Message sending failed: " + e.getMessage());
}
});
单向发送消息,不等待发送结果返回。
public void sendOneWay(String destination, Object payload)
rocketMQTemplate.sendOneWay("TestTopic", "Hello RocketMQ");
同步发送顺序消息,确保消息按顺序发送到同一队列。
public SendResult syncSendOrderly(String destination, Object payload, String hashKey)
SendResult result = rocketMQTemplate.syncSendOrderly("TestTopic", "Orderly Message", "OrderID123");
System.out.println(result);
异步发送顺序消息,通过回调处理发送结果。
public void asyncSendOrderly(String destination, Object payload, String hashKey, SendCallback sendCallback)
rocketMQTemplate.asyncSendOrderly("TestTopic", "Orderly Message", "OrderID123", new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("Message sent successfully: " + sendResult);
}
@Override
public void onException(Throwable e) {
System.err.println("Message sending failed: " + e.getMessage());
}
});
单向发送顺序消息,不等待发送结果返回。
public void sendOneWayOrderly(String destination, Object payload, String hashKey)
rocketMQTemplate.sendOneWayOrderly("TestTopic", "Orderly Message", "OrderID123");
发送请求并等待响应消息,这种方式适用于需要请求-响应模式的场景。
public T sendAndReceive(String destination, Object request, Class responseType)
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class RequestResponseService {
@Autowired
private RocketMQTemplate rocketMQTemplate;
public void sendRequestAndReceiveResponse() {
String destination = "RequestTopic";
String requestMessage = "Hello RocketMQ, can you respond?";
// 发送请求并接收响应
String response = rocketMQTemplate.sendAndReceive(destination, requestMessage, String.class);
// 打印响应消息
System.out.println("Received response: " + response);
}
}
public T sendAndReceive(String destination, Object request, Class responseType, long timeout)
String response = rocketMQTemplate.sendAndReceive("RequestTopic", "Hello RocketMQ", String.class, 3000);
System.out.println("Received response: " + response);
public T sendAndReceive(String destination, Object request, Class responseType, RocketMQLocalTransactionListener listener)
// 自定义事务监听器
RocketMQLocalTransactionListener listener = new RocketMQLocalTransactionListener() {
@Override
public RocketMQLocalTransactionState executeLocalTransaction(Message msg, Object arg) {
// 执行本地事务逻辑
return RocketMQLocalTransactionState.COMMIT;
}
@Override
public RocketMQLocalTransactionState checkLocalTransaction(Message msg) {
// 检查本地事务状态
return RocketMQLocalTransactionState.COMMIT;
}
};
String response = rocketMQTemplate.sendAndReceive("RequestTopic", "Hello RocketMQ", String.class, listener);
System.out.println("Received response: " + response);