寻找有关分布式应用程序和消息传递的Java良好实践建议

时间:2010-12-20 22:11:53

标签: java multithreading distributed messages

一些背景资料。这是一个具有多个节点的分布式应用程序。 “通信”线程发送和接收在这些节点之间发送的所有消息。这不能改变。

'doStuff'线程要求'通信'线程向节点发送消息。然后它需要等待来自另一个节点的响应。 'communication'线程将收到此响应消息。然后需要将此消息传递给正确的“doStuff”线程。

我不确定需要在节点或消息中存储什么类型的信息,以确保正确的线程始终收到响应消息。

寻求有关如何实现这一目标的一些建议。感谢您阅读:)

3 个答案:

答案 0 :(得分:0)

您可能希望将某种消息ID附加到要包含在响应中的外发消息中。序号或UUID可能会完成这项工作。然后,您的通信器线程可以跟踪(地图?)“doStuff”线程正在等待给定的响应并将其传回。

您还可以跟踪发送请求的时间,以便在未收到响应时,通信器线程可以通知doStuff线程未收到响应。

答案 1 :(得分:0)

这似乎不太困难

使用由通信线程存储的doStuff线程发明的线程id或其他不透明令牌(映射到调用线程id)并随响应一起返回通信线程在Map中查找它以识别相应的线程。

或者我错过了什么?

答案 2 :(得分:0)

是否正在使用JMS选项?如果是这样,你可能会发现比“自己动手”更实用。通常,异步消息传递是一个已解决的问题。如果可以选择JMS,请特别查看TopicRequestor和/或QueueRequestor