activemq设置了消息确认以及超时重发,现在的问题是,消费端进程卡死,首先超时之后,消息重发了一次,然后把卡死的进程结束之后,又触发了rollback,导致消息又重发了一次,我想问问activemq重发消息时,不会判断是否处理过相同messge_id的消息,还是说重发时message_id变了,还是有什么地方可以设置的?谢谢
activemq设置了消息确认以及超时重发,现在的问题是,消费端进程卡死,首先超时之后,消息重发了一次,然后把卡死的进程结束之后,又触发了rollback,导致消息又重发了一次,我想问问activemq重发消息时,不会判断是否处理过相同messge_id的消息,还是说重发时message_id变了,还是有什么地方可以设置的?谢谢
一般来说mq消息传递过程中消息传递的保证性一般有三种状态
一般来说要实现消息精确只传递一次是比较困难的,所以基本上基本mq的接口逻辑都会做自己做幂等性处理.我也没使用activemq,不确定messge_id机制,不过一般不会变,你可以自己尝试一下.你也可以自己生成唯一键与消息一起发送.每次成功消费,就对这个唯一键进行记录.防止重复消费,或者直接在存储层进行处理,比如设置唯一键,当出现重复消费时,只会插入失败,并不会执行成功