Man*_*glu 6 transactions message-queue high-volume ibm-mq
我从WebSPhere MQ队列收到消息.我尝试处理,如果我收到一些异常,我想将消息回滚到MQ队列.
我也没有遇到任何问题.消息会怎么样?它是否排在队列的底部?
如果我尝试从队列中拉出一条消息,我会收到相同的消息,我回滚了吗?
可能是什么行为?我想通常在高容量队列场景中知道这种行为?
感谢任何输入.
谢谢,Manglu
如果您正在事务范围内执行队列操作,并且发生回滚,则在事务解析队列之后,消息将像事务开始之前一样显示.换句话说,根本没有变化.
但是,在高容量方案中,通常在单个队列上具有多个事务读取器和写入器,并且它们不会为每个队列或队列锁定整个队列.
这些读者和编写者将把项目插入到队列中,或者在事务中解析队列中的项目.在这种情况下,其他队列项可能会出现或消失(或两者).
如果在回滚原始事务后再次从队列中出列,则可能会收到原始消息,但您可能不会.在高容量,高并发的情况下,其他读者可能会在您的代码执行之前撤消该消息.
小智 6
回滚将消息留在队列中并将其放入重新传递。
但是,当达到重新传递尝试的(可配置)限制时,消息将被放置在“死信队列”中。
发生这种情况的一个典型示例是 sc“有毒消息”:由于基本和非暂时性问题(例如无效格式、缺少字段等)而无法处理的消息。
因此,在回滚(并将消息放回到队列中)之前,请务必考虑错误是否是暂时的(例如与后端的连接被破坏)。
在后一种情况下,最好忽略该消息并记录错误或触发其他警报。否则,消息将不必要地消耗处理能力和队列基础设施。
华泰
盖伊
要回答该线程中的几个具体要点......
| 归档时间: |
|
| 查看次数: |
12956 次 |
| 最近记录: |