The worker threads in the threadpool seem to sleep when a receiver waits for
messages from the broker.
-------------------------------------------------------------------------------------------------------
Key: AMQCPP-311
URL: https://issues.apache.org/activemq/browse/AMQCPP-311
Project: ActiveMQ C++ Client
Issue Type: Bug
Components: CMS Impl
Affects Versions: 3.2.2
Environment: Windows. ActiveMQ broker 5.3.1.
Reporter: Helen Huang
Assignee: Timothy Bish
Priority: Blocker
In our application, we are using a CmsTemplate (activemq::cmsutil::CmsTemplate)
to receive messages. For each received message, we first create a task then
put it into the threadpool (decaf::util::concurrent::ThreadPool) for
processing. We expect the worker threads are independent from the receiving
functionality of the CmsTemplate. While a receiver is waiting for new messages,
the worker threads should be able to process the messages that have been
received already. However, that is not we observed. The worker threads seem to
be put into sleep until the receiver timeouts.
The following is the log we have created. you will see that we received five
messages. The last message was received and enqueued at 14:13:20 (by thread
0BB0), It was only processed at 14:13:30 (by thread 0FDC), at/after a receive
timeout (on thread 0BB0) . The waiting time seems to be equal to the receive
timeout which was 10 seconds. We have repeated the test by setting the receive
timeout to 200ms,1s, 3s, 5s, and 10s. We observed the same behavior with each
test. The configuration for the threadpool was: MaxThreads 20, BockSize 5,
ReservedThreads 10. This is a critical issue for our application. Hope you will
be able to look into it soon. Your help is highly appreciated!
SAServer08/16 14:13:20 1,995,656 0BB0> Receiver::ReceiveMessage() -
received a cms message.
SAServer08/16 14:13:20 1,995,656 0BB0> Receiver::ReceiveMessage() - The
payload of the cms message is: <?xml version="1.0"
encoding="UTF-8"?><itemPolicy><upc>000671115010</upc><returnAllRecords>0</returnAllRecords></itemPolicy>.
SAServer08/16 14:13:20 1,995,656 0FAC> Receiver::ExecuteMessagingTask() -
calling the message listener function for a received message
SAServer08/16 14:13:20 1,995,656 0BB0> Receiver::run() - enqueued a
messaging task
SAServer08/16 14:13:20 1,995,687 0BB0> Receiver::ReceiveMessage() -
received a cms message.
SAServer08/16 14:13:20 1,995,687 0BB0> Receiver::ReceiveMessage() - The
payload of the cms message is: <?xml version="1.0"
encoding="UTF-8"?><itemPolicy><upc>000671115010</upc><returnAllRecords>0</returnAllRecords></itemPolicy>.
SAServer08/16 14:13:20 1,995,687 0BB0> Receiver::run() - enqueued a
messaging task
SAServer08/16 14:13:20 1,995,687 0730> Receiver::ExecuteMessagingTask() -
calling the message listener function for a received message
SAServer08/16 14:13:20 1,995,687 0BB0> Receiver::ReceiveMessage() -
received a cms message.
SAServer08/16 14:13:20 1,995,687 0BB0> Receiver::ReceiveMessage() - The
payload of the cms message is: <?xml version="1.0"
encoding="UTF-8"?><itemPolicy><upc>000671115010</upc><returnAllRecords>0</returnAllRecords></itemPolicy>
SAServer08/16 14:13:20 1,995,687 0BB0> Receiver::run() - enqueued a
messaging task
SAServer08/16 14:13:20 1,995,687 0F98> Receiver::ExecuteMessagingTask() -
calling the message listener function for a received message
SAServer08/16 14:13:20 1,995,703 0BB0> Receiver::ReceiveMessage() -
received a cms message.
SAServer08/16 14:13:20 1,995,703 0BB0> Receiver::ReceiveMessage() - The
payload of the cms message is: <?xml version="1.0"
encoding="UTF-8"?><itemPolicy><upc>000671115010</upc><returnAllRecords>0</returnAllRecords></itemPolicy>
SAServer08/16 14:13:20 1,995,703 0BB0> Receiver::run() - enqueued a
messaging task
SAServer08/16 14:13:20 1,995,703 0E08> Receiver::ExecuteMessagingTask() -
calling the message listener function for a received message
SAServer08/16 14:13:20 1,995,703 0BB0> Receiver::ReceiveMessage() -
received a cms message.
SAServer08/16 14:13:20 1,995,703 0BB0> Receiver::ReceiveMessage() - The
payload of the cms message is: <?xml version="1.0"
encoding="UTF-8"?><itemPolicy><upc>000671115010</upc><returnAllRecords>0</returnAllRecords></itemPolicy>
SAServer08/16 14:13:20 1,995,703 0BB0> Receiver::run() - enqueued a
messaging task
SAServer08/16 14:13:21 1,995,906 0FAC> Enter
CCmsMessageHandlerAPI::SendMessage(), clientName:SAServer, destName:Response
SAServer08/16 14:13:21 1,995,906 0FAC> Sender::SendMessage() - sent message
<itemPolicy>
<upc>000671115010</upc>
<returnAllRecords>0</returnAllRecords>
<weightEntries>
<weightEntry>
<initialWeight>290</initialWeight>
<averageWeight>260</averageWeight>
<weightTally>3</weightTally>
<lastDate>2145934800</lastDate>
<isApproved>1</isApproved>
<isPPWU>0</isPPWU>
<standardDev>-1</standardDev>
<weightTolerance>-999</weightTolerance>
</weightEntry>
</weightEntries>
</itemPolicy> successfully to cms
SAServer08/16 14:13:21 1,995,906 0FAC> Exit
CCmsMessageHandlerAPI::SendMessage() - Success
SAServer08/16 14:13:21 1,996,140 0730> Enter
CCmsMessageHandlerAPI::SendMessage(), clientName:SAServer, destName:Response
SAServer08/16 14:13:21 1,996,156 0730> Sender::SendMessage() - sent message
<itemPolicy>
<upc>000671115010</upc>
<returnAllRecords>0</returnAllRecords>
<weightEntries>
<weightEntry>
<initialWeight>290</initialWeight>
<averageWeight>260</averageWeight>
<weightTally>3</weightTally>
<lastDate>2145934800</lastDate>
<isApproved>1</isApproved>
<isPPWU>0</isPPWU>
<standardDev>-1</standardDev>
<weightTolerance>-999</weightTolerance>
</weightEntry>
</weightEntries>
</itemPolicy> successfully to cms
SAServer08/16 14:13:21 1,996,156 0730> Exit
CCmsMessageHandlerAPI::SendMessage() - Success
SAServer08/16 14:13:21 1,996,375 0F98> Enter
CCmsMessageHandlerAPI::SendMessage(), clientName:SAServer, destName:Response
SAServer08/16 14:13:21 1,996,390 0F98> Sender::SendMessage() - sent message
<itemPolicy>
<upc>000671115010</upc>
<returnAllRecords>0</returnAllRecords>
<weightEntries>
<weightEntry>
<initialWeight>290</initialWeight>
<averageWeight>260</averageWeight>
<weightTally>3</weightTally>
<lastDate>2145934800</lastDate>
<isApproved>1</isApproved>
<isPPWU>0</isPPWU>
<standardDev>-1</standardDev>
<weightTolerance>-999</weightTolerance>
</weightEntry>
</weightEntries>
</itemPolicy> successfully to cms
SAServer08/16 14:13:21 1,996,390 0F98> Exit
CCmsMessageHandlerAPI::SendMessage() - Success
SAServer08/16 14:13:21 1,996,609 0E08> Enter
CCmsMessageHandlerAPI::SendMessage(), clientName:SAServer, destName:Response
SAServer08/16 14:13:21 1,996,625 0E08> Sender::SendMessage() - sent message
<itemPolicy>
<upc>000671115010</upc>
<returnAllRecords>0</returnAllRecords>
<weightEntries>
<weightEntry>
<initialWeight>290</initialWeight>
<averageWeight>260</averageWeight>
<weightTally>3</weightTally>
<lastDate>2145934800</lastDate>
<isApproved>1</isApproved>
<isPPWU>0</isPPWU>
<standardDev>-1</standardDev>
<weightTolerance>-999</weightTolerance>
</weightEntry>
</weightEntries>
</itemPolicy> successfully to cms
SAServer08/16 14:13:21 1,996,625 0E08> Exit
CCmsMessageHandlerAPI::SendMessage() - Success
SAServer08/16 14:13:30 2,005,703 0FDC> Receiver::ExecuteMessagingTask() -
calling the message listener function for a received message
SAServer08/16 14:13:30 2,005,703 0BB0> Receiver::ReceiveMessage() - receive
timed out
SAServer08/16 14:13:31 2,005,921 0FDC> Enter
CCmsMessageHandlerAPI::SendMessage(), clientName:SAServer, destName:Response
SAServer08/16 14:13:31 2,005,921 0FDC> Sender::SendMessage() - sent message
<itemPolicy>
<upc>000671115010</upc>
<returnAllRecords>0</returnAllRecords>
<weightEntries>
<weightEntry>
<initialWeight>290</initialWeight>
<averageWeight>260</averageWeight>
<weightTally>3</weightTally>
<lastDate>2145934800</lastDate>
<isApproved>1</isApproved>
<isPPWU>0</isPPWU>
<standardDev>-1</standardDev>
<weightTolerance>-999</weightTolerance>
</weightEntry>
</weightEntries>
</itemPolicy> successfully to cms
SAServer08/16 14:13:31 2,005,921 0FDC> Exit
CCmsMessageHandlerAPI::SendMessage() - Success
SAServer08/16 14:13:40 2,015,703 0BB0> Receiver::ReceiveMessage() - receive
timed out
SAServer08/16 14:13:50 2,025,703 0BB0> Receiver::ReceiveMessage() - receive
timed out
SAServer08/16 14:14:00 2,035,703 0BB0> Receiver::ReceiveMessage() - receive
timed out
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.