RocketMQ总结

rocketMQ消息队列就是让java工程之间可以传递消息,不同与微服务,

  • 微服务是找到注册服务的接口,然后拿到服务路径去请求,服务请求服务,
  • 消息队列是工程给工程发消息,不一定得有web工程
  • 微服务和消息队列都有注册中心,微服务是从注册中心拉取到其他服务信息去请求,
  • 消息队列是拉取到broker(broker在创建的时候就注册到注册中心了’)给broker消息,想拿消息的工程就和收听广播一样,订阅消息主题,只要这个主题一有信息,broker就会让该工程拉取到该主题的消息

RocketMQ总结_第1张图片

rocketMQ使用

1,注册中心springboot工程,会有网页
RocketMQ总结_第2张图片
2,引入依赖

		<dependency>
            <groupId>org.apache.rocketmqgroupId>
            <artifactId>rocketmq-spring-boot-starterartifactId>
            <version>2.1.0version>
        dependency>

注意:这里犯了一个错,我直接复制的是注册中心工程springboot的父依赖,和这个starter不支持,要用新版本的,我用的是2.2.7
3,配置生产者
这就是个controller,请求这个路径就会发送firstM主题的内容为一个user对象的消息
核心为rocketMQtemplate自动配置的模板对象,它可以发各种消息
同步,异步,顺序,事务,延时,批量

自动配置的配置
就是指定一下哪个nameserver,写一个生产者组

server:
  port: 10086
rocketmq:
  name-server: 192.168.214.128:9876
#  生产者组没有用,但是必须得配置
  producer:
    group: wei-producer

4,配置消费者
消费者的话就实现一个监听器,指定好类型,上面注解指定上面主题以及消费者组,这个组同样没啥子用,但是得配,而且自动配置里面还没有,非得局部配置

//想要接受消息,这个类需要在容器中
@Component
//指定消费者组以及订阅哪个主题的消息
@RocketMQMessageListener(consumerGroup = "syncGroup",topic = "firstM")
public class MySyncCustomerGroup implements RocketMQListener<User> {
//上面实现接口指定接受消息类型的泛型,这边重写的这个方法的参数就是接受的消息
    @Override
    public void onMessage(User s) {
        System.out.println(s);
    }
}

@rocketMQmessageListenner这个注解还有一个参数,selectorExpression
RocketMQ总结_第3张图片
配置

server:
  port: 10087
rocketmq:
  name-server: 192.168.214.128:9876
#消费者组在autoConfigration里面没有配置的,只能局部配置

你可能感兴趣的:(学习笔记)