问题:
印记云打印设备终端对网络依赖比较大,只要有异常,通过推送的消息不能实时到达设备终端,导致终端不能及时收到消息、业务功能没有完成,用户体验度就会下降。
解决方案:
在阐述方案前,需了解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程序时,需要考虑打印机的特性、标签纸的规格以及打印内容的布局,以确保最终的打印效果满足需求。此外,为了优化打印质量,还可以通过调整浓度设置`^MD`来控制颜色的深浅,以及使用`^JC`进行纸张大小的...
cad去教育版打印戳记字印的软件,很方便的去除cad中带的教育印记和添加教育印记。 功能: 1.强制添加教育版打印戳记 2.强制去除教育版打印戳记 使用方法: 先打开cad,再使用该工具点击应用,再打开要打开的cad最后...
这种插件通常通过修改CAD软件的内部指令或数据流,以防止打印过程中的戳记插入。然而,值得注意的是,使用此类插件可能违反软件许可协议,因为它改变了软件原有的行为,用户在使用前应确保了解可能的法律风险。 ...
如果你已经购买了正式版的AutoCAD,通常通过激活软件并更新到最新版本,教育印记会自动消失。这是因为正式版的软件不会包含教育版的限制和标记。 2. **修改配置设置**: 在某些情况下,教育版的CAD可能会允许用户...
教育版CAD软件在设计图形时,会在屏幕截图、打印输出或者保存的文件中插入明显的“EDU”或“Education”字样,这可能对专业设计师或企业来说并不理想,因为这些印记可能会影响设计的展示效果。因此,出现了专门的...
EduPlotStamp的工作原理是通过在打印预览阶段捕获图形信息,并对包含教育戳记的部分进行处理,替换或遮挡这些标记,从而在最终的打印输出或PDF转换中实现无印记的效果。这样,即便是在使用教育版AutoCAD的环境下,也...
1. 数据接收:来自上位机的打印指令通过接口(如USB、串口RS-232或以太网)传输到记录装置。 2. 数据处理:微处理器将接收到的并行数据转换为适合打印头的串行格式。 3. 打印头驱动:根据处理后的数据,打印头的针...
这种软件通常通过解析CAD文件格式,找到并替换那些添加印记的特定代码或图像,从而实现去印记的功能。 描述中提到,该软件不仅在打开图纸时可以去除教育版印记,还能确保在打印输出时也不会显示这些字样。这意味着...
6. 设备驱动:确保安装了正确的打印机驱动程序,这对于保证打印质量和正确性至关重要。有些情况下,可能需要开发自定义驱动以适应特殊需求。 在"票据打印demo"的压缩包中,可能包含了以下文件: 1. 源代码文件:如...
在某些情况下,例如个人学习或小型非营利项目中,用户可能希望去除这些印记以获得更整洁的打印效果。然而,值得注意的是,未经许可去除商业软件的教育版印记可能违反软件许可协议,因此在操作前应确保了解并遵守相应...
【品牌印记】是品牌管理中的核心概念,它旨在定义品牌的本质和个性,以便在不同的市场环境中保持品牌的一致性和影响力。品牌印记不仅关乎消费者对品牌的认知,也反映了品牌所有者对未来发展的愿景。以下是对品牌印记...
教育版打印去掉在图上,用这个可以去掉打印记号
雨的印记 漂亮的 flash;清新的flash
这说明插件通过某种方式修改了AutoCAD的运行环境或者接口,防止了教育版印记的显示。不过,值得注意的是,使用此类插件可能违反软件许可协议,因为教育版软件通常禁止用于商业活动,去除印记可能被视为非法篡改软件...
强制增加去除教育印记,方便好用,去除烦人的教育办印记
在CAD(Computer-Aided Design)领域,很多设计软件为了区分商业版与教育版,会在教育版制作或打印出的设计图纸上自动添加“教育版”或类似的文字标识,以防止教育版软件制作的设计图用于商业用途。然而,在某些情况...