Java 类javax.jms.TemporaryQueue 实例源码

项目:pooled-jms    文件:PooledConnectionTempQueueTest.java   
private void sendWithReplyToTemp(ConnectionFactory cf, String serviceQueue) throws JMSException, InterruptedException {
    Connection connection = cf.createConnection();
    connection.start();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    TemporaryQueue tempQueue = session.createTemporaryQueue();
    TextMessage msg = session.createTextMessage("Request");
    msg.setJMSReplyTo(tempQueue);
    MessageProducer producer = session.createProducer(session.createQueue(serviceQueue));
    producer.send(msg);

    MessageConsumer consumer = session.createConsumer(tempQueue);
    Message replyMsg = consumer.receive();
    assertNotNull(replyMsg);

    LOG.debug("Reply message: {}", replyMsg);

    consumer.close();

    producer.close();
    session.close();
    connection.close();
}
项目:spring4-understanding    文件:JmsInvokerClientInterceptor.java   
/**
 * Actually execute the given request, sending the invoker request message
 * to the specified target queue and waiting for a corresponding response.
 * <p>The default implementation is based on standard JMS send/receive,
 * using a {@link javax.jms.TemporaryQueue} for receiving the response.
 * @param session the JMS Session to use
 * @param queue the resolved target Queue to send to
 * @param requestMessage the JMS Message to send
 * @return the RemoteInvocationResult object
 * @throws JMSException in case of JMS failure
 */
