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!