开发者学堂课程【RocketMQ知识精讲与项目实战(第一阶段):发送同步消息】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/702/detail/12376
发送同步消息
(1)消息发送
*发送同步消息:意思就是消息的生产者,它作为客户端给 mq 发送消息,发送完消息之后这个客户端会阻塞在那里,直到 mq 给它传送一个结果,这个客户端的程序才能往下执行。
这种可靠性同步地发送方式使用的比较广泛,比如: 重要的消息通知,短信通知。
例如:
package com. itheima. mq. rocketmq. base. producer;
/**
*发送同步消息
*/
public class SyncProducer {
public static void main(string[]args){
//1.创建消息生产者 producer,并制定生产者组名I
//2.指定 Nameserver .地址
//3. Fd/producer
//4.创建消息对象,指定主题 Topic、Tag 和消息体
//5.发送消息
//6.关闭生产者producer
}
}
现在使用代码把这六步描述即可
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:9
876");
//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);
}
public class syncProducer {
public static void main(string[]args) throws Exception{
//实例化消息生产者 Producer
DefaultMQProducer producer=new DefaultMQProducer ("please rename group name")
;
s//设置 NameServer 的地址
product ,se tNamesrvAddr ("local host :9876");
//启动 Producer 实例
producer, start();
for (int i = 0 ;i < 100;i++) {
//创建消息,并指定 Topic, Tag 和消息体
Message msg new Message("Topic Test"/*Topic"/,
"TagA"/"Tag*/,
("Hello RocketMQ"+i), get Bytes( RemotingHelper .DEFAULT CHARSET)/"Message body"/) ;
//发送消息到一个Broker
sendkesult sendResult =producer. send(msg);
//通过 send Result 返回消息是否成功送达
system, out, printf("%s%n", send Result);
}
//如果不再发送消息,关闭 Producer 实例。
producer. shutdown();
}