我的节目将收到相当缓慢的消息;我希望他们坚持到队列中,直到我收到所有这些并承认所有这些。我收到一堆消息之前我不知道是否有足够的消息。
我的问题:队列会阻塞,在传递第二个消息之前等待第一条消息的确认吗?
答案 0 :(得分:0)
我使用示例生产者/消费者代码对此进行了测试。消费者实际上有一些代码(如果你切换到ClientAcknowledge)。它接收一堆消息(其中10个)并且只响应最后一个消息。
答案 1 :(得分:0)
将确认模式设置为Session.CLIENT_ACKNOWLEDGE
时,您可以获得所需数量的消息。消息将被锁定在服务器上,因此其他消费者无法同时检索它们。所以答案是否定的,队列不会阻塞(甚至可能有特定于提供者的设置可以做到这一点,我不知道)。
但是,您只能同时确认所有内容。因此,当您收到10条消息,并且您确认其中一条消息(无关紧要)时,所有消息都将被确认。