Hi:

I am running test on the JmsConnectors, the test case I am trying to run is 
sending and receiving Messages in the Queue region and the transport I am using 
is TcpTransport.

I am running into a problem with the preLoadSize of PrefetchSubscription not 
being decremented at all, so Messages add to PrefetchSubscription can no longer 
be dispatched. The preLoadSize is decreased by calling the decrementPreloadSize 
of PrefetchSubscription, which is never called in my test case.

I have setup a similar test but using VMTransport, there appears to be no 
problem. In both test cases, the dispatch method of PrefetchSubscription calls 
the dispatchAsync method of its associated AbstractConnection for dispatching. 
The differences between the two test cases I have notices is that when the 
transport is tcp, there is a taskRunner associated with the AbstactConnection, 
which will be wakeup to run the task at some future time; but when the 
transport is vm, the AbstractConnection has no taskRunner and the dispatchSync 
method will be called to dispatch the message as well as calling the  run 
method on the Consumer of the message, which will correctly call the onDispatch 
method of PrefetchSubscription and decrease the preLoadSize.

I have trouble tracing whether or not the task that eventually ran by the task 
associated with the taskRunner actually called the run method on the Consumer 
of the message, do anyone knows how to fix this problem?

Thanks
Fan

Reply via email to