gpt4 book ai didi

java - Spring AMQP 中的 SimpleMessageListenerContainer 和 DirectMessageListenerContainer 有什么区别?

转载 作者:行者123 更新时间:2023-11-29 07:24:36 28 4
gpt4 key购买 nike

Spring AMQP 中的 SimpleMessageListenerContainerDirectMessageListenerContainer 有什么区别?我检查了他们的两个文档页面,SimpleMessageListenerContainer 几乎没有解释内部工作原理,DirectMessageListenerContainer 有以下解释:

The SimpleMessageListenerContainer is not so simple. Recent changes to the rabbitmq java client has facilitated a much simpler listener container that invokes the listener directly on the rabbit client consumer thread. There is no txSize property - each message is acked (or nacked) individually.

我不太明白这些是什么意思。它说 直接在 rabbit 客户端消费者线程上调用监听器的监听器容器。如果是这样,那么 SimpleMessageListenerContainer 是如何进行调用的?

我写了一个小应用程序并使用了 DirectMessageListenerContainer 只是为了看看区别,我切换到 SimpleMessageListenerContainer,但据我所知,在 RabbitMQ 上没有区别边。从 Java 方面来看,区别在于方法(SimpleMessageListenerContainer 提供了更多)和日志(DirectMessageListenerContainer 记录了更多内容)

我想知道使用其中每一个的场景。

最佳答案

SMLC 为每个轮询内部队列的消费者(并发)提供了一个专用线程。当一条新消息到达客户端线程上的消费者时,它会被放入内部队列,消费者线程会拾取它并调用监听器。这是客户端早期版本提供多线程所必需的。对于较新的客户端,这不是问题,因此我们可以直接调用监听器(因此得名)。

除了 txSize 之外,还有一些其他差异。

参见 Choosing a Container .

关于java - Spring AMQP 中的 SimpleMessageListenerContainer 和 DirectMessageListenerContainer 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56438819/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com