activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From PJR69 <petri.riipi...@insta.fi>
Subject Opinions about using AMQ in virtual distributed simulations
Date Wed, 27 Oct 2010 10:57:12 GMT

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.

Mime
View raw message