开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第四阶段:Java 实现消息发送】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/686/detail/11906
Java 实现消息发送
接下来我们使用java代码来演示消息的发送和接收
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactid>
<version>2.0.2</version>
</dependency>
1、发送消息
消息发送步骤:
(1)创建消息生产者,指定生产者所属的组名
(2)指定 Nameserver 地址(生产者要通过 NameServer 获取相应的 Broker 投递消息)
(3)启动生产者
(4)创建消息对象,指定主题、标签和消息体
(5)发送消息
(6)关闭生产者
//发送消息
public class RocketMQSendTest {
public static void main(String[] args)throws Exception{
//1.创建消息生产者,指定生产者所属的组名
DefaultMQProducer producer=new
DefaultMQProducer("mypr oducer-qroup");
首先添加 RocketMQ 的依赖,用 shop-order 工程来做
<dependency>
<groupId>com.itheima</groupId>
<artifactId>shop-common</artifactid>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--nacos客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactid>
</dependency>
<!--fegin-->
<dependenay>
<groupId>org.springframework.cloud</groupid>
<artifactId>spring-cloud-starter-openfeign</artifactid</dependency>
<!--sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactid></dependency>
<!--rockotMQ-->
<dependency>
<groupId>org.apache.rocketmq</groupid>
<artifactId>rocketmg-spring-boot-starter</artifactid>
<version>2.0.2</version>
</dependency>
</dependencies>
</progect>
//写代码,在 test 下面去建一个新的包
com.itheima.test.RocketMQSendMessageTest
Import
org.apache.rocketmg.client.producer.DefaultMoProdu
cer;
public class RocketMOSendMessaeTest{
//发送消息
public static void main(String[] args){
//1.创建消息生产者,并且设置生产组名
DefaultMoproducer producer =new
DefaultMoproducer( prod
ucerGroup: "myproducer-qroup");
//2
.
为生产者设置
NameServer
的地址
producer.setNamesrvAddr("192.168.109.131:9876");
//3启动生产者
producer.start();
//4
.
构建消息对象,主要是设置消息的主题标签内容
new Messaae( topic: "myTopic",tags: "myTag" ("Test
Rocket
MO Message") .aetBytes(()).var
//5.发送消息 第二个参数代表超时时间
Sendresult result =producer.send(message, timeout:10000);
System.out.println(result);
//6
.
关闭生产者
producer.shutdown();
}
}
代码编写完毕,启动测试:
看到结果,发送成功,发送是 OK 的并且将 message 在 Rocket MQ 里面的标识已经返回来,后面还有更加详细的信息、主题、哪个Brocket 处理、队列是放在哪里面都有。
通过控制台也可以再看一下后台里面里面有各个选项。比如通过主题里面可以查看一下新增的主题 mytopic,里面有各个处理向可以自己去看。
可以通过消息的按钮选主题,点击 mytopic 搜索。
Message ID 可以对上号,点击 MESSAGE DETAIL 可以看到消息的详细内容。
可以看到 ID、主题、标签发送的时间、存储的时间以及消息的具体内容。