RocketMQ 三种发送方式:
- Sync: 同步发送,等待结果后返回,可以设置超时时间。
- Async:异步的发送方式, 发送成功后,立刻返回,生产者在获取到Broker响应后,会调用指定的CallBack,可以设置超时时间。
- OneWay: 消息发出之后,直接返回,不做任何操作,一般用于日志
代码示例:
/**
* 生产者
*/
public class Producer {
public static void main(String[] args) throws MQClientException, RemotingException, InterruptedException, MQBrokerException {
// 创建生产者
DefaultMQProducer producer = new DefaultMQProducer("TEST_GROUP");
// 配置 NameServer
producer.setNamesrvAddr("192.168.184.128:9876");
// 启动生产者
producer.start();
// 组装Message
Message message = new Message("TEST_TOPIC", "TEST_TAG", "MESSAGE".getBytes());
// 1.Sync: 同步发送,等待结果后返回,可以设置超时时间。
SendResult send = producer.send(message);
// 2. Async:异步的发送方式, 发送成功后,立刻返回,生产者在获取到Broker响应后,会调用指定的CallBack,可以设置超时时间。
producer.send(message, new Producer.SendCallbackDemo());
// 3. OneWay: 消息发出之后,直接返回,不做任何操作,一般用于日志
producer.sendOneway(message);
}
static class SendCallbackDemo implements SendCallback{
@Override
public void onSuccess(SendResult sendResult) {
System.out.printf("异步发送结果:", sendResult);
}
@Override
public void onException(Throwable e) {
System.out.printf("异步发送数据异常");
}
}
}
END!