protected Message doExecuteRequest(Session session, Queue queue, Message requestMessage) throws JMSException {
    TemporaryQueue responseQueue = null;
    MessageProducer producer = null;
    MessageConsumer consumer = null;
    try {
        responseQueue = session.createTemporaryQueue();
        producer = session.createProducer(queue);
        consumer = session.createConsumer(responseQueue);
        requestMessage.setJMSReplyTo(responseQueue);
        producer.send(requestMessage);
        long timeout = getReceiveTimeout();
        return (timeout > 0 ? consumer.receive(timeout) : consumer.receive());
    }
    finally {
        JmsUtils.closeMessageConsumer(consumer);
        JmsUtils.closeMessageProducer(producer);
        if (responseQueue != null) {
            responseQueue.delete();
        }
    }
}
项目:perf-harness    文件:Requestor.java   
public final boolean oneIteration() throws Exception {
    if ((tempQueues) && (tempQueuePerMessage)) {
        // Close existing temporary queue
        if (messageConsumer != null) messageConsumer.close();
        if (destConsumer != null) {
            ((TemporaryQueue) destConsumer).delete();
        }

        // Open new temporary queue
        destConsumer = context.createTemporaryQueue();
        messageConsumer = context.createConsumer(destConsumer);
        outMessage.setJMSReplyTo(destConsumer);
    }

    messageProducer.send(destProducer, outMessage);             
    if ( transacted ) context.commit();

    if ((inMessage = messageConsumer.receive(timeout)) != null) {
        if ( transacted ) context.commit();
        incIterations();
    } else {
        throw new Exception("No response to message (\nID: " + outMessage.getJMSMessageID() + "\nCorrID: " + outMessage.getJMSCorrelationID() +" )");
    }
    return true;
}
项目:perf-harness    文件:Requestor.java   
public final boolean oneIteration() throws Exception {
    if ((tempQueues) && (tempQueuePerMessage)) {
        // Close temporary queue
        if (messageConsumer != null) messageConsumer.close();
        if (destConsumer != null) {
            ((TemporaryQueue) destConsumer).delete();
        }

        // Open new temporary queue
        destConsumer = session.createTemporaryQueue();
        messageConsumer = session.createConsumer(destConsumer);
        outMessage.setJMSReplyTo(destConsumer);
    }

    startResponseTimePeriod();
    messageProducer.send(outMessage, deliveryMode, priority, expiry);               
    if (transacted) session.commit();

    if ((inMessage = messageConsumer.receive(timeout))!= null) {
        if (transacted) session.commit();
        incIterations();
    } else {
        throw new Exception("No response to message (\nID: "+outMessage.getJMSMessageID()+ "\nCorrId: " + outMessage.getJMSCorrelationID() +")");
    }
    return true;
}
项目:Camel    文件:JmsProviderMetadata.java   
protected void loadTemporaryDestinationTypes(JmsOperations template) {
    if (template == null) {
        throw new IllegalArgumentException("No JmsTemplate supplied!");
    }
    template.execute(new SessionCallback<Object>() {
        public Object doInJms(Session session) throws JMSException {
            TemporaryQueue queue = session.createTemporaryQueue();
            setTemporaryQueueType(queue.getClass());

            TemporaryTopic topic = session.createTemporaryTopic();
            setTemporaryTopicType(topic.getClass());

            queue.delete();
            topic.delete();
            return null;
        }
    });
}
项目:Camel    文件:JmsProviderTest.java   
@Test
public void testTemporaryDestinationTypes() throws Exception {
    JmsEndpoint endpoint = getMandatoryEndpoint("activemq:test.queue", JmsEndpoint.class);
    JmsConfiguration configuration = endpoint.getConfiguration();
    JmsProviderMetadata providerMetadata = configuration.getProviderMetadata();
    assertNotNull("provider", providerMetadata);

    Class<? extends TemporaryQueue> queueType = endpoint.getTemporaryQueueType();
    Class<? extends TemporaryTopic> topicType = endpoint.getTemporaryTopicType();

    log.info("Found queue type: " + queueType);
    log.info("Found topic type: " + topicType);

    assertNotNull("queueType", queueType);
    assertNotNull("topicType", topicType);

    assertEquals("queueType", ActiveMQTempQueue.class, queueType);
    assertEquals("topicType", ActiveMQTempTopic.class, topicType);
}
项目:hochschule-mannheim    文件:FileClient.java   
public FileClient(String filename) throws NamingException, JMSException {
    Context ctx = new InitialContext();
    ConnectionFactory factory = (ConnectionFactory) ctx.lookup("ConnectionFactory");
    Destination requestQueue = (Destination) ctx.lookup(DESTINATION);
    mConnection = factory.createConnection();
    mConnection.start();
    mSession = mConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    mMessageProducer = mSession.createProducer(requestQueue);
    TemporaryQueue replyQueue = null;
    replyQueue = mSession.createTemporaryQueue();
    mMessageConsumer = mSession.createConsumer(replyQueue);
    TextMessage request = mSession.createTextMessage();
    request.setText(filename);
    request.setJMSReplyTo(replyQueue);
    mMessageProducer.send(request);
}
项目:activemq-artemis    文件:JMSMessageProducerTest.java   
@Test(timeout = 60000)
public void testReplyToUsingQueue() throws Throwable {
   Connection connection = createConnection();

   try {
      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      TemporaryQueue queue = session.createTemporaryQueue();
      MessageProducer p = session.createProducer(queue);

      TextMessage message = session.createTextMessage();
      message.setText("Message temporary");
      message.setJMSReplyTo(session.createQueue(getQueueName()));
      p.send(message);

      MessageConsumer cons = session.createConsumer(queue);
      connection.start();

      message = (TextMessage) cons.receive(5000);
      assertNotNull(message);
      Destination jmsReplyTo = message.getJMSReplyTo();
      assertNotNull(jmsReplyTo);
      assertNotNull(message);
   } finally {
      connection.close();
   }
}
项目:activemq-artemis    文件:JMSMessageProducerTest.java   
@Test(timeout = 60000)
public void testReplyToUsingTempQueue() throws Throwable {
   Connection connection = createConnection();

   try {
      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      TemporaryQueue queue = session.createTemporaryQueue();
      MessageProducer p = session.createProducer(queue);

      TextMessage message = session.createTextMessage();
      message.setText("Message temporary");
      message.setJMSReplyTo(session.createTemporaryQueue());
      p.send(message);

      MessageConsumer cons = session.createConsumer(queue);
      connection.start();

      message = (TextMessage) cons.receive(5000);
      Destination jmsReplyTo = message.getJMSReplyTo();
      assertNotNull(jmsReplyTo);
      assertNotNull(message);
   } finally {
      connection.close();
   }
}
项目:activemq-artemis    文件:JMSTemporaryDestinationTest.java   
@Test(timeout = 60000)
public void testCreateTemporaryQueue() throws Throwable {
   Connection connection = createConnection();

   try {
      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      TemporaryQueue queue = session.createTemporaryQueue();
      System.out.println("queue:" + queue.getQueueName());
      MessageProducer producer = session.createProducer(queue);

      TextMessage message = session.createTextMessage();
      message.setText("Message temporary");
      producer.send(message);

      MessageConsumer consumer = session.createConsumer(queue);
      connection.start();

      message = (TextMessage) consumer.receive(5000);

      assertNotNull(message);
   } finally {
      connection.close();
   }
}
项目:activemq-artemis    文件:DuplexNetworkTest.java   
@Test
public void testTempQueues() throws Exception {
   TemporaryQueue temp = localSession.createTemporaryQueue();
   MessageProducer producer = localSession.createProducer(temp);
   producer.send(localSession.createTextMessage("test"));
   Thread.sleep(100);
   assertEquals("Destination not created", 1, remoteBroker.getAdminView().getTemporaryQueues().length);
   temp.delete();

   assertTrue("Destination not deleted", Wait.waitFor(new Wait.Condition() {
      @Override
      public boolean isSatisified() throws Exception {
         return 0 == remoteBroker.getAdminView().getTemporaryQueues().length;
      }
   }));
}
项目:activemq-artemis    文件:AdvisoryTempDestinationTests.java   
public void testNoSlowConsumerAdvisory() throws Exception {
   Session s = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   TemporaryQueue queue = s.createTemporaryQueue();
   MessageConsumer consumer = s.createConsumer(queue);
   consumer.setMessageListener(new MessageListener() {
      @Override
      public void onMessage(Message message) {
      }
   });
   Topic advisoryTopic = AdvisorySupport.getSlowConsumerAdvisoryTopic((ActiveMQDestination) queue);
   s = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   MessageConsumer advisoryConsumer = s.createConsumer(advisoryTopic);
   // start throwing messages at the consumer
   MessageProducer producer = s.createProducer(queue);
   for (int i = 0; i < MESSAGE_COUNT; i++) {
      BytesMessage m = s.createBytesMessage();
      m.writeBytes(new byte[1024]);
      producer.send(m);
   }
   Message msg = advisoryConsumer.receive(1000);
   assertNull(msg);
}
项目:activemq-artemis    文件:AdvisoryTempDestinationTests.java   
public void testSlowConsumerAdvisory() throws Exception {
   Session s = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   TemporaryQueue queue = s.createTemporaryQueue();
   MessageConsumer consumer = s.createConsumer(queue);
   assertNotNull(consumer);

   Topic advisoryTopic = AdvisorySupport.getSlowConsumerAdvisoryTopic((ActiveMQDestination) queue);
   s = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   MessageConsumer advisoryConsumer = s.createConsumer(advisoryTopic);
   // start throwing messages at the consumer
   MessageProducer producer = s.createProducer(queue);
   for (int i = 0; i < MESSAGE_COUNT; i++) {
      BytesMessage m = s.createBytesMessage();
      m.writeBytes(new byte[1024]);
      producer.send(m);
   }
   Message msg = advisoryConsumer.receive(1000);
   assertNotNull(msg);
}
项目:activemq-artemis    文件:AdvisoryTempDestinationTests.java   
public void testMessageDeliveryAdvisory() throws Exception {
   Session s = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   TemporaryQueue queue = s.createTemporaryQueue();
   MessageConsumer consumer = s.createConsumer(queue);
   assertNotNull(consumer);

   Topic advisoryTopic = AdvisorySupport.getMessageDeliveredAdvisoryTopic((ActiveMQDestination) queue);
   MessageConsumer advisoryConsumer = s.createConsumer(advisoryTopic);
   //start throwing messages at the consumer
   MessageProducer producer = s.createProducer(queue);

   BytesMessage m = s.createBytesMessage();
   m.writeBytes(new byte[1024]);
   producer.send(m);

   Message msg = advisoryConsumer.receive(1000);
   assertNotNull(msg);
}
项目:activemq-artemis    文件:AdvisoryTempDestinationTests.java   
public void testTempMessageConsumedAdvisory() throws Exception {
   Session s = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   TemporaryQueue queue = s.createTemporaryQueue();
   MessageConsumer consumer = s.createConsumer(queue);

   Topic advisoryTopic = AdvisorySupport.getMessageConsumedAdvisoryTopic((ActiveMQDestination) queue);
   MessageConsumer advisoryConsumer = s.createConsumer(advisoryTopic);
   //start throwing messages at the consumer
   MessageProducer producer = s.createProducer(queue);

   BytesMessage m = s.createBytesMessage();
   m.writeBytes(new byte[1024]);
   producer.send(m);
   String id = m.getJMSMessageID();
   Message msg = consumer.receive(1000);
   assertNotNull(msg);

   msg = advisoryConsumer.receive(1000);
   assertNotNull(msg);

   ActiveMQMessage message = (ActiveMQMessage) msg;
   ActiveMQMessage payload = (ActiveMQMessage) message.getDataStructure();
   String originalId = payload.getJMSMessageID();
   assertEquals(originalId, id);
}
项目:activemq-artemis    文件:JmsTempDestinationTest.java   
/**
 * Test you can't delete a Destination with Active Subscribers
 *
 * @throws JMSException
 */
