Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Artemis STOMP消息到期_Java_Spring_Activemq Artemis - Fatal编程技术网

Java Artemis STOMP消息到期

Java Artemis STOMP消息到期,java,spring,activemq-artemis,Java,Spring,Activemq Artemis,从文档中,我仍然不理解如何在broker.xml中为协议配置消息过期 我们有一个聊天项目,其中为每个聊天创建“多播”地址 topic/chat.1, topic/chat.2, ..., topic/chat.100000 除其他外,我们使用“”。 因此,即使在我们不受欢迎的项目中,每月的主题数量也可能超过50000,这会导致服务器内存不足,特别是当我们转到web控制台时 我希望删除过期邮件时,不必要的地址和队列将自动删除您可以使用中提到的过期延迟地址设置对所有传入邮件应用过期,例如: 30

从文档中,我仍然不理解如何在broker.xml中为协议配置消息过期

我们有一个聊天项目,其中为每个聊天创建“多播”地址

topic/chat.1, topic/chat.2, ..., topic/chat.100000
除其他外,我们使用“”。 因此,即使在我们不受欢迎的项目中,每月的主题数量也可能超过50000,这会导致服务器内存不足,特别是当我们转到web控制台时


我希望删除过期邮件时,不必要的地址和队列将自动删除

您可以使用中提到的
过期延迟
地址设置
对所有传入邮件应用过期,例如:


300000

如果您使用的是ActiveMQ Artemis 2.12.0或更高版本,则当自动创建的队列中没有使用者的最后一条消息过期时,默认情况下该队列将自动删除(如果相应的自动创建地址没有队列,则默认情况下也将自动删除)。

非常感谢!另一种方法是header-expires:(unix时间)。还有另一种情况,持久=true的队列不会被删除(这是合乎逻辑的)。但是,我找不到有关如何在客户端崩溃且未取消订阅时设置队列过期的信息。是的,您可以从客户端使用
expires
头,但这当然需要客户端更改。服务器端
到期延迟
不需要更改客户端。默认情况下,任何自动创建的消息计数和使用者计数为0的队列都将自动删除,即使是标记为持久的队列。最后,
过期延迟
适用于发送到匹配地址的所有消息,因此即使客户端崩溃并且没有取消订阅,消息最终也会过期,尽管对于持久订阅,队列将保持并继续接收消息。