我使用本指南制作了一个简单的Spring引导内存ActiveMQ服务,该服务从rest控制器获取一条消息,然后将其传递给侦听器。然后,侦听器进行了大约40秒的处理,但是处理后,我无法检索到结果。
https://github.com/TechPrimers/inmemory-spring-boot-activemq-example
到目前为止,一切都按预期进行,但是我希望能够检索到侦听器已处理的结果。
我正在考虑的一种方法是创建另一个rest控制器,该控制器返回侦听器完成的任务的结果。并通过使用关系数据库来管理ID和消息。
但是,我宁愿使用内存中的所有内容而不处理数据库。
ActiveMQ和/或spring是否有内置的东西可以管理它?
答案 0 :(得分:1)
您所描述的内容在我看来像request-reply pattern,在企业集成方案中很常见。
假设工作的结果将很快消耗掉,那么我建议您将结果简单地放入另一条消息中,然后将该消息发送到“答复”队列中。原始消息可以包含“相关ID”,侦听者也可以在答复消息中使用“相关ID”,以便将结果与请求相关。
如果结果不会很快消耗掉,那么数据库可能会更好,因为消息代理没有像数据库那样被设计为数据存储库。此外,如果您采用这种方式,内存中的嵌入式数据库可能会很适合您。