We are having problems with not getting enough concurrent processing from shared state clients.
The situation is as follows. There are 5 Oracle adapter processes. Each adapter is single-threaded. “Broker Document Order Mode” is “None”. “Max number of documents to receive” is 1, and “Multi-Publish size” is 10.
Component A in the XML adapter publishes a message to component B in the Oracle adapter, which publishes another message to component C in the Oracle adapter:
Component A (in XML adapter) ------> Component B (in Oracle adapter) -------> Component C (in Oracle adapter)
Component C has a Thread.wait() call so processing stops there for a while. At this point, there is 1 message in the Oracle adapter queue. Other queues are empty.
Now, another message comes to component A. Again, it publishes a message to component B. This message is processed immediately, which indicates that there are multiple Oracle adapters running, as configured.
The problems start when component B publishes a message to component C. This message is published, but its processing does not start! There are now 2 messages in the Oracle adapter queue. The 4 free Oracle adapters ignore the new message until the first message is processed. Only then is the second message processed.
This is totally unexpected, from reading the documentation. In my understanding, this should happen only if “Broker Document Order Mode” were “Publisher”. It is not: it is “None”, in which case there should be no restrictions on document order. One of the 4 free Oracle adapters should process the second message to component C as soon as it is published.
Any ideas how this could have happened?