1,导入依赖
<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.0.3</version> </dependency>
2,yml配置文件
3,新建Bean对象User,此处使用lombook简化开发,因为需要网络传输,所以需要对象实现Serializable,完成序列化
4,新建生产者SendController 并且发送同步消息 访问http://localhost:8088/demo/send
出现success!说明发送成功
@RestController @RequestMapping("/demo") public class SendController { @Autowired RocketMQTemplate rocketMQTemplate;//模板类:建连接及断连结 @GetMapping("/send") public String send(){ User smoky = new User("smoky", 18); //同步消息 SendResult syncSend = rocketMQTemplate.syncSend("topic10", smoky, 3); return "success!"; }
5,发送异步消息
//异步消息 rocketMQTemplate.asyncSend("topic10", smoky, new SendCallback() { @Override public void onSuccess(SendResult sendResult) { //成功回调函数 System.out.println("sendResult = " + sendResult); } @Override public void onException(Throwable throwable) { //发送失败回调函数 System.out.println(throwable); } },1000);
//单向消息
rocketMQTemplate.sendOneWay("topic10",smoky);
//延时消息
//延时消息 rocketMQTemplate.syncSend("topic10", MessageBuilder.withPayload(msg).build(),2000,2);
新建消费者DemoConsumer 添加@RocketMQMessageListener注解
@Service
//根据sql过滤
@RocketMQMessageListener(topic = "topic10",consumerGroup = "group1",
selectorType = SelectorType.SQL92,
selectorExpression = "age>92",
messageModel = MessageModel.BROADCASTING //广播模式
)
//sql过滤
public class DemoConsumer implements RocketMQListener<User> {
@Override
public void onMessage(User user) {
//业务逻辑
System.out.println("user = " + user);
}
}
启动消费者出现如下字样则说明搭建成功,正常一次就可以了,这里为了测试多发送了几次