@Test
public void testDeleteDestinationWithSubscribersFails() throws JMSException {
   Connection connection = factory.createConnection();
   connections.add(connection);
   Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   TemporaryQueue queue = session.createTemporaryQueue();

   connection.start();

   session.createConsumer(queue);

   // This message delivery should NOT work since the temp connection is
   // now closed.
   try {
      queue.delete();
      Assert.fail("Should fail as Subscribers are active");
   } catch (JMSException e) {
      Assert.assertTrue("failed to throw an exception", true);
   }
}
项目:activemq-artemis    文件:MessageHeaderTest.java   
/**
 * Test that if the JMS ReplyTo header field has been set as a <code>TemporaryQueue</code>,
 * it will be rightly get also as a <code>TemporaryQueue</code>
 * (and not only as a <code>Queue</code>).
 */
@Test
public void testJMSReplyTo_2() {
   try {
      TemporaryQueue tempQueue = senderSession.createTemporaryQueue();
      Message message = senderSession.createMessage();
      message.setJMSReplyTo(tempQueue);
      sender.send(message);

      Message msg = receiver.receive(TestConfig.TIMEOUT);
      Destination dest = msg.getJMSReplyTo();
      Assert.assertTrue("JMS ReplyTo header field should be a TemporaryQueue", dest instanceof TemporaryQueue);
      Queue replyTo = (Queue) dest;
      Assert.assertEquals("JMS ReplyTo header field should be equals to the temporary queue", replyTo.getQueueName(), tempQueue.getQueueName());
   } catch (JMSException e) {
      fail(e);
   }
}
项目:activemq-artemis    文件:TemporaryDestinationTest.java   
@Test
public void testTemporaryQueueShouldNotBeInJNDI() throws Exception {
   Connection producerConnection = createConnection();

   Session producerSession = producerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);

   TemporaryQueue tempQueue = producerSession.createTemporaryQueue();
   String queueName = tempQueue.getQueueName();

   try {
      ic.lookup("/queue/" + queueName);
      ProxyAssertSupport.fail("The temporary queue should not be bound to JNDI");
   } catch (NamingException e) {
      // Expected
   }
}
项目:activemq-artemis    文件:TemporaryDestinationTest.java   
/**
 * https://jira.jboss.org/jira/browse/JBMESSAGING-1566
 */
