目前个人的博客多是技术的使用,并没有怎么深入原理.后面弄懂了会专门写一篇详细的消息模式
自己写了一个小案例,用到了redis,腾讯云短信发送,rocketmq.mybatisplus
这里就只讲rockermq
先导入maven依赖
<!--rocketmq-->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-common</artifactId>
<version>4.5.1</version>
</dependency>
yml文件的配置(不太清楚,为什么下面的灰色了)
mybatis-plus:
#mybatis的sql语句映射文件位置
mapper-locations: classpath:/mapper/*.xml
#mybatisPlus对应的实体类
type-aliases-package: com.yxt.pojo
configuration:
#打印mybatisPlus的执行sql语句
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
rocketmq:
#mq的地址
name-server: 1.116.130.252:9876
producer:
#生产组
group: my-group
controller层,这是也是消息的生产者
@Slf4j
@RestController
@RequestMapping("bb")
public class UserController {
@Resource
private UserService userService;
@Resource
RedisTemplate redisTemplate;
@Resource
RocketMQTemplate rocketMQTemplate;
@GetMapping("bb")
public void bb() {
log.info("bb方法要执行了");
List<User> list = userService.list();
//唯一消息消费 "list"是topic
rocketMQTemplate.convertAndSend("list",list);
//短信发送
//rocketMQTemplate.convertAndSend("sms","13063285766");
//String code = (String) redisTemplate.opsForValue().get("code");
//System.out.println(code);
//userService.aa();
}
}
消息消费
@Slf4j
@Component
//topic必须一样
@RocketMQMessageListener(topic = "list",consumerGroup = "my_sms",selectorExpression = "*")
public class RockerMQSMS implements RocketMQListener<List> {
@Resource
SendSms sendSms;
@Override
public void onMessage(List s) {
//sendSms.SMS(s);
System.out.println(s);
log.info("sms:{}",s);
}
}
RocketMQSMS和RocketMQSMS2的代码是一样的,但是他们只有个能获取到消息.并且是随机的