【发布时间】:2020-11-24 17:04:58
【问题描述】:
我是JavaLite 开源项目的维护者。其中一部分称为Async,它是Apache ActiveMQ Artemis 代理的简化前端。它的存在是为了让 Artemis 更容易嵌入到进程的内存中,也为处理“命令”增加了一层便利。我们已经在生产中使用了很多年,几乎没有出现任何问题。
但是,JavaLite 项目本身具有多次启动/停止代理的测试,并为不同的测试使用不同的实例。 Here's the source code 的 Async 和 source code of tests。
如您所见,测试创建代理的一个新实例,使用它,然后停止它。
现在问题。通常,在我的笔记本电脑和较旧的 CI 环境中,构建运行测试都会成功,没有问题。我的笔记本电脑和以前的 CI 服务器从来没有遇到过任何问题。但是,我们正在构建一个新的 CI 服务器,并且该测试在那里失败并出现随机数量的逻辑错误(测试条件)。有时它也会成功。除了硬件之外,成功和失败的机器之间的一切都是相同的。失败的盒子只有两个 CPU 核心(我的笔记本电脑有 12 个核心)。
因此,在测试AsyncSpec 中,我们创建、启动和停止代理,似乎一些数据在代理的不同实例中随机流出。
在同一个 VM 中创建/启动/停止/销毁 Artemis 嵌入式服务器而不在多个实例之间发生冲突的最佳/最干净的方法是什么?
【问题讨论】:
-
@justin-bertram,刚刚订阅了邮件列表,让我们在那里进行对话。
-
@justin-bertram,很抱歉问这个问题,但我没有经常使用邮件板,我该如何问一个问题,我应该向 activemq.apache.org 的用户发送电子邮件吗?跨度>
-
@justin-bertram,我向 activemq.apache.org 的用户发送了电子邮件,并在那里添加了更多上下文。感谢任何帮助!
-
@justin-bertram,该电子邮件列表上的建议确实有所帮助,我解决了问题并进行了可重现的成功测试,感谢您的帮助!
标签: java activemq-artemis