No subject
Sat Nov 12 19:29:10 PST 2005
s,
routing, senders and messages. The receivers and senders could be of
different types, i.e. FTP, File, Socket and so on. The routing is based=
on
relating a sender to a receiver, relating a message to a sender or rela=
ting
a content (email perhaps) of a message to a sender.
Moreover, every sender has its demands on the form of what they are
receiving. So, before sending there is a need for transforming the mess=
age
(from raw to xml or the other way around, or to different appearances).=
One
thinkable solution is xls.
The basic steps are the following:
receive -> transform (if needed to in-house) -> validate -> transform (=
if
needed) -> route -> send
Data-flow:
One could use the data-flow approach. Each stage transforms or process =
data
and pushes the result to the next step in the chain. Of course, the las=
t
steps transform and send, as it could be many senders involved, needs t=
o be
a shared resource and a singleton. The advantage with this strategy is =
that
it is fairly simple and the number of threads are at minimal, one threa=
d
per chain. The disadvantage is that it will take a fairly amount of ti=
me
to start receiving again. However this is not a major problem (it is ra=
ther
the general throughput).
Event-driven and Data-flow:
One could also combine the data-flow with an event-driven approach. Whe=
n
one receives a message one pushes the message to a dispatcher, which st=
arts
a handler (new thread) for this message. Conceptually it would look
something like this:
Receive -> Dispatch
Handler x (transform, validate, transform, route, send)
Basically this is a question of splitting the stages and getting a maxi=
mal
throughput in receiving, but as I stated before this not a demand.
Moreover, the number of threads in use would increase in relation the
data-flow approach, which of course consumes more resources. But it giv=
es,
in my mind, a better separation.
The main question I have is the general throughput through the whole sy=
stem
and if above thoughts in general make sense. Or, should I view this in
another way? Is there other and better ways of designing this?
Thanks in advance, Theis.=
More information about the Advanced-java
mailing list