0down votefavorite share [fb]share [tw]

I have a design question and would like to have suggestions.

I am using Weblogic 11g, EJB3.0, Weblogic JMS

I have a system which it's target to retrieve and dispatch messages to couple of resources(databases).

Each message contain information and target database key.

So here is an flow example:

I get from web service a message and key target. I parse the message and dispatch it to the right database via the key target.

There is a possibility that a message will contain more then one target database.(for example the key 'all' means that I should dispatch to all databases.

If Insert is failing in one of the resources a rollback will occurred and I a re-try will re-execute the whole operation.

So now this is my issue:

Should I make the number of the queues as the number of my resources? (and dedicated each Queue to a specific resource)

(In this case I parse each message and just send it to the right queue while an MDB will listen and do the insertion to the right database)

If I do it that way I wont be able to make it dynamic, Meaning each time a new resource will need to be added/removed in the future I will need to open the code and make the right changes.

i understand that I cant totally avoid "touching" the code since in the future when a new target db key will be added I will need to implement different insertions and logic to the code which will be demanded by the new db.

How would you suggest me to design the code efficiently so It will be comfortable to add new "queue tunnels". in a plug able way. thanks.

thanks for your help ray.