We are using WebLogic Integration 9.2.2 and need to implement JMS. I have some questions regarding it and would like some help. I will describe the servers setup:
1 Admin Server
2 Machines - Mac1, Mac2
2 Managed Server, MS1 and MS2
I need to setup JMS so that there is a distributed Queue which can receive messages from both MS and the messages (only once) processed by MDB on both MS. How would I go about setting it up? How would I setup the following and what targets/settings should be used (in bracket I have indicated what I used unless I did not get past that point):
1) JMS Server (Admin server?)
2) JMS Persistent Data Store (Admin Server?)
3) JMS Modules (Admin or All servers in Cluster or both?)
4) Subdeployment (Admin or All servers in Cluster or both?) Also in the JMS Servers, I don't see the JMS Server that I had created earlier, why?
5) Queue (Queue or Distributed Queue and what should it target?) I also want an Error Queue which too should be ?distributed?
6) Connection Factory (it is by default "All servers in Cluster)
Again thank you very much before hand and would appreciate any and all comments/feedbacks.
Okay I have gotten a bit more further and have these questions now:
This is how my setup looks like:
Physical Servers: 2 (call SrvrA, SrvrB)
Admin Server (Server SrvrB)
MS1 (SrvrA) MachineA
MS2 (SrvrB) MachineB
Cluster AB (MS1 and MS2)
I setup as you indicated:
MS1_JMS on MS1 using JDBC store - table prefix MS1_JMS_
MS2_JMS on MS2 using JDBC store - table prefix MS2_JMS_
JMS Module - xyzJmsModule - Cluster - all servers in cluster
Cnx Factory - xyzUDQ_CF - Cluster - all servers in cluster
SubDeployments - xyzSubUDQ - MS1_JMS and MS2_JMS
Distributed Q - xyzUDQ - Allocate Members Uniformly, RRobin - xyzSubUDQ
I am producing the messages using SpringFramework and consuming using MDB. Both the producer and consumers are the same application. The application is deployed on both MS1 and MS2. We are using WebLogic Integration 9.2.2 MP2.
So here are my questions:
1) How can I check the messages are being sent to both MS1 and MS2?
2) If MS1 goes down, will MS2 process messages that were stored in the MS1's JDBC store (MS1_JMS_WLstore)? Are the messages being written to both MS1_JMS and MS2_JMS JDBC store when received? This also brings me to the question - do the tables need to be different for each JMS server?
3) Given that the JMS servers are on the same servers as the application, I don't set the URL for performance. How can I check which server processed the message?
4) If you were wondering why we are using the JMS to send data to the same application then here is my explanation. We want to asynchronously process certain logic for which the original creator does not need to wait on. This improves the original creator's process response time as the extra work - not critical to flow - is not done synchronously. Also if the backend to which the extra work dealt with was done, the original process is not impacted. I hope that makes sense. Any comments to this idea?