[jira] Assigned: (AMQ-755) possible bug with temporary queues and networks?

2006-06-21 Thread Rob Davies (JIRA)
 [ https://issues.apache.org/activemq/browse/AMQ-755?page=all ]

Rob Davies reassigned AMQ-755:
--

Assign To: Rob Davies

 possible bug with temporary queues and networks?
 

  Key: AMQ-755
  URL: https://issues.apache.org/activemq/browse/AMQ-755
  Project: ActiveMQ
 Type: Bug

 Versions: 4.0
 Reporter: james strachan
 Assignee: Rob Davies



 We have been experiencing some fairly serious problems with timeouts using
 Spring, Lingo and a network of ActiveMQ brokers.
 As I understand it, lingo creates temporary queues to transport the remote
 procedure calls across JMS.
 We are suspicious that the messaging roundtrip gets interrupted or lost when
 using broker networks.
 We integrated ActiveMQ 4.0 into our project this week and ran the JMX
 jconsole to look at our broker network.
 We see temporary queues come and go, and what we are expecting is complete
 replication of the queues on each broker. Is this expectation correct?
 This is not what we are seeing.
 We believe that two things are happening:
 1) Temporary queues are not being cleaned up properly on all brokers.
 2) Temporary queues are not being created on a new broker when it is taken
 down and then restarted.
 Your feedback on these apparent issues would be appreciated.
 To substantiate our theory we created a couple of JUnit tests. (Our test
 cases do not include Lingo - just ActiveMQ client to broker.)
 TEST 1
 We create a network of brokers, create a message queue, send a message and
 then take a broker down. We are expecting that the temporary message queue
 created will be removed from both brokers. It is not.
 The test fails on the last assert with:
 junit.framework.AssertionFailedError: No queues on broker 3 expected:1 but
 was:0
 Source code follows:
  public void testTempQueueCleanup() throws Exception {
ActiveMQConnectionFactory cf;
Connection conn = null;
Session sess = null;
try {
  cf = new ActiveMQConnectionFactory(
 failover:(tcp://localhost:61626%3FsoTimeout=5000,tcp://localhost:61627%3FsoTimeout=5000)?maximumRetries=0amp;establishConnectionTimeout=21000amp;keepAliveTimeout=30);
  conn = cf.createConnection();
  sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
  TemporaryQueue q = sess.createTemporaryQueue();
  BrokerService broker2 = createBroker(broken2,
 tcp://localhost:61627, static:(tcp://localhost:61626));
  Thread.sleep(5000);
  assertEquals(No queues on broker 1, 1,
 broker1.getAdminView().getTemporaryQueues().length);
  assertEquals(No queues on broker 2, 1,
 broker2.getAdminView().getTemporaryQueues().length);
  q.delete();
  assertEquals(Temp queue left behind on broker 1, 0,
 broker1.getAdminView().getTemporaryQueues().length);
  assertEquals(Temp queue left behind on broker 2, 0,
 broker2.getAdminView().getTemporaryQueues().length);
  broker2.stop();
} finally {
  if (sess!=null)
sess.close();
  if (conn!=null)
conn.close();
}
  }
 TEST 2
 When stopping a broker and then restarting it, we expect to see all queues
 replicated on the new broker.
 This test fails with:
 junit.framework.AssertionFailedError: No queues on broker 3 expected:1 but
 was:0
 Source code:
  public void testTempQueueRecovery() throws Exception {
ActiveMQConnectionFactory cf;
Connection conn = null;
Session sess = null;
try {
  cf = new ActiveMQConnectionFactory(
 failover:(tcp://localhost:61626%3FsoTimeout=5000,tcp://localhost:61627%3FsoTimeout=5000)?maximumRetries=0amp;establishConnectionTimeout=21000amp;keepAliveTimeout=30);
  conn = cf.createConnection();
  sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
  TemporaryQueue q = sess.createTemporaryQueue();
  BrokerService broker2 = createBroker(broken2,
 tcp://localhost:61627,
 static:(tcp://localhost:61626,tcp://localhost:61628));
  Thread.sleep(5000);
  assertEquals(No queues on broker 1, 1,
 broker1.getAdminView().getTemporaryQueues().length);
  assertEquals(No queues on broker 2, 1,
 broker2.getAdminView().getTemporaryQueues().length);
  BrokerService broker3 = createBroker(broken3,
 tcp://localhost:61628,
 static:(tcp://localhost:61626,tcp://localhost:61627));
  assertEquals(No queues on broker 3, 1,
 broker3.getAdminView().getTemporaryQueues().length);
  Thread.sleep(5000);
  q.delete();
  Thread.sleep(5000);
  assertEquals(Temp queue left behind on broker 1, 0,
 broker1.getAdminView().getTemporaryQueues().length);
  assertEquals(Temp queue left behind on broker 2, 0,
 broker2.getAdminView().getTemporaryQueues().length);
  assertEquals(Temp queue left behind on broker 3, 0,
 broker3.getAdminView().getTemporaryQueues().length);
  broker3.stop();
  broker2.stop();
} finally {
  if (sess!=null)
sess.close();
  if (conn!=null)

Which Open Source MOM to opt for

2006-06-21 Thread Lalit Nagpal

HI,

I am in the hunt of an Open source MOM ... I am not sure which one is widely
popular and best.

Kindly suggest a location which could give me a comparison for the various
open source MQ options available. It should have C++ support.

Can anybody tell me why we should use ActiveMQ ... what are the prime
benefits of this MOM please.


Thanks in advance

Lalit ...

--
View this message in context: 
http://www.nabble.com/Which-Open-Source-MOM-to-opt-for-t1822112.html#a4968969
Sent from the ActiveMQ - Dev forum at Nabble.com.



Re: AMQP

2006-06-21 Thread Hiram Chirino

+1 !  BTW IMO the spec is still fuzzy.  I think they need to clarify
it a bit more.  But I think it's something we should be able to
implement really easy.

On 6/20/06, Brian McCallister [EMAIL PROTECTED] wrote:

FYI: http://www.infoq.com/news/amq

AMQP looks to be an attempt at wire protocol specification like
openwire or stomp.

Probably good for us to look at, though the licensing probably needs
to bounce through [EMAIL PROTECTED] before we do much as it is not
immediately clear if it is okay. I probably is, but I'd love to get
Cliff's opinion.

-Brian




--
Regards,
Hiram

Blog: http://hiramchirino.com