ActiveMQ持久消息(持久队列)配置问题
本文关键字:配置 问题 消息 ActiveMQ 队列 | 更新日期: 2023-09-27 18:03:33
让我首先描述一下我计划在我的服务中使用activemq的方式。
服务为其客户端提供API,并保证通知任何对其数据发生的变化感兴趣的人。例如,如果创建了一个新用户,每个API用户都应该能够收到关于它的通知,并且如果他们想查询新信息(或者以任何其他方式处理通知)。为了实现这些通知,我使用activemq。通知作为持久消息发送到相关的主题,例如"Service.User"
,因此每个想要保持新用户通知的人都可以简单地实现持久消费者来接收来自该主题的消息。
我需要的主题并不多,但是消息量可能相当高——一开始我预计每天大约有10 -20万个通知,并且在部署到生产环境时能够大幅增加这个数字。
实现了上面的场景后,我似乎面临着某种限制的问题。该服务在C#.Net
和Apache.NMS
中开发,ActiveMQ安装在Windows Server机器上。我没有时间优化我的代码,我确实为每一个发送的通知创建了一个新的连接/会话/生产者(因为c#中还不支持pooledconnectionfactory
)。但这不是一个问题,因为目前我不关心这种性能。
我遇到的问题是,当运行我的功能测试时,似乎我无法发送消息到activemq,一旦它达到约20k的消息。它只是挂起并导致我的事务超时(40秒)。它得到解决,当我删除所有主题的消息在http://localhost:8161/admin/topics.jsp管理页面。
你能告诉我在我的案例中应该使用的正确的activemq配置吗?
我所面临的问题的原因是什么?
也欢迎任何总体建议!
听起来好像你正在运行Producer Flow Control。如果您打算保留大量的持久消息,那么您可能需要为代理配置更多的空间,否则它将限制生产者,直到一些消费者出现来消费消息并释放空间。