1
7
如果您在事务范围内执行队列操作,并且发生回滚,则在事务解析后,队列和消息将与事务开始前一样显示。换句话说,根本没有变化。 不过,在高容量场景中,通常在单个队列上有多个事务读写器,并且它们不会为每个解队列或排队锁定整个队列。 这些读取器和写入器将在解析注定失败的事务时,以事务方式将项插入队列或从队列中出列项。在这种情况下,其他队列项可能出现或消失(或同时出现或消失)。 如果在原始事务回滚之后,再次从队列中出列,则 可以 得到原始信息,但你不能。在高容量、高并发性的场景中,可能是另一个读者在您的代码执行此操作之前已经提取了消息。 |
2
4
Rollback将消息留在队列中,并将其放置以供重新传递。 但是,当达到重新交付尝试的(可配置的)限制时,该消息将放在“死信队列”中。 发生这种情况的一个典型例子是s.c.“有害消息”:由于基本和非暂时性问题(例如无效格式、缺少字段等)而无法处理的消息。 因此,在回滚(并将消息放回队列)之前,请确保考虑错误是否是暂时性的(比如到后端的连接断开)。 在后一种情况下,最好吞咽消息并记录错误或触发其他警报。否则,消息将不必要地消耗处理能力和队列基础结构。 高温高压 家伙 |
3
4
要回答这个主题中的几个具体问题。。。
|