如果一个代理实例出现故障,ActiveMQ 中的故障转移传输会很好地工作——生产者会自动切换到下一个代理实例,这很好。
如果代理达到它的内存限制(通过systemUsage
activemq.xml 中的属性配置),我期待相同的行为。但是在这种情况下,它只是开始在日志中抛出“内存已满”警告,但jmsTemplate.convertAndSend
生产者应用程序中的方法只是挂起。
我试图sendFailIfNoSpace="true"
为 systemUsage 属性设置选项。在这种情况下,生产者应用程序刚刚开始抛出org.springframework.jms.ResourceAllocationException: Usage Manager Store is Full
异常,convertAndSend
并且无论如何都没有切换到好的代理实例。
有人可以建议如何在异常和/或“内存已满”的情况下进行故障转移吗?