@Test
public void testCanNotCreateConsumerFromAnotherConnectionForTemporaryQueue() throws Exception {
   Connection conn = createConnection();

   Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);

   TemporaryQueue tempQueue = sess.createTemporaryQueue();

   Connection anotherConn = createConnection();

   Session sessFromAnotherConn = anotherConn.createSession(false, Session.AUTO_ACKNOWLEDGE);

   try {
      sessFromAnotherConn.createConsumer(tempQueue);
      ProxyAssertSupport.fail("Only temporary destination's own connection is allowed to create MessageConsumers for them.");
   } catch (JMSException e) {
   }

   conn.close();
   anotherConn.close();
}
项目:activemq-artemis    文件:CoreAmqpConverter.java   
private static byte destinationType(Destination destination) {
   if (destination instanceof Queue) {
      if (destination instanceof TemporaryQueue) {
         return TEMP_QUEUE_TYPE;
      } else {
         return QUEUE_TYPE;
      }
   } else if (destination instanceof Topic) {
      if (destination instanceof TemporaryTopic) {
         return TEMP_TOPIC_TYPE;
      } else {
         return TOPIC_TYPE;
      }
   }

   throw new IllegalArgumentException("Unknown Destination Type passed to JMS Transformer.");
}
项目:activemq-artemis    文件:ActiveMQSession.java   
@Override
public TemporaryQueue createTemporaryQueue() throws JMSException {
   // As per spec. section 4.11
   if (sessionType == ActiveMQSession.TYPE_TOPIC_SESSION) {
      throw new IllegalStateException("Cannot create a temporary queue using a TopicSession");
   }

   try {
      ActiveMQTemporaryQueue queue = ActiveMQDestination.createTemporaryQueue(this);

      SimpleString simpleAddress = queue.getSimpleAddress();

      session.createTemporaryQueue(simpleAddress, RoutingType.ANYCAST, simpleAddress);

      connection.addTemporaryQueue(simpleAddress);

      return queue;
   } catch (ActiveMQException e) {
      throw JMSExceptionHelper.convertFromActiveMQException(e);
   }
}
项目:ffmq    文件:LocalSessionTest.java   
public void testTemporaryQueueLifecycle() throws Exception
{
    Session session;
    TextMessage msg;
    MessageProducer producer;
    MessageConsumer consumer;

    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    TemporaryQueue tempQueue = session.createTemporaryQueue();

    msg = session.createTextMessage("foobar");
    producer = session.createProducer(tempQueue);
    producer.send(msg, DeliveryMode.NON_PERSISTENT, 0, 0);
    producer.close();

    consumer = session.createConsumer(tempQueue);
    connection.start();
    msg = (TextMessage) consumer.receive(RECV_TIMEOUT);
    assertNotNull(msg);
    assertEquals("foobar", msg.getText());

    tempQueue.delete();
    session.close();
}
项目:ffmq    文件:LocalSession.java   
@Override
public TemporaryQueue createTemporaryQueue() throws JMSException
   {    
    externalAccessLock.readLock().lock();
    try
    {
        checkNotClosed();
        String queueName = "TEMP-QUEUE-"+UUIDProvider.getInstance().getShortUUID();
        engine.createTemporaryQueue(queueName);
        connection.registerTemporaryQueue(queueName);

        return new TemporaryQueueRef(connection,queueName);
    }
    finally
    {
        externalAccessLock.readLock().unlock();
    }
   }
