• 静思
  • 吴言片语
    • 吴言
    • 片语
    • 杂七杂八
  • 死于青春
    • 一路走好
  • 乌合麒麟
  • 纪念
    • 5.12
    • 3.23
  • GitHub
    • A List of Post-mortems
    • The Art of Command Line
  • 关于
    • Privacy Policy

程序员的信仰

金鳞岂是池中物,一遇风云便化龙

HOME » 技术生活 » 有关AMQ的DLQ

有关AMQ的DLQ

2013 年 12 月 4 日 @ 下午 6:33 by Jay | 被踩了 5,083 脚

昨天发现系统的一些业务异常,查日志发现是出现了死锁,且在那段时间导致自动支付的jms listener中也抛了锁超时异常。今天尝试解决此问题,第一个想到的是将目前我们使用的acknowlege mode从auto改为manual,然后在代码中手动触发acknowlege,但是此方法代码修改量较大。经过一番google,在AMQ中找到了这么一个特殊的队列:DLQ(http://activemq.apache.org/redelivery-policy.html),默认1秒间隔,重发6次。经过尝试,只要将acknowledge mode改为“transacted”即可,简单科学,另外重发间隔、次数均可在spring中进行配置,代码稍后提交

另外值得注意的是,并不是所有的消息队列都需要重发,而应该根据具体的业务需求。比如我们的短信发送已自己通过数据库实现了重发,在jms中就不该再使用。当然,如果之前就知道DLQ那我们完全不必自己实现,此为一处败笔,有时间会使用DLQ对短信发送机制进行简化

p.s. DLQ配置后在AMQ控制台中可看到:

AMQ DLQ

p.s.2 在SOF上补充了一个相关问题:http://stackoverflow.com/a/20374297/365041,配置大致如下:

<amq:connectionfactory brokerURL="..." id="connectionFactory">
    <amq:redeliverypolicymap>
        </amq:redeliverypolicymap><amq:redeliverypolicymap><!-- Don't know why a double nesting -->
            <amq:defaultentry>
                <!-- default policy, 5 times with 10s delay each -->
                <amq:redeliverypolicy maximumRedeliveries="5" initialRedeliveryDelay="10000"></amq:redeliverypolicy>
            </amq:defaultentry>
            <amq:redeliverypolicyentries>
                <!-- three times with exponential back-off, that is, 1s, 2s, 4s, 8s. "queue" references to the "physicalName" defined in amq:queue -->
                <amq:redeliverypolicy queue="queue.thread.autopay" maximumRedeliveries="3" initialRedeliveryDelay="1000" backOffMultiplier="2" useExponentialBackOff="true"></amq:redeliverypolicy>
                <!-- another policy mapping -->
                <amq:redeliverypolicy queue="queue.thread.doc" maximumRedeliveries="2" initialRedeliveryDelay="4000"></amq:redeliverypolicy>
            </amq:redeliverypolicyentries>
        </amq:redeliverypolicymap>
    
</amq:connectionfactory>


-- EOF --

除非注明(如“转载”、“[zz]”等),本博文章皆为原创内容,转载时请注明: 「转载自程序员的信仰©」
本文链接地址:有关AMQ的DLQ

分享

  • 点击分享到 Facebook (在新窗口中打开) Facebook
  • 点击以分享到 X(在新窗口中打开) X
  • 更多
  • 点击分享到Reddit(在新窗口中打开) Reddit
  • 点击分享到Telegram(在新窗口中打开) Telegram
  • 点击以在 Mastodon 上共享(在新窗口中打开) Mastodon

赞过:

赞 正在加载……

相关

Posted in: 技术生活 Tagged: amq, tips
← 在Apache mpm-worker下跑PHP
牛刀小试:bash编程 →

android (9) apple (20) augmentum (9) Beijing (21) bt (8) career (28) coding (38) firefox (10) google (36) hibernate (11) ibm (11) iphone (10) java (93) linux (16) m$ (26) mac (58) macos (27) nazca (9) olympics (8) oo (8) playstation (10) rip (8) Shanghai (39) spring (9) tips (45) tommy emmanuel (8) ubuntu (12) usa (23) windows (9) 北航 (17) 博客 (29) 吐槽 (8) 周末 (9) 和谐社会 (26) 小资 (11) 愤青 (40) 方言 (10) 朋友 (77) 歌词 (8) 烟酒不分家 (18) 爱国 (19) 爱情 (8) 犯二 (15) 破解 (8) 足球 (11)

烫手山芋

  • 再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~ - 被踩了 27,349 脚
  • 生活,就是一个期待跟着一个期待 - 被踩了 21,357 脚
  • 星巴克饮品缩写大全(Starbucks Drink ID Codes)[zz] - 被踩了 18,407 脚
  • 从一个全角冒号说一下我为什么不感冒iOS - 被踩了 14,316 脚
  • 有关Character.isLetter()和Character.isLetterOrDigit() - 被踩了 13,590 脚

刚拍的砖

  • leo 发表在《再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~》
  • 花 发表在《再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~》
  • 无名氏 发表在《从一个全角冒号说一下我为什么不感冒iOS》
  • Jay 发表在《Mac OS geek级问题》
  • Wei Wang 发表在《再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~》

随便看看

  • Hyper Chord -Tommy Emmanuel 20099 年 ago
  • CSDN这回一石激起千层浪了9 年 ago
  • 大腕儿——北京土话追溯之三 [zz]9 年 ago
  • 位图(bitmap)排序4 年 ago
  • 有钱人啊……20 年 ago

文以类聚

光阴似箭

其他操作

  • 登录
  • 条目 feed
  • 评论 feed
  • WordPress.org

Copyright © 2025 程序员的信仰.

Jay's Omega WordPress Theme by Jay

 

正在加载评论...
 

    %d