赞
踩
之前介绍过rabbitmq的安装和底层实现有兴趣可以查阅之前的博客。
重要的说明:
今天抽象型的说一下mq各部分的运行机制:
交换机: 队列与交换机绑定,然后指定路由键,这样消息发送到交换机,交换机根据路由键去投递到匹配的队列中。
队列:
MQTT是当前物联网使用比较多的一个协议,他是以主题订阅的形式进行工作,类似于八婆传瞎话,某一个八婆在某个小团体中说别人的坏话,然后你不在它的小团里不行,它说别人坏话的时候你不在也听不见。
(mqttclient订阅某一个主题,然后所有订阅这个主题的用户都可以收发消息,某个客户端发送消息其他所有在线用户会同步收到,即时消息不会存储,不在线收不到消息,即使下线又上线之前不在线的消息也不会收到)
注意:一定要现有队列才可以发送消息,发送消息并不会创建交换机和队列,可以先让消费者启动也就是RabbitListener他会根据配置创建。
POM文件
<!-- rabbitmq依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
porperties
spring: #rabbitmq rabbitmq: port: 5672 username: 账号 password: 密码 virtual-host: / host: ip listener: simple: ## auto表示自动完成这次消费,manual表示需要手动告知完成消费 acknowledge-mode: manual ## listener开几个线程处理数据 concurrency: 1 ## linstener 最大开几个线程 max-concurrency: 1 ## 一次拿几条数据 prefetch: 1 # 开启重试,重试5次 间隔1秒 retry: # 开启消费者(程序出现异常)重试机制,默认开启并一直重试 enabled: true # 最大重试次数 max-attempts: 5 # 重试间隔时间(毫秒) initial-interval: 1000 # 是否进入死信队列 true是 false不是 default-requeue-rejected: false
@AliasFor("name")
String value() default ""; // 交换机名称(两个都是)
@AliasFor("value")
String name() default ""; // 交换机名称(两个都是)
String type() default "direct"; // 交换机类型
String durable() default "true"; // 是否是持久化的,即使rabbitmq重启,交换机是否存在
String autoDelete() default "false"; // 当没有队列绑定交换机自动销毁
String internal() default "false"; // 是否为内部交换机,内部交换机只能路由交换机到交换机
String
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。