项目:ffmq    文件:RemoteSession.java   
@Override
public TemporaryQueue createTemporaryQueue() throws JMSException
   {
    externalAccessLock.readLock().lock();
    try
    {
        checkNotClosed();

        CreateTemporaryQueueQuery query = new CreateTemporaryQueueQuery();
        query.setSessionId(id);
        CreateTemporaryQueueResponse response = (CreateTemporaryQueueResponse)transportEndpoint.blockingRequest(query);

        return new TemporaryQueueRef(connection,response.getQueueName());
    }
    finally
    {
        externalAccessLock.readLock().unlock();
    }
   }
项目:andes    文件:AMQSession.java   
public TemporaryQueue createTemporaryQueue() throws JMSException
{
    checkNotClosed();
    try
    {
        AMQTemporaryQueue result = new AMQTemporaryQueue(this);

        // this is done so that we can produce to a temporary queue before we create a consumer
        result.setQueueName(result.getRoutingKey());
        createQueue(result.getAMQQueueName(), result.isAutoDelete(),
                    result.isDurable(), result.isExclusive());
        bindQueue(result.getAMQQueueName(), result.getRoutingKey(),
                new FieldTable(), result.getExchangeName(), result);
        return result;
    }
    catch (Exception e)
    {
       JMSException jmse = new JMSException("Cannot create temporary queue");
       jmse.setLinkedException(e);
       jmse.initCause(e);
       throw jmse;
    }
}
项目:qpid-jms    文件:MessageIntegrationTest.java   
/**
 * Tests that a connection with a 'prefixes' set on its does not alter the
 * address for a temporary queue in the to/reply-to fields for incoming messages.
 *
 * @throws Exception if an error occurs during the test.
 */
