I recently created a VSM case using JMS Send and Receive Step.I dropped around 1000 messages on the queue from test case and tried to observe the message count on TIBCO EMS console and observed the messages getting dropped as expected one by one while I disabled the receiver queue.But when I enabled the receiver I observed the the message count to be zero since the VSM consumed all the messages at time and started processing one at a time since I set concurrent capacity to 1.But why it did happen so it is supposed to consume the message one at a time.
Just so I'm sure, you built this VSM by hand rather than generating it from the VSE recorder?
Do you have the 'Asynchronous' checkbox checked on the 'JMS Receive' side of your receive step? When asynchronous mode is enabled then messages on the queue will be drained to an internal queue in a separate thread, while the execution thread or threads process the messages. If you would like to disable this behavior, and only pull a message off the queue when it's being processed, then uncheck 'Asynchronous'.
If you generated the VSM from the VSE recorder then 'Asynchronous' is the default, but there is still a checkbox on the 'JMS VSE Listen' step to disable it. One final note: If your 'JMS VSE Listen' step has multiple request queues that it's listening on then Asynchronous is forced to be enabled, regardless of the checkbox value.
Thanks for the reply,as you have pointed I had 'Asynchronous' checkbox checked JMS VSE Listen step.