Discussions
Categories
- 197.1K All Categories
- 2.5K Data
- 546 Big Data Appliance
- 1.9K Data Science
- 450.7K Databases
- 221.9K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 552 MySQL Community Space
- 479 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.1K ORDS, SODA & JSON in the Database
- 555 SQLcl
- 4K SQL Developer Data Modeler
- 187.2K SQL & PL/SQL
- 21.3K SQL Developer
- 296.3K Development
- 17 Developer Projects
- 139 Programming Languages
- 293K Development Tools
- 110 DevOps
- 3.1K QA/Testing
- 646.1K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 158 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.2K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 19 Java Essentials
- 162 Java 8 Questions
- 86K Java Programming
- 81 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 205 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 468 LiveLabs
- 39 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 175 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 233 Portuguese
How does JMS work

I am a PL/SQL developer trying to understand JMS. Our products front-end is developed using Java 8. Back-end is PL/SQL.
Ours is a billing application. Up-to now the billing was done in PL/SQL, but now the architects have decided to move the billing to Java.
In order to do that we (PL/SQL back-end) has to supply the list of accounts to be billed to Java.
The Java side has a JMS queue. Problem is we tried writing to the JMS queue from PL/SQL but it was unsuccessful.
Now, how we have agreed to do is like this:
(1.) We have new Oracle table which will hold the list of accountIDs to be billed (along with some control columns).
(2.) Java will read this table (the trigger to read this is still unknown. We are working on it).
(3.) A Java process will read all the new rows to the table and write all those rows to the JMS queue.
(4.) JMS queue, every-time it a message is added will call a Java procedure to do the billing for the account.
(5.) Once the billing is complete it will update another Oracle table with accountID and if successful flag saying billing was OK or the billing errors (in a clob).
(6.) Once billing is finished for one account, the Java billing slave will write to the JMS indicating that billing process has run to completion for the account.
However we are still not sure whether this will wok. Our question are:
(1.) How does JMS really work. When we write 400 accountIDs to the JMS queue (i.e. 400 messages) will the JMS start 400 billing slaves, instantly or
will the JMS queue account IDs be processed one at a time. That is, the JMS will call the Java procedure for the 1st account, process it and write to
JMS queue saying it is complete, then the other message in the queue will call the Java billing procedure for that account?
(3.) What will happen if the Java billing procedure fails?? What will happen to the JMS queue?
We have these questions which seem to confuse us.