<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>archive</title><link>https://archive-w.netlify.app/doc/framework/mq/activemq/</link><description>Recent content on archive</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://archive-w.netlify.app/doc/framework/mq/activemq/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://archive-w.netlify.app/doc/framework/mq/activemq/acmq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://archive-w.netlify.app/doc/framework/mq/activemq/acmq/</guid><description>&lt;h2 id="引入消息队列后-如何保证高可用性">
 引入消息队列后 如何保证高可用性
 &lt;a class="anchor" href="#%e5%bc%95%e5%85%a5%e6%b6%88%e6%81%af%e9%98%9f%e5%88%97%e5%90%8e-%e5%a6%82%e4%bd%95%e4%bf%9d%e8%af%81%e9%ab%98%e5%8f%af%e7%94%a8%e6%80%a7">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>持久化、事务、签收、 以及带复制的 Leavel DB + zookeeper 主从集群搭建&lt;/p>
&lt;/blockquote>
&lt;h2 id="异步投递---async--send">
 异步投递 Async send
 &lt;a class="anchor" href="#%e5%bc%82%e6%ad%a5%e6%8a%95%e9%80%92---async--send">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>对于一个慢消费者，使用同步有可能造成堵塞，消息消费较慢时适合用异步发送消息 activemq 支持同步异步 发送的消息，默认异步。当你设定同步发送的方式和 未使用事务的情况下发持久化消息，这时是同步的。 如果没有使用事务，且发送的是持久化消息，每次发送都会阻塞一个生产者直到 broker 发回一个确认，这样做保证了消息的安全送达，但是会阻塞客户端，造成很大延时 。 在高性能要求下，可以使用异步提高producer 的性能。但会消耗较多的client 端内存，也不能完全保证消息发送成功。在 useAsyncSend = true 情况下容忍消息丢失
通过回调感知消息正常到达。&lt;/p>
&lt;/blockquote>
&lt;h2 id="延迟投递和定时投递">
 延迟投递和定时投递
 &lt;a class="anchor" href="#%e5%bb%b6%e8%bf%9f%e6%8a%95%e9%80%92%e5%92%8c%e5%ae%9a%e6%97%b6%e6%8a%95%e9%80%92">#&lt;/a>
&lt;/h2>
&lt;h2 id="activemq-的消息重试机制">
 ActiveMQ 的消息重试机制
 &lt;a class="anchor" href="#activemq-%e7%9a%84%e6%b6%88%e6%81%af%e9%87%8d%e8%af%95%e6%9c%ba%e5%88%b6">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>超过6次标记为有毒消息，broker将消息放入死信队列&lt;/p>
&lt;/blockquote>
&lt;h2 id="如何保证消息不被重复消费幂等性的问题">
 如何保证消息不被重复消费，幂等性的问题
 &lt;a class="anchor" href="#%e5%a6%82%e4%bd%95%e4%bf%9d%e8%af%81%e6%b6%88%e6%81%af%e4%b8%8d%e8%a2%ab%e9%87%8d%e5%a4%8d%e6%b6%88%e8%b4%b9%e5%b9%82%e7%ad%89%e6%80%a7%e7%9a%84%e9%97%ae%e9%a2%98">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>如果消息是做数据库的插入操作，给这个消息一个唯一的主键，那么就算出现重复消费的情况，就会导致主键冲突，避免数据库出现脏数据 。 如果不是，可以用redis 等的第三方服务，给消息一个全局 id ，只要消费过的消息，将 id ，message 以 K-V 形式写入 redis ，那消费者开始消费前，先去 redis 中查询有没消费的记录即可。&lt;/p>
&lt;/blockquote>
&lt;h2 id="reference">
 Reference
 &lt;a class="anchor" href="#reference">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>


 &lt;a href="https://note.youdao.com/web/#/file/WEB1277b8f2da90c224c2c7a6a3175b2ea5/note/54AA1E33A4AE4AC9BA77EAA4384370B4/" rel="noopener" target="_blank">https://note.youdao.com/web/#/file/WEB1277b8f2da90c224c2c7a6a3175b2ea5/note/54AA1E33A4AE4AC9BA77EAA4384370B4/&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>