`
andye
  • 浏览: 1522 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

印记云打印如何通过消息重试机制保证打印指令最终送达

 
阅读更多

问题:

   印记云打印设备终端对网络依赖比较大,只要有异常,通过推送的消息不能实时到达设备终端,导致终端不能及时收到消息、业务功能没有完成,用户体验度就会下降。

解决方案:

  在阐述方案前,需了解RabbitMQ几个概念。

  消息的TTL和死信Exchange,通过这两者的组合来实现重试需求。

  消息的TTL(Time To Live)

  消息的TTL就是消息的存活时间。RabbitMQ可以对队列和消息分别设置TTL。对队列设置就是队列没有消费者连着的保留时间,也可以对每一个单独的消息做单独的设置。超过了这个时间,我们认为这个消息就死了,称之为死信。如果队列设置了,消息也设置了,那么会取小的。所以一个消息如果被路由到不同的队列中,这个消息死亡的时间有可能不一样(不同的队列设置)。这里单讲单个消息的TTL,因为它才是实现延迟任务的关键。

  可以通过设置消息的expiration字段或者x-message-ttl属性来设置时间,两者是一样的效果。只是expiration字段是字符串参数,所以要写个int类型的字符串:

byte[] messageBodyBytes = "Hello, world!".getBytes();

AMQP.BasicProperties properties = new AMQP.BasicProperties();

properties.setExpiration("60000");

channel.basicPublish("my-exchange", "routing-key", properties, messageBodyBytes);

  当上面的消息扔到队列中后,过了60秒,如果没有被消费,它就死了。不会被消费者消费到。这个消息后面的,没有“死掉”的消息对顶上来,被消费者消费。死信在队列中并不会被删除和释放,它会被统计到队列的消息数中去。单靠死信还不能实现延迟任务,还要靠Dead Letter Exchange。

Dead Letter Exchanges

Exchage的概念在这里就不在赘述,可以从这里进行了解。一个消息在满足如下条件下,会进死信路由,记住这里是路由而不是队列,一个路由可以对应很多队列。

1. 一个消息被Consumer拒收了,并且reject方法的参数里requeue是false。也就是说不会被再次放在队列里,被其他消费者使用。

2. 上面的消息的TTL到了,消息过期了。

3. 队列的长度限制满了。排在前面的消息会被丢弃或者扔到死信路由上。

Dead Letter Exchange其实就是一种普通的exchange,和创建其他exchange没有两样。只是在某一个设置Dead Letter Exchange的队列中有消息过期了,会自动触发消息的转发,发送到Dead Letter Exchange中去。

印记云打印就是通过诸如此类思路保证消息最终到达。

分享到:
评论

相关推荐

    去掉教育版打印印记

    需要注意的是,某些版本的CAD软件可能有更复杂的保护机制,使得直接修改打印样式无法完全去除印记。这时,可以考虑以下方法: - **利用第三方工具**:市面上有一些专门用于去除CAD教育版印记的软件,它们可能通过...

    针式打印机打印针测试(并口)

    在“针式打印机打印针测试(并口)”中,该程序会通过并口向打印机发送指令,控制打印针的动作,执行测试。 使用“pintest”进行测试的过程一般如下: 1. 将程序解压并运行,确保打印机已正确连接至计算机的并口。...

    zpl ii指令 斑马发印记 程序设计指南

    在编写ZPL II程序时,需要考虑打印机的特性、标签纸的规格以及打印内容的布局,以确保最终的打印效果满足需求。此外,为了优化打印质量,还可以通过调整浓度设置`^MD`来控制颜色的深浅,以及使用`^JC`进行纸张大小的...

    去除教育版印记2004-2014

    cad去教育版打印戳记字印的软件,很方便的去除cad中带的教育印记和添加教育印记。 功能: 1.强制添加教育版打印戳记 2.强制去除教育版打印戳记 使用方法: 先打开cad,再使用该工具点击应用,再打开要打开的cad最后...

    去除CAD打印“教育版本打印戳记”的插件

    这种插件通常通过修改CAD软件的内部指令或数据流,以防止打印过程中的戳记插入。然而,值得注意的是,使用此类插件可能违反软件许可协议,因为它改变了软件原有的行为,用户在使用前应确保了解可能的法律风险。 ...

    去除CAD教育印记

    如果你已经购买了正式版的AutoCAD,通常通过激活软件并更新到最新版本,教育印记会自动消失。这是因为正式版的软件不会包含教育版的限制和标记。 2. **修改配置设置**: 在某些情况下,教育版的CAD可能会允许用户...

    CAD去教育版印记

    教育版CAD软件在设计图形时,会在屏幕截图、打印输出或者保存的文件中插入明显的“EDU”或“Education”字样,这可能对专业设计师或企业来说并不理想,因为这些印记可能会影响设计的展示效果。因此,出现了专门的...

    去教育版印记软件

    因此,应鼓励用户在经济条件允许的情况下,通过购买正版软件,享受更好的技术支持和服务,以保证设计活动的合法性和高效性。 综上所述,去教育版印记软件的出现,反映了特定市场需求的存在。此类工具在一定程度上...

    行业分类-设备装置-串行打印头型记录装置.zip

    1. 数据接收:来自上位机的打印指令通过接口(如USB、串口RS-232或以太网)传输到记录装置。 2. 数据处理:微处理器将接收到的并行数据转换为适合打印头的串行格式。 3. 打印头驱动:根据处理后的数据,打印头的针...

    票据打印demo

    6. 设备驱动:确保安装了正确的打印机驱动程序,这对于保证打印质量和正确性至关重要。有些情况下,可能需要开发自定义驱动以适应特殊需求。 在"票据打印demo"的压缩包中,可能包含了以下文件: 1. 源代码文件:如...

    CAD去除印记

    软件识别出含有教育戳记的部分,并对这些部分进行特定的处理,可以是替换原有戳记,也可以是进行遮挡,从而在打印输出或PDF文件导出时,实现无印记的最终效果。这样,即使是使用教育版软件,用户也能输出专业且清洁...

    cad去教育版印记软件

    然而,教育版软件通常会在最终输出的图形上添加特定的水印或印记,表明这些文件仅限于教育和学习目的。这就引出了一个需求,即cad去教育版印记软件的出现。 教育版印记通常包含文字、图案或版权信息,它的目的在于...

    麦肯光明品牌印记.doc

    【品牌印记】是品牌管理中的核心概念,它旨在定义品牌的本质和个性,以便在不同的市场环境中保持品牌的一致性和影响力。品牌印记不仅关乎消费者对品牌的认知,也反映了品牌所有者对未来发展的愿景。以下是对品牌印记...

    cad打印标记去除

    教育版打印去掉在图上,用这个可以去掉打印记号

    雨的印记 flash

    雨的印记 漂亮的 flash;清新的flash

    CAD去教育版印记插件X32

    这说明插件通过某种方式修改了AutoCAD的运行环境或者接口,防止了教育版印记的显示。不过,值得注意的是,使用此类插件可能违反软件许可协议,因为教育版软件通常禁止用于商业活动,去除印记可能被视为非法篡改软件...

    强制增加去除教育印记

    强制增加去除教育印记,方便好用,去除烦人的教育办印记

    强制去除教育印记工具以及使用方法

    在CAD(Computer-Aided Design)领域,很多设计软件为了区分商业版与教育版,会在教育版制作或打印出的设计图纸上自动添加“教育版”或类似的文字标识,以防止教育版软件制作的设计图用于商业用途。然而,在某些情况...

Global site tag (gtag.js) - Google Analytics