title: ActiveMQ - hang in send method
body: <p>I'm using AcitveMQ 5.3. I don't know why my client hanged in send(of MessageProducer) method. </p>
  
  <p>Here is my situation, 
  I had a server(with a MQ broker), and I upgraded the server from 1.0 to 2.0 (the MQ broker was also upgraded from 5.3 to 5.6). 
  At the same time, clients got a "Interupted" notification and a "Resume" notification due to the MQ broker restarted. In the "Resume", I sent my client status to the server and the it hanged.</p>
  
  <p>I have 10 clients, and two of them have above situation. I have tried to restart MQ broker while i sent a message to the broker.(A similar scenario as above.) However, it's hard to reproduce. </p>
  
  <p>Have anyone had this kind of experience? hanging in the send of MessageProducer method?</p>
  
  <p>Thanks.</p>
  
  <hr>
  
  <p>Update:
  Here are the steps,</p>
  
  <ol>
  <li><p>The broker and the clients version is  5.3</p></li>
  <li><p>uninstall the broker and install 5.6 broker.</p>
  
  <p>==> as you said, the version between broker and clients is not matched. Version mismatched will cause problems? But it should have backward compatibility, right?</p></li>
  <li><p>I'll get Interrupted and Resume methods of TransportListener </p></li>
  <li><p>I do some connection recovery tasks and also send a message to the broker in the Resume call</p>
  
  <p>==> as you mentioned, it is a dangerous that send a message in Resume call. However, we did this all the time and never had this kind of issue before. </p></li>
  <li><p>my program will hang in MessageProducer send.  </p></li>
  </ol>
  
  <p>Is that more clear? code are separated everywhere, it's not easy to post it.</p>
  
  <p>Thanks.</p>
  
  <hr>
  
  <p>update part2, </p>
  
  <p>I move MessageProducer send to another thread, but I wait in Resume callback of TransportListener until sending done. In this scenario, it always hangs on sending a message. However, "sending a message in Resume callback directly" hangs occasionally. These two scenario is quite similar. Why are they so different? I dug in the source code(ActiveMQ-Cpp 3.4.5), but i didn't find any special things. or I dug in wrong files? I really want to know it's mechanism. </p>
  
  <p>BTW, before "update part2", i'm using java version MQ. But the result seems no difference between java and cpp. So, at "update part2", i'm using ActiveMQ-CPP 3.4.5 as my library.</p>
  
  <p>Thanks.</p>