Jms 如果消费者反应缓慢,生产商将如何被阻止

Jms 如果消费者反应缓慢,生产商将如何被阻止,jms,activemq,Jms,Activemq,我阅读了ActiveMQ文档中的以下引用: 使用同步消息传递的缺点是 如果有一个缓慢的消费者,生产商更有可能阻止 正在向发送消息 但我不明白生产者通常是如何被阻止的,因为消费者速度慢,因为我的理解是JMS客户机(生产者)将向ActiveMQ实例(代理)的队列发送消息,就是这样,现在生产者是自由的,或者换句话说,发送消息的生产者线程是自由完成/死亡的。然后会有一些其他JMS客户机(消费者)监听该队列,现在消息一到达代理,代理就会将其发送给监听消费者 现在,在所有这一切中,生产者依赖于消费者 当生产

我阅读了ActiveMQ文档中的以下引用:

使用同步消息传递的缺点是 如果有一个缓慢的消费者,生产商更有可能阻止 正在向发送消息

但我不明白生产者通常是如何被阻止的,因为消费者速度慢,因为我的理解是JMS客户机(生产者)将向ActiveMQ实例(代理)的队列发送消息,就是这样,现在生产者是自由的,或者换句话说,发送消息的生产者线程是自由完成/死亡的。然后会有一些其他JMS客户机(消费者)监听该队列,现在消息一到达代理,代理就会将其发送给监听消费者


现在,在所有这一切中,生产者依赖于消费者

当生产者向代理发送持久性消息时,代理必须将该消息写入磁盘,然后再向生产者发回确认信息,让生产者知道它的消息是安全存储的,以便以后发送给消费者。对于较慢的使用者,生产者可能最终会遇到代理已达到资源限制,并且无法将该消息存储在内存或磁盘队列中的情况,这一切都取决于代理的配置


生产者与其说与消费者有太多的联系,不如说它与代理上的资源有太多的联系,这些资源是在消息被消费之前保存消息所需的

当生产者向代理发送持久性消息时,代理必须将该消息写入磁盘,然后再向生产者发回确认信息,让生产者知道它的消息是安全存储的,以便以后发送给消费者。对于较慢的使用者,生产者可能最终会遇到代理已达到资源限制,并且无法将该消息存储在内存或磁盘队列中的情况,这一切都取决于代理的配置


生产者与其说与消费者有太多的联系,不如说它与代理上的资源有太多的联系,这些资源是在消息被消费之前保存消息所需的

哦,好的,所以一般来说,这是唯一的一种方式,生产者可能会被其中一个消费者的缓慢所阻止,否则我在问题中提到的生产者线程不会等待消息被消费的总体理解是正确的,对吗?只有当消息同步发送并且代理持有响应时,生产者才会等待,因为它没有空间存储响应。当然,正如我已经说过的,即使消息同步发送,制作人也会等待“代理”的响应/确认,而不是等待消息被某个消费者消费,对吗?我认为您需要重新阅读我的答案,并花一些时间阅读关于解耦消息的内容。关键是生产商和消费者彼此不了解。我也不认为我需要这样做,现在我对概念有了一个公平的理解,但只是因为我是一个初学者,所以我想找一个有经验的人来证实我的理解。哦,好的,所以一般来说,这是唯一一个生产者会被其中一个消费者的缓慢行为所阻止的方法,否则我在问题中提到的生产者线程不会等待消息被消费的整体理解是正确的,对吗?只有当消息同步发送并且代理持有响应时,生产者才会等待,因为它没有空间存储响应。当然,正如我已经说过的,即使消息同步发送,制作人也会等待“代理”的响应/确认,而不是等待消息被某个消费者消费,对吗?我认为您需要重新阅读我的答案,并花一些时间阅读关于解耦消息的内容。关键是生产者和消费者彼此不了解。我认为我也不需要这样做,现在我对概念有了相当的理解,但我只是一个初学者,所以我想找一个有经验的人来证实我的理解。