JMS规范目前支持两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic)
在点对点模式中,消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。
消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
这一系列操作是怎么实现的?一条消息被消费之后,是怎么删除的?是怎么保证一条消息只被一个消费者消费的?
你有100块,放在桌子上,过来一个人,把100块钱拿走了,正常情况下,他是拿不到的第二次的。
但是,为了拿钱失败,比如,你通知你老婆来把这100拿走,但是你老婆来了,没拿到,然后她会告诉你没拿到,你就只能再把100块钱放在桌子上,重点是
你第二次放的100块和第一次放的100块是同一张钞票呢,,,所以,你放好了,通知你老婆再来拿,然后这100块就彻底消失了,,
如果你老婆拿钱不成功,你就要一直生产100块,而且和第一张100块是同一张,防伪编号都是一样的,,,明白了吗,哈哈
最简单可以通过加锁。事务等方式来控制只有一个客户端消费