qpid AMQConnection.createSession()产生重复的Session对象?

时间:2012-08-20 19:33:45

标签: session jms hashcode qpid

我有一堆线程,每个都创建一个org.apache.qpid.client.AMQConnection然后创建一个会话。

public void run() {
    Connection connection = new AMQConnection("amqp://*******:*****@clientid/test?brokerlist='tcp://********:****?sasl_mechs='ANONYMOUS''");
    connection.start();

    Session ssn = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);    
    System.out.println(ssn.toString());

    ssn.close();
    connection.close();
}

在某些运行中,我在两个不同的线程中得到相同的Session.hashCode(),如下所示:

org.apache.qpid.client.AMQSession_0_10@420e44
org.apache.qpid.client.AMQSession_0_10@d76237
org.apache.qpid.client.AMQSession_0_10@d76237
org.apache.qpid.client.AMQSession_0_10@7148e9

现在我明白hashcode()并不保证是唯一的,我如何证明或反驳createSession()在两个不同的线程上返回相同的会话对象?

1 个答案:

答案 0 :(得分:0)

原来是更多的Java对象等价问题,而不是与qpid或消息传递有关。

我没有打印哈希码,而是将Session个对象本身插入Vector<Session>并对它们进行了比较(==)。事实证明,它们在所有线程中都是独一无二的。