当前位置: 首页 > news >正文

网站诊断内容wordpress 评论调用

网站诊断内容,wordpress 评论调用,asp. net 做网站,iis7部署asp网站TTL,Time to Live的简称,即过期时间,RabbitMQ可以对消息和队列设置TTL。 RabbitMQ支持设置队列的过期时间和消息的过期时间。如果设置队列的过期时间则队列中所有的消息都有相同的过期时间。如果设置消息的过期时间则每条消息的过期时间则可以不同。如两…

TTL,Time to Live的简称,即过期时间,RabbitMQ可以对消息和队列设置TTL。

       RabbitMQ支持设置队列的过期时间和消息的过期时间。如果设置队列的过期时间则队列中所有的消息都有相同的过期时间。如果设置消息的过期时间则每条消息的过期时间则可以不同。如两个方法一起使用,则消息的TTL取最小的数值为重。消息在队列中的生存时间一旦超过了TTL值,则会变成死信,死信消息将被从原有队列中移除。

设置队列的过期时间

       针对队列设置过期时间RabbitMQ提供了三种设置方式:

  • 代码定义队列时设置x-message-ttl属性
  • 通过Policy方法设置
  • 通过调用HTTP API的方式设置(RabbitMQ管理工具)

       在大多数情况定义队列(代码定义)的过程中设置队列的过期时间就足够使用,方法2 3只要适用于不通过代码定义队列的场景,在这里不进行详细讲述。java实现中定义队列的方法如下

    /*** Declare a queue* @param queue the name of the queue   队列的名称* @param durable true if we are declaring a durable queue (the queue will survive a server restart) 是否持久化* @param exclusive true if we are declaring an exclusive queue (restricted to this connection) 是否独占队列(仅限于此连接)* @param autoDelete true if we are declaring an autodelete queue (server will delete it when no longer in use)  是否自动删除队列(服务器将在不再使用时删除它)* @param arguments other properties (construction arguments) for the queue  队列的其他属性(构造参数)* @return a declaration-confirm method to indicate the queue was successfully declared* @throws java.io.IOException if an error is encountered*/Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,Map<String, Object> arguments) throws IOException;

       从定义队列方法中不难看出,如果想要实现设置TTL参数,则需要从Map<String, Object> arguments入手。该参数为一个Map键值对。设置TTL的代码实现如下:

Map<String,Object> arguments = new HashMap<>();
arguments.put("x-message-ttl",6000);
channel.queueDeclare(queue,durable,exclusive,autoDelete,arguments);

       如果不给队列设置TTL,则按照消息的TTL进行处理,如果队列和消息都未设置TTL,则表明该消息不会过期,如果将TTL设置为0,则便是除非此时可以直接将消息投递给消费者,否则消息会被丢失。

设置消息的过期时间

       给消息设置过期时间及给每一条发送的消息分别设置过期时间,因此这个TTL在发送消息的时候继续设置。发送消息的方法如下:

    /*** Publish a message.* @param exchange the exchange to publish the message to 交换机名称* @param routingKey the routing key 路由键(交换机将消息存储到队列的依据)* @param mandatory true if the 'mandatory' flag is to be set 是否强制的(如果不存在存放消息的队列则将消息重新返回给生产者)* @param immediate true if the 'immediate' flag is to be* set. Note that the RabbitMQ server does not support this flag. (消息是否立即发送,RabbitMQ 3.0后弃用)* @param props other properties for the message - routing headers etc 消息的其他配置(路由标头等)* @param body the message body 消息内容* @throws java.io.IOException if an error is encountered*/void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body)throws IOException;

       从定义队列方法中不难看出,如果想要实现设置TTL参数,则需要从BasicProperties props入手。该类的具体参数如下:

        public static final class Builder {private String contentType;private String contentEncoding;private Map<String,Object> headers;// 是否持久化private Integer deliveryMode;private Integer priority;private String correlationId;private String replyTo;// 消息过期时间private String expiration;private String messageId;private Date timestamp;private String type;private String userId;private String appId;private String clusterId;

       根据上述内容,我们可以通过设置expiration的方法实现设置消息过期时间。

AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder();
builder.deliveryMode(2);
builder.expiration("2000");
AMQP.BasicProperties properties = builder.build();            channel.basicPublish(EXCHANGE_NAME,ROUTING_KEY,properties,message.getBytes());

       需要注意的是RabbitMQ中的队列是一个先入先出的队列,而一个小时是否到达过期时间时当该消息即将被投放的时候进行判断,也就是说RabbiMQ没有必要轮询队列中所有的消息是否到底过期时间,仅需要判断即将发送的消息是否到达过期时间,如果到达过期时间则将该消息丢弃即可**。因此如果一个队列中的消息的过期时间各不相同,那么并不是一旦消息到达过期时间则从队列中丢失,只有该消息将被发送的时候才会被丢弃**。

http://www.yayakq.cn/news/101391/

相关文章:

  • 网站虚拟空间购买怎样做无水印视频网站
  • 滁州市南谯区建设局网站做慕斯蛋糕那个网站有视频
  • 如何做网站拓扑结构图在线营销型网站制作
  • 搜索引擎优化网站中国搜索引擎排名2021
  • 福州云建站惠州网站建设电话
  • 网站项目建设方案文档怎么在自己电脑做网站
  • 网站跳出率的衡量标准昆明网约车公司排行榜
  • 手机php网站开发北京网站设计 培训
  • 集团网站设计专业团队淮南网新闻最新消息
  • 场外期权网站开发贵州省建设厅网站官网
  • 哪个网站做视频有收益wordpress 文章描述
  • 一个网站做多少页面数量合适伍佰亿网站系统
  • 手表网站app推荐安康建设网站
  • 建站免费建站平台建设工程管理是做什么的
  • 手机网站发号系统源码耐看舒适的网页设计欣赏
  • 网站ip流量查询设备租赁网站建设
  • 2016年做水果行业专业网站河南建筑公共信息
  • 做网站ie缓存wordpress自定义模板
  • 什么网站容易做网建科技北京有限公司
  • 开发一套网站多少钱天津全包圆装饰公司官网
  • 建一个网站的价格响应式网站用什么工具做
  • 企业是做app还是做网站安徽省建设工程造价协会网站
  • 网站开发的英文书有什么专注南京网站建设
  • 网站排名费用重庆建设部网站
  • 福田莲花北网站建设保定网站设计
  • 青州网站重庆seo网站推广工具
  • php网站开发门槛高吗Wordpress禁止搜索内容
  • 网站空间域名能不能自己续费山东微道商网络技术有限公司
  • 编译django做的网站开网店的流程步骤
  • 北京网站怎么建设视觉中国设计网