开发者学堂课程【RocketMQ知识精讲与项目实战(第一阶段):发送异步消息】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/702/detail/12377
发送异步消息
与同步消息比较,它传送消息之后不会等 mq 的响应,所以这个时候它发送消息的可靠性就没有同步消息高,异步消息也是可以接收到消息的,可以借用一个回调函数,如果消息需要立刻返回,可以使用异步消息。
异步消息通常用在对响应时间敏感的业务场景,即发送端不能容忍长时间地等待Broker 的响应。
代码如下:
public static void main(String[]args) throws Exception{
//1.剑建消息生产者 producer,并制定生产者组名
DefaultMQProducer producer=new DefaultMQProducer (producer Group."group I");
//2.指定Nameserver地址producer. setNamesrvAddr ("192.168.25,135:9876;192.168.25.138:9876");
//3.启动 producer
producer. start();
for(int i=0;i<10;i++){
//4.剑建消息对象,指定主题Topic、Tag和消息体(
/**
*参数一:消息主题 Topic
*参数二:消息 Tag
*参数三:消息内容
*/
Message msg new Message(topic"base", tags:"Tag 1",("Hello world"+i++), get Bytes());
}
//5.发送消息
SendResult result=producer. send(msg);
//发送状态
Sendstatus status=result. getSendStatus ();
//消息ID
String msgId=result ggetMsgId();
//消息接受 ID
int queueId=result, getMessageQueue (), getQueueId ();
System. out.printIn("发送状态:"+result+",消息ID"+msgId=",队列"+queueId);l
//6.关闭生产者 producer
Producer.shudown();
public class AsyncProducer {
public static void main(string[]args) throws Exception{
//实例化消息生产者 Producer
DefaultMQProducer producer=new DefaultMQ Producer("please rename group group name");
//设置 NameServer 的地址
producer, setNamesrvAddr ("local host:9876");
//启动 Producer 实例
producer, start();
producer, setRetryTimeswhensendAsyncFailed (0);
for (int i= 0;i < 100;i++) {
final int index= i;
//创建消息,并指定 Topic, Tag 和消息体
Message msg=new Message("TopicTest",
"TagA",
"OrderID 188",
"Hello word",getBytes( RemotingHelper .DEFAULT CHARSET));
//send callback
接收异步返回结果的回调
producer, send(msg, new Sendcallback (){
@override
public void onsuccess(Send Result sendkesult ){
system, out, printf("%-10dOK%s%n", index,
send Result.getMsgId());
}