持久化
https://www.cnblogs.com/woms/p/7040882.html
https://segmentfault.com/a/1190000016072908
SpringBoot + RabbitMQ 简单实现创建队列的三种方式
rabbitmq延迟队列demo
完整代码
Java使用RabbitMQ要点知识
https://www.jianshu.com/p/ea04ee9504c3
RabbitMQ参数详解
springBoot整合RabbitMQ及基本使用
Queue :
- durable : 为true,声明 queue 是持久化的,当RabbitMQ崩溃重启后 queue 仍然存在;
- exclusive: 为true,声明该 queue 为排他队列,如果一个队列被声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除该 queue,也就是当 connection 断开后,该 queue 就会被删除;
- autoDelete : 为true,当所有订阅了该 queue 的 consumer 从RabbitMQ断开后就会删除该queue,或者是当 connection 断开后,该 queue 就会被删除,与 exclusive 不同的是,如果一开始就没有 consumer 连接到该 queue,那么该 queue 将不会被删除;
durable属性和auto-delete属性可以同时生效;
durable属性和exclusive属性会有性质上的冲突,两者同时设置时,仅exclusive属性生效;
auto_delete属性和exclusive属性可以同时生效;
参考: https://yq.aliyun.com/articles/42205
集群部署
https://www.cnblogs.com/vipstone/p/9362388.html
Qos prefetch
prefetch并不是说设置得越大越好。过大可能导致consumer处理不过来,一直在本地缓存的BlockingQueue里呆太久,这样消息在客户端的延迟就大大增加;而对于多个consumer的情况,则会分配不均匀,导致有些consumer一直在忙,有些则非常空闲。
然而设置的过小,又会令到consumer不能充分工作,因为我们总想它100%的时间都是处于繁忙状态,而这时可能会在处理完一条消息后,BlockingQueue为空,因为新的消息还未来得及到达,所以consumer就处于空闲状态了。
RabbitMQ之Qos prefetch
RabbitMq qos prefetch 消息堵塞问题
RabbitMQ消费者的几个参数concurrency prefetch Exclusive
https://blog.csdn.net/chang_ge/article/details/82976820
https://blog.csdn.net/qq_37936542/article/details/80111555
https://blog.csdn.net/LeiXiaoTao_Java/article/details/78952930
有专栏 Headers交换类型(java)
Java使用RabbitMQ要点知识
延时消息
delayMsgTemplate.convertAndSend( message, new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
//为每个消息设置expiration,此时消息之间过期时间不同。
// 如果两者都设置(x-message-ttl),过期时间取两者最小。 ms单位 1000ms = 1s
message.getMessageProperties().setExpiration(String.valueOf(60000));
return message;
}
});
或
RabbitMQ 延时消息队列 spring实现
使用RabbitMQ实现延迟任务
springboot和rabbitmq整合实现普通任务和延时任务
confirm
rpc
说明 :
消息头里有个字段reply_to 消息的生产者可通过该字段来指定队列名称并阻塞监听此队列等待应答,一般这个队列叫做回调队列,然后接收消息的rpc的服务器能够检查reply_to字段,并创建包含应答内容的新消息并以此队列名称做为路由键。虽然没有指定交换器,但rabbitmq已经知道目地的是应答(回调)队列。
存放返回结果的队列叫做回调队列,客户端发送消息之后阻塞监听该队列返回的消息。我们可以使用随机队列命名,也可以指定队列的名称,同时,我们可以一个消息建立一个随机队列,但是通常考虑资源使用的情况,我们一般一个消费者建立一个指定的回调队列。
声明没有名字的队列时,rabbitmq会随机指定一个唯一的队列名,同时声明队列时指定exclusive参数,确保只有你可以队列的消息,这就声明了一个临时(auto-delete)、匿名、排他(exclusive)的队列,并将队列名称设置到消息的reply_to头中
springboot集成rabbitmq实战RPC远程调用,同步返回结果
spring-boot & spring 实现 rabbitMq rpc模式的消息发送与接收
spring集成rabbitmq实现rpc
RabbitMQ学习笔记九:RabbitMQ实现RPC(远程过程调用)
springBoot+ RabbitMQ(同步RPC,异步RPC)
中间件系列八 RabbitMQ之实现RPC模式
spring对rabbitmq RPC的支持
https://blog.csdn.net/chenxyt/article/details/79347602
远程过程调用(RPC)
springmvc 集成rabbitmq,实现RPC通信方式
Spring-rabbitmq 实现RPC 风格调用实例
RabbitMQ中RPC的实现及其通信机制