I'd like to ask your opinion whether ActiveMQ is a good fit for my needs. (I'm quite newbie when it comes to JMS/ActiveMQ, just have been reading about them for the past few days...).
So, I'm working on a distributed near-realtime simulator system where I have several simulator components managing and producing simulated entities to a distributed virtual simulated world and several applications that are used to manage and monitor the entities in the simulated world. One way to share the entities would be to use DIS, HLA or DDS. However, as our system is 100% Java-based and need to work at least on Windows and on Linux and we want to avoid license fees (can be quite significant with larger configurations) as much as possible and have as simple API as possible to simplify the otherwise relatively complex system, I'm very much leaning towards using JMS/ActiveMQ as the way to publish the entities between the components in the system. we still need to use HLA to connect to external simulators though, but I would like to ditch it from the internal communications where we are in control of the source code of all our simulators. There are some requirements for the communication: - I want to publish full objects (e.g. "Aircraft"-POJO) from the simulator when they are created. There has to be also some mechanism for deleting the objects, I guess a specialized deletion message for that purpose would do the trick as I guess it's not possible to explicitly delete a published message that lies in some persistent queue or topic...? well, if it's persisted on e.g external database via JDBC, then I guess it could be by making a listener that would pick up the deletion message and delete the original entity creation message from the database via direct JDBC...? - Later I want to only update certain rapidly changing values of some entity (like the location of the previously published Aircraft) and I'm guessing that the JMS MapMessage could be a good fit here. No need to always publish the entire POJO if just few attribute values change. - There is typically one publisher (e.g. one process that produces and updates the Aircraft-instances) and several subscribers (e.g. multiple GUI-apps viewing the Aircrafts over a map) so Topics feel like a good fit. - Message durability/persistence is selectively required. For example, when an Aircraft is published at moment T from a simulator and a GUI-app is started at time T+x, it should receive the Aircraft instance so that it can get a properly synchronized view of the virtual world. However, when publishing the location information of the said Aircraft, there is no need to store them, the GUI-app has no use of the location before T+x, it only needs to get location updates that are published after T+x. -The location updates should have as low latency as possible. So I guess some topic-associated QoS would be needed so I could use one topic to maintain the lifecycle of entities and another to update their attributes in near-realtime. For the attribute-updating even UDP-multicasting sounds usable as transport mechanism. - We often work inside one LAN-segment (so peer-configuration sounds good with the multicast discovery) but there are configurations where a simulator is on different subnet than the GUI. I guess that would be easy to handle with configuring static broker network connections. (In HLA-world we would do that by using a TCP-forwarder or gateway between the subnets and UDP-multicasting inside subnets). - We want to have as little configuration as possible between different deployments (mostly inside single subnets) so the peer-configuration with Spring (using spring a lot already so it's a central part of our arcthitecture) sounds good there. Ok, I guess the above gives some idea at least to folks who have been involved with real-time distributed simulations. So, my gut feeling is that JMS/ActiveMQ could very likely be a good fit for my needs, but I'd like to hear opinions from more experienced folks. Are there any obvious caveats that might cause grief? -- View this message in context: http://activemq.2283324.n4.nabble.com/Opinions-about-using-AMQ-in-virtual-distributed-simulations-tp3015223p3015223.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.