RocketMQ5实践
warning:
这篇文章距离上次修改已过190天,其中的内容可能已经有所变动。
在RocketMQ中,我们可以使用多种方式来实现消息的发送和接收,以下是一些常见的实践方法:
同步发送
同步发送是指发送方发送一条消息后,会阻塞线程等待Broker返回发送结果。这种方式适合于要求严格的延迟和可靠性的场景。
public void syncSend() throws MQClientException, RemotingException, MQBrokerException, InterruptedException {
Message msg = new Message("TopicTest", "TagA", "OrderID12345", "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
SendResult sendResult = producer.send(msg);
System.out.printf("%s%n", sendResult);
}
异步发送
异步发送是指发送方发送一条消息后,不会阻塞线程,而是通过回调函数来获取发送结果。这种方式可以提高发送效率。
public void asyncSend() throws MQClientException {
Message msg = new Message("TopicTest", "TagA", "OrderID12345", "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
producer.send(msg, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.printf("%s%n", sendResult);
}
@Override
public void onException(Throwable e) {
e.printStackTrace();
}
});
}
单向发送
单向发送是指发送方发送一条消息后,不关心是否成功发送给Broker。这种方式可以最大化的提高发送效率,但是也意味着消息可能会丢失。
public void onewaySend() throws MQClientException, InterruptedException {
Message msg = new Message("TopicTest", "TagA", "OrderID12345", "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
producer.sendOneway(msg);
}
批量发送
批量发送是指一次性发送多条消息。这种方式可以提高发送效率。
public void batchSend() throws MQClientException, RemotingException, MQBrokerException, InterruptedException {
List<Message> messages = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Message msg = new Message("TopicTest", "TagA", "OrderID12345", "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
messages.add(msg);
}
SendResult sendResult = producer.send(messages);
System.out.printf("%s%n", sendResult);
}
定时(延迟)发送
定时发送是指发送方发送一条消息后,这条消息不会立即被消费,而是等待一段时间后才能被消费。
public void scheduleSend() throws MQClientException, RemotingException, MQBrokerException, InterruptedException {
Message msg = new Message("Top
评论已关闭