zoukankan      html  css  js  c++  java
  • ActiveMQ 确认机制ACK(收到消息后,应该有一个回应也就是确认答复)

    一、ACK机制简介

    ACK (Acknowledgement),即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。

    JMS API中约定了Client端可以使用四种ACK_MODE,在javax.jms.Session接口中:

    1 AUTO_ACKNOWLEDGE = 1               自动确认
    2 CLIENT_ACKNOWLEDGE = 2             客户端手动确认   
    3 DUPS_OK_ACKNOWLEDGE = 3            自动批量确认
    4 SESSION_TRANSACTED = 0             事务提交并确认
    5 INDIVIDUAL_ACKNOWLEDGE = 4         单条消息确认(AcitveMQ补充了一个自定义的ACK_MODE)

    Client端指定了ACK_MODE,但是在Client与broker在交换ACK指令的时候,还需要告知ACK_TYPE,ACK_TYPE表示此确认指令的类型,不同的ACK_TYPE将传递着消息的状态,broker可以根据不同的ACK_TYPE对消息进行不同的操作。比如Consumer消费消息时出现异常,就需要向broker发送ACK指令,ACK_TYPE为"REDELIVERED_ACK_TYPE",那么broker就会重新发送此消息。在JMS API中并没有定义ACT_TYPE,因为它通常是一种内部机制,并不会面向开发者。ActiveMQ中定义了如下几种ACK_TYPE(参看MessageAck类):

    1 DELIVERED_ACK_TYPE = 0          消息"已接收",但尚未处理结束
    2 STANDARD_ACK_TYPE = 2           “标准”类型,通常表示为消息"处理成功",broker端可以删除消息了
    3 POSION_ACK_TYPE = 1             消息"错误",通常表示"抛弃"此消息,比如消息重发多次后,都无法正确处理时,消息将会被删除或者DLQ(死信队列)
    4 REDELIVERED_ACK_TYPE = 3        消息需"重发",比如consumer处理消息时抛出了异常,broker稍后会重新发送此消息
    5 INDIVIDUAL_ACK_TYPE = 4         表示只确认"单条消息",无论在任何ACK_MODE下    
    6 UNMATCHED_ACK_TYPE = 5          BROKER间转发消息时,接收端"拒绝"消息

    到目前为止,我们已经清楚了大概的原理: Client端在不同的ACK_MODE时,将意味着在不同的时机发送ACK指令,每个ACK Command中会包含ACK_TYPE,那么broker端就可以根据ACK_TYPE来决定此消息的后续操作.。

    二、ACK机制实现

    1、在配置文件中配置应答方式

    1 <!-- 应答模式是 INDIVIDUAL_ACKNOWLEDGE -->  
    2 <property name="sessionAcknowledgeMode" value="4"></property>

    2、在接收的代码中,手动确认

    给消息发送者一个回应“我收到你的消息了,你可以出队了”,activemq在没有配置应答方式的时候,他是默认确认的。但是需求的各不同,就需要有不同的配置

    1 // 只要被确认后  就会出队,接受失败没有确认成功,会在原队列里面
    2 textMsg.acknowledge();  
  • 相关阅读:
    基本技能训练之线程
    关于UEditor的使用配置(图片上传配置)
    PAT 乙级练习题1002. 写出这个数 (20)
    codeforces 682C Alyona and the Tree DFS
    codeforces 681D Gifts by the List dfs+构造
    codeforces 678E Another Sith Tournament 概率dp
    codeforces 680E Bear and Square Grid 巧妙暴力
    codeforces 678D Iterated Linear Function 矩阵快速幂
    codeforces 679A Bear and Prime 100 交互
    XTUOJ 1248 TC or CF 搜索
  • 原文地址:https://www.cnblogs.com/sjshare/p/8915877.html
Copyright © 2011-2022 走看看