@Test(timeout = 20000)
public void testReceivedMessageWithTemporaryQueueDestinationsOnConnectionWithPrefixes() throws Exception {
    Class<? extends Destination> destType = TemporaryQueue.class;
    String destPrefix = "q12321-";
    String destName = "temp-queue://myTempQueue";
    String replyName = "temp-queue://myReplyTempQueue";
    String destAddress = destName; // We won't manipulate the temporary addresses generated by the broker
    String replyAddress = replyName; // We won't manipulate the temporary addresses generated by the broker
    String annotationName = AmqpDestinationHelper.JMS_DEST_TYPE_MSG_ANNOTATION_SYMBOL_NAME;
    Byte annotationValue = AmqpDestinationHelper.TEMP_QUEUE_TYPE;
    String replyAnnotationName = AmqpDestinationHelper.JMS_REPLY_TO_TYPE_MSG_ANNOTATION_SYMBOL_NAME;
    Byte replyAnnotationValue = AmqpDestinationHelper.TEMP_QUEUE_TYPE;

    doReceivedMessageOnConnectionWithPrefixTestImpl(destType, destPrefix, destName, replyName,
                                                    destAddress, replyAddress, annotationName,
                                                    annotationValue, replyAnnotationName, replyAnnotationValue);
}
项目:qpid-jms    文件:SessionIntegrationTest.java   
@Test(timeout = 20000)
public void testCreateTemporaryQueue() throws Exception {
    try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
        Connection connection = testFixture.establishConnecton(testPeer);
        connection.start();

        testPeer.expectBegin();
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        String dynamicAddress = "myTempQueueAddress";
        testPeer.expectTempQueueCreationAttach(dynamicAddress);

        TemporaryQueue tempQueue = session.createTemporaryQueue();
        assertNotNull("TemporaryQueue object was null", tempQueue);
        assertNotNull("TemporaryQueue queue name was null", tempQueue.getQueueName());
        assertEquals("TemporaryQueue name not as expected", dynamicAddress, tempQueue.getQueueName());

        testPeer.expectClose();
        connection.close();

        testPeer.waitForAllHandlersToComplete(1000);
    }
}
项目:qpid-jms    文件:SessionIntegrationTest.java   
@Test(timeout = 20000)
public void testCreateAndDeleteTemporaryQueue() throws Exception {
    try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
        Connection connection = testFixture.establishConnecton(testPeer);
        connection.start();

        testPeer.expectBegin();
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        String dynamicAddress = "myTempQueueAddress";
        testPeer.expectTempQueueCreationAttach(dynamicAddress);
        TemporaryQueue tempQueue = session.createTemporaryQueue();

        // Deleting the TemporaryQueue will be achieved by closing its creating link.
        testPeer.expectDetach(true, true, true);
        tempQueue.delete();

        testPeer.expectClose();
        connection.close();

        testPeer.waitForAllHandlersToComplete(1000);
    }
}
项目:qpid-jms    文件:JmsConnectionTest.java   
@Test(timeout=30000)
public void testDeleteOfTempQueueOnClosedConnection() throws JMSException, IOException {
    connection = new JmsConnection(connectionInfo, provider);
    connection.start();

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    TemporaryQueue tempQueue = session.createTemporaryQueue();
    assertNotNull(tempQueue);

    connection.close();
    try {
        tempQueue.delete();
        fail("Should have thrown an IllegalStateException");
    } catch (IllegalStateException ex) {
    }
}
项目:qpid-jms    文件:JmsSessionTest.java   
@Test(timeout = 10000)
public void testCannotCreateConsumerOnDeletedTemporaryDestination() throws JMSException {
    JmsSession session = (JmsSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    TemporaryQueue tempQueue = session.createTemporaryQueue();
    MessageProducer producer = session.createProducer(tempQueue);

    try {
        producer.send(session.createMessage());
    } catch (Exception ex) {
        fail("Should be able to send to this temporary destination");
    }

    tempQueue.delete();

    try {
        producer.send(session.createMessage());
        fail("Should not be able to send to this temporary destination");
    } catch (IllegalStateException ise) {}
}
项目:qpid-jms    文件:JmsSessionTest.java   
@Test(timeout=30000)
public void testDeleteTemporaryQueue() throws Exception {
    connection = createAmqpConnection();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Queue queue = session.createTemporaryQueue();
    assertNotNull(queue);
    assertTrue(queue instanceof TemporaryQueue);

    final BrokerViewMBean broker = getProxyToBroker();
    assertEquals(1, broker.getTemporaryQueues().length);

    TemporaryQueue tempQueue = (TemporaryQueue) queue;
    tempQueue.delete();

    assertTrue("Temp Queue should be deleted.", Wait.waitFor(new Wait.Condition() {

        @Override
        public boolean isSatisified() throws Exception {
            return broker.getTemporaryQueues().length == 0;
        }
    }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(50)));
}
项目:qpid-jms    文件:JmsTemporaryQueueTest.java   
@Test(timeout = 60000)
public void testCantConsumeFromTemporaryQueueCreatedOnAnotherConnection() throws Exception {
    connection = createAmqpConnection();
    connection.start();

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    TemporaryQueue tempQueue = session.createTemporaryQueue();
    session.createConsumer(tempQueue);

    Connection connection2 = createAmqpConnection();
    try {
        Session session2 = connection2.createSession(false, Session.AUTO_ACKNOWLEDGE);
        try {
            session2.createConsumer(tempQueue);
            fail("should not be able to consumer from temporary queue from another connection");
        } catch (InvalidDestinationException ide) {
            // expected
        }
    } finally {
        connection2.close();
    }
}
项目:qpid-jms    文件:JmsTemporaryQueueTest.java   
@Test(timeout = 60000)
public void testCantDeleteTemporaryQueueWithConsumers() throws Exception {
    connection = createAmqpConnection();
    connection.start();

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    TemporaryQueue tempQueue = session.createTemporaryQueue();
    MessageConsumer consumer = session.createConsumer(tempQueue);

    try {
        tempQueue.delete();
        fail("should not be able to delete temporary queue with active consumers");
    } catch (IllegalStateException ide) {
        // expected
    }

    consumer.close();

    // Now it should be allowed
    tempQueue.delete();
}
项目:hawtjms    文件:JmsMessageTransformation.java   
/**
 * Creates a an available JMS message from another provider.
 *
 * @param destination
 *        - Destination to be converted into Jms's implementation.
 * @return JmsDestination - Jms's implementation of the
 *         destination.
 * @throws JMSException
 * @throws JMSException
 *         if an error occurs
 */
public static JmsDestination transformDestination(JmsConnection connection, Destination destination) throws JMSException {
    JmsDestination result = null;

    if (destination != null) {
        if (destination instanceof JmsDestination) {
            return (JmsDestination) destination;

        } else {
            if (destination instanceof TemporaryQueue) {
                result = new JmsTemporaryQueue(((TemporaryQueue) destination).getQueueName());
            } else if (destination instanceof TemporaryTopic) {
                result = new JmsTemporaryTopic(((TemporaryTopic) destination).getTopicName());
            } else if (destination instanceof Queue) {
                result = new JmsQueue(((Queue) destination).getQueueName());
            } else if (destination instanceof Topic) {
                result = new JmsTopic(((Topic) destination).getTopicName());
            }
        }
    }

    return result;
}
项目:hawtjms    文件:AmqpJMSVendor.java   
@Override
public <T extends Destination> T createDestination(String name, Class<T> kind) {
    if (kind == Queue.class) {
        return kind.cast(new JmsQueue(name));
    }
    if (kind == Topic.class) {
        return kind.cast(new JmsTopic(name));
    }
    if (kind == TemporaryQueue.class) {
        return kind.cast(new JmsTemporaryQueue(name));
    }
    if (kind == TemporaryTopic.class) {
        return kind.cast(new JmsTemporaryTopic(name));
    }

    return kind.cast(new JmsQueue(name));
}
项目:ActiveMQ-HowTo    文件:RequesterExample.java   
public void run() throws Exception {
    TemporaryQueue responseQ = session.createTemporaryQueue();
    MessageProducer requester = session.createProducer(destination);
    MessageConsumer responseListener = session.createConsumer(responseQ);
    responseListener.setMessageListener(this);

    for (int i = 0; i < NUM_REQUESTS; i++) {
        TextMessage request = session.createTextMessage("Job Request");
        request.setJMSReplyTo(responseQ);
        request.setJMSCorrelationID("request: " + i);
        System.out.println(request.getText());
        requester.send(request);
    }

    if (done.await(10, TimeUnit.MINUTES)) {
        System.out.println("Woohoo! Work's all done!");
    } else {
        System.out.println("Doh!! Work didn't get done.");
    }
}
项目:generic-jms-ra    文件:JmsSession.java   
public TemporaryQueue createTemporaryQueue() throws JMSException {
    if (info.getType() == JmsConnectionFactory.TOPIC) {
        throw new IllegalStateException("Cannot create temporary queue for javax.jms.TopicSession");

    }

    lock();
    try {
        Session session = getSession();
        if (trace)
            log.trace("createTemporaryQueue " + session);
        TemporaryQueue temp = session.createTemporaryQueue();
        if (trace)
            log.trace("createdTemporaryQueue " + session + " temp=" + temp);
        sf.addTemporaryQueue(temp);
        return temp;
    } finally {
        unlock();
    }
}
项目:pooled-jms    文件:JmsPoolSession.java   
@Override
public TemporaryQueue createTemporaryQueue() throws JMSException {
    TemporaryQueue result;

    result = getInternalSession().createTemporaryQueue();

    // Notify all of the listeners of the created temporary Queue.
    for (JmsPoolSessionEventListener listener : this.sessionEventListeners) {
        listener.onTemporaryQueueCreate(result);
    }

    return result;
}
项目:pooled-jms    文件:JmsPoolJMSContext.java   
@Override
public TemporaryQueue createTemporaryQueue() {
    try {
        return getSession().createTemporaryQueue();
    } catch (JMSException jmse) {
        throw JMSExceptionSupport.createRuntimeException(jmse);
    }
}
项目:pooled-jms    文件:MockJMSConnection.java   
protected TemporaryQueue createTemporaryQueue() throws JMSException {
    String destinationName = connectionId.toString() + ":" + tempDestIdGenerator.incrementAndGet();
    MockJMSTemporaryQueue queue = new MockJMSTemporaryQueue(destinationName);
    signalCreateTemporaryDestination(queue);
    tempDestinations.put(queue, queue);
    queue.setConnection(this);
    stats.temporaryDestinationCreated(queue);
    return queue;
}