当前位置: 首页 > 知识库问答 >
问题:

JMS预取缓存消息

蒲昀
2023-03-14

我正在尝试让JMS消费者致力于ActiveMQ服务器,但是我遇到了一些问题,这些解决方案似乎只会导致更多问题。

我正在使用Spring的DMLC(cacheLeve设置为CACHE\u连接)和CachingConnectionFactory(cachingConsumers设置为true),将Activemq自己的连接工厂包装在部署在Jboss AS中的Webapp中。

据此http://activemq.apache.org/what-is-the-prefetch-limit-for.html这样的设置应该将预取设置为0,但是在我们的测试中,当我们这样做时,我们注意到DMLC调用fetch命令的超时为-1,这意味着它永远等待来自代理的消息,这反过来会导致web应用程序在我们试图从Jboss取消部署时挂起,因此它永远不会真正被取消部署。

将预取更改为更高的值会导致消息卡在Activemq中,如第6点所述http://tmielke.blogspot.se/2012/03/camel-jms-with-transactions-lessons.html消费者从不使用他们预取的消息。

不管你怎么做,你都会遇到一些问题。作为最后的手段,我在经纪人端尝试了AbortSlowAck消费者策略设置,但这会导致这些消费者经常被中止,听起来并不是这个设置的真正目的。

有人遇到过同样的问题吗?有什么方法可以设置缓存的消费者,使其具有高预取性能,而不会遇到问题?

共有1个答案

葛意远
2023-03-14

在DMLC的连接工厂中缓存消费者并没有真正的好处,因为消费者通常都是长寿命的。当使用动态缩放(可调并发)时,它会导致问题,因为消费者被缓存,任何预取的消息都会被卡在缓存中。关闭CF中的使用者缓存。

有关更完整的描述,请参阅此答案。

 类似资料:
  • 一个网页的展现所依赖的资源可以大致分为两类:一、静态资源,比如 JS,CSS,前端渲染的 HTML 文件,样式文件中可能使用到的字体、背景图片等等。它们的作用是保证页面的前端功能和样式正常工作。这些资源只有在网站更新上线的时候才会发生变化,因此它们的内容和数量都是确定且可控的,更新频率较低,重复使用率高;二、动态资源,比如各种接口请求返回的各种数据,后端渲染的 HTML 页面,内容中的图片、视频等

  • 问题内容: 在我的应用程序中,有一点我需要对大块连续的内存数据块(100 MB的内存)执行计算。我当时的想法是继续预取程序将来会接触的部分块,以便在我对该部分执行计算时,数据已经在缓存中。 有人可以给我一个简单的示例,说明如何使用gcc实现这一目标吗?我在某处阅读,但不知道如何正确使用它。还要注意,我有一个多核系统,但是每个核都将并行处理不同的内存区域。 问题答案: 使用内置函数作为低级指令的接口

  • get 获取普通类型的值 // 获取key 为 gender 的数据 await this.app.redis.get('gender') type 获取数据类型 ctx.body = await this.app.redis.type('name') 返回 string lrange 获取 list 类型中所有数据 // 表示获取数组中所有的值 0 ,-1 ctx.body = await th

  • 我正在使用Spring AMQP与RabbitMQ一起工作。以下是我的配置: 正如您所看到的,prefetchCount是1000。 我想知道预取的消息是否在消费者中并行处理;也就是说,多个线程调用onMessage(消息消息)方法。或者消息是按顺序处理的;也就是说,一个线程迭代预取的消息,并以连续的方式调用每个消息的onMessage(消息消息消息)方法。 我应该注意到,处理的顺序对我来说并不重

  • 我有一个Spring应用程序在独立的JBoss EAP 6.2中运行(带有嵌入式HornetQ提供程序)。 消息被成功地放在队列中(我可以在jboss eap-6.2\独立\data\MessagingJournal\hornetq-data-1.hq中看到它们,因为队列是持久的),但不会被侦听器拾取(侦听器中的断点不会被命中)。我怀疑配置中缺少或错误的东西,但看不出是什么。JBoss启动时没有任

  • 我想做一些反应。但为此,我必须缓存在bot启动之前发送的消息。我用,但到目前为止还没有成功。 我当前的代码: