jmssession.java

来自「OpenJMS是一个开源的Java Message Service API 1.」· Java 代码 · 共 1,363 行 · 第 1/4 页

JAVA
1,363
字号
        return (_ackMode == SESSION_TRANSACTED);    }    /**     * Returns the acknowledgement mode of the session. The acknowledgement mode     * is set at the time that the session is created. If the session is     * transacted, the acknowledgement mode is ignored.     *     * @return If the session is not transacted, returns the current     *         acknowledgement mode for the session. If the session is     *         transacted, returns SESSION_TRANSACTED.     * @throws JMSException if the JMS provider fails to return the     *                      acknowledgment mode due to some internal error.     * @see Connection#createSession     */    public int getAcknowledgeMode() throws JMSException {        ensureOpen();        return _ackMode;    }    /**     * Creates a <code>MessageProducer</code> to send messages to the specified     * destination.     *     * @param destination the <code>Destination</code> to send to, or null if     *                    this is a producer which does not have a specified     *                    destination.     * @throws JMSException                if the session fails to create a     *                                     MessageProducer due to some internal     *                                     error.     * @throws InvalidDestinationException if an invalid destination is     *                                     specified.     */    public MessageProducer createProducer(Destination destination)            throws JMSException {        ensureOpen();        return new JmsMessageProducer(this, destination);    }    /**     * Creates a <code>MessageConsumer</code> for the specified destination.     *     * @param destination the <code>Destination</code> to access.     * @throws JMSException                if the session fails to create a     *                                     consumer due to some internal error.     * @throws InvalidDestinationException if an invalid destination is     *                                     specified.     */    public MessageConsumer createConsumer(Destination destination)            throws JMSException {        return createConsumer(destination, null);    }    /**     * Creates a <code>MessageProducer</code> to receive messages from the     * specified destination, matching particular selection criteria     *     * @param destination     the <code>Destination</code> to access     * @param messageSelector only messages with properties matching the message     *                        selector expression are delivered. A value of null     *                        or an empty string indicates that there is no     *                        message selector for the message consumer.     * @throws JMSException                if the session fails to create a     *                                     MessageConsumer due to some internal     *                                     error.     * @throws InvalidDestinationException if an invalid destination is     *                                     specified.     * @throws InvalidSelectorException    if the message selector is invalid.     */    public MessageConsumer createConsumer(Destination destination,                                          String messageSelector)            throws JMSException {        return createConsumer(destination, messageSelector, false);    }    /**     * Creates a <code>MessageConsumer</code> to receive messages from the     * specified destination, matching particular selection criteria. This     * method can specify whether messages published by its own connection     * should be delivered to it, if the destination is a topic. <P>In some     * cases, a connection may both publish and subscribe to a topic. The     * consumer <code>noLocal</code> attribute allows a consumer to inhibit the     * delivery of messages published by its own connection. The default value     * for this attribute is false. The <code>noLocal</code> value must be     * supported by destinations that are topics.     *     * @param destination     the <code>Destination</code> to access     * @param messageSelector only messages with properties matching the message     *                        selector expression are delivered. A value of null     *                        or an empty string indicates that there is no     *                        message selector for the message consumer.     * @param noLocal         if true, and the destination is a topic, inhibits     *                        the delivery of messages published by its own     *                        connection.  The behavior for <code>noLocal</code>     *                        is not specified if the destination is a queue.     * @throws JMSException                if the session fails to create a     *                                     MessageConsumer due to some internal     *                                     error.     * @throws InvalidDestinationException if an invalid destination is     *                                     specified.     * @throws InvalidSelectorException    if the message selector is invalid.     */    public MessageConsumer createConsumer(Destination destination,                                          String messageSelector,                                          boolean noLocal) throws JMSException {        long consumerId = allocateConsumer(destination, messageSelector,                                           noLocal);        JmsMessageConsumer consumer = new JmsMessageConsumer(this, consumerId,                                                             destination,                                                             messageSelector);        addConsumer(consumer);        return consumer;    }    /**     * Creates a queue identity given a <code>Queue</code> name.     * <p/>     * <P>This facility is provided for the rare cases where clients need to     * dynamically manipulate queue identity. It allows the creation of a queue     * identity with a provider-specific name. Clients that depend on this     * ability are not portable.     * <p/>     * <P>Note that this method is not for creating the physical queue. The     * physical creation of queues is an administrative task and is not to be     * initiated by the JMS API. The one exception is the creation of temporary     * queues, which is accomplished with the <code>createTemporaryQueue</code>     * method.     *     * @param queueName the name of this <code>Queue</code>     * @return a <code>Queue</code> with the given name     * @throws JMSException if the session fails to create a queue due to some     *                      internal error.     */    public Queue createQueue(String queueName) throws JMSException {        ensureOpen();        JmsQueue queue;        if (queueName != null && queueName.length() > 0) {            queue = new JmsQueue(queueName);        } else {            throw new JMSException(                    "Cannot create a queue with null or empty name");        }        return queue;    }    /**     * Creates a topic identity given a <code>Topic</code> name.     * <p/>     * <P>This facility is provided for the rare cases where clients need to     * dynamically manipulate topic identity. This allows the creation of a     * topic identity with a provider-specific name. Clients that depend on this     * ability are not portable.     * <p/>     * <P>Note that this method is not for creating the physical topic. The     * physical creation of topics is an administrative task and is not to be     * initiated by the JMS API. The one exception is the creation of temporary     * topics, which is accomplished with the <code>createTemporaryTopic</code>     * method.     *     * @param topicName the name of this <code>Topic</code>     * @return a <code>Topic</code> with the given name     * @throws JMSException if the session fails to create a topic due to some     *                      internal error.     */    public Topic createTopic(String topicName) throws JMSException {        ensureOpen();        JmsTopic topic;        if (topicName != null && topicName.length() > 0) {            topic = new JmsTopic(topicName);        } else {            throw new JMSException("Invalid or null topic name specified");        }        return topic;    }    /**     * Creates a durable subscriber to the specified topic.     * <p/>     * <P>If a client needs to receive all the messages published on a topic,     * including the ones published while the subscriber is inactive, it uses a     * durable <code>TopicSubscriber</code>. The JMS provider retains a record     * of this durable subscription and insures that all messages from the     * topic's publishers are retained until they are acknowledged by this     * durable subscriber or they have expired.     * <p/>     * <P>Sessions with durable subscribers must always provide the same client     * identifier. In addition, each client must specify a name that uniquely     * identifies (within client identifier) each durable subscription it     * creates. Only one session at a time can have a <code>TopicSubscriber</code>     * for a particular durable subscription.     * <p/>     * <P>A client can change an existing durable subscription by creating a     * durable <code>TopicSubscriber</code> with the same name and a new topic     * and/or message selector. Changing a durable subscriber is equivalent to     * unsubscribing (deleting) the old one and creating a new one.     * <p/>     * <P>In some cases, a connection may both publish and subscribe to a topic.     * The subscriber <code>noLocal</code> attribute allows a subscriber to     * inhibit the delivery of messages published by its own connection. The     * default value for this attribute is false.     *     * @param topic the non-temporary <code>Topic</code> to subscribe to     * @param name  the name used to identify this subscription     * @throws JMSException                if the session fails to create a     *                                     subscriber due to some internal     *                                     error.     * @throws InvalidDestinationException if an invalid topic is specified.     */    public TopicSubscriber createDurableSubscriber(Topic topic, String name)            throws JMSException {        return createDurableSubscriber(topic, name, null, false);    }    /**     * Creates a durable subscriber to the specified topic, using a message     * selector and specifying whether messages published by its own connection     * should be delivered to it.     * <p/>     * <P>If a client needs to receive all the messages published on a topic,     * including the ones published while the subscriber is inactive, it uses a     * durable <code>TopicSubscriber</code>. The JMS provider retains a record     * of this durable subscription and insures that all messages from the     * topic's publishers are retained until they are acknowledged by this     * durable subscriber or they have expired.     * <p/>     * <P>Sessions with durable subscribers must always provide the same client     * identifier. In addition, each client must specify a name which uniquely     * identifies (within client identifier) each durable subscription it     * creates. Only one session at a time can have a <code>TopicSubscriber</code>     * for a particular durable subscription. An inactive durable subscriber is     * one that exists but does not currently have a message consumer associated     * with it.     * <p/>     * <P>A client can change an existing durable subscription by creating a     * durable <code>TopicSubscriber</code> with the same name and a new topic     * and/or message selector. Changing a durable subscriber is equivalent to     * unsubscribing (deleting) the old one and creating a new one.     *     * @param topic           the non-temporary <code>Topic</code> to subscribe     *                        to     * @param name            the name used to identify this subscription     * @param messageSelector only messages with properties matching the message     *                        selector expression are delivered.  A value of     *                        null or an empty string indicates that there is no     *                        message selector for the message consumer.     * @param noLocal         if set, inhibits the delivery of messages     *                        published by its own connection     * @throws JMSException                if the session fails to create a     *                                     subscriber due to some internal     *                                     error.     * @throws InvalidDestinationException if an invalid topic is specified.     * @throws InvalidSelectorException    if the message selector is invalid.     */    public TopicSubscriber createDurableSubscriber(Topic topic, String name,                                                   String messageSelector,                                                   boolean noLocal)            throws JMSException {        ensureOpen();        if (topic == null) {            throw new InvalidDestinationException("Cannot create durable subscriber: argument 'topic' is "                                                  + " null");        }        if (name == null || name.trim().length() == 0) {            throw new JMSException("Invalid subscription name specified");        }        // check to see if the topic is a temporary topic. You cannot        // create a durable subscriber for a temporary topic        if (((JmsTopic) topic).isTemporaryDestination()) {            throw new InvalidDestinationException(                    "Cannot create a durable subscriber for a temporary topic");        }        long consumerId = _session.createDurableConsumer((JmsTopic) topic, name,                                                         messageSelector,                                                         noLocal);        JmsTopicSubscriber subscriber = new JmsTopicSubscriber(this,                                                               consumerId,                                                               topic,                                                               messageSelector,                                                               noLocal);        addConsumer(subscriber);        return subscriber;    }    /**     * Creates a <code>QueueBrowser</code> object to peek at the messages on the     * specified queue.     *     * @param queue the queue to access     * @throws JMSException                if the session fails to create a     *                                     browser due to some internal error.     * @throws InvalidDestinationException if an invalid destination is     *                                     specified     */    public QueueBrowser createBrowser(Queue queue) throws JMSException {        return createBrowser(queue, null);    }    /**     * Creates a <code>QueueBrowser</code> object to peek at the messages on the     * specified queue using a message selector.     *     * @param queue           the <code>queue</code> to access     * @param messageSelector only messages with properties matching the message     *                        selector expression are delivered. A value of null     *                        or an empty string indicates that there is no     *                        message selector for the message consumer.     * @throws JMSException                if the session fails to create a     *                                     browser due to some internal error.     * @throws InvalidDestinationException if an invalid destination is     *                                     specified     * @throws InvalidSelectorException    if the message selector is invalid.     */    public QueueBrowser createBrowser(Queue queue, String messageSelector)            throws JMSException {        ensureOpen();        if (!(queue instanceof JmsQueue)) {            throw new InvalidDestinationException("Cannot create QueueBrowser for destination="                                                  + queue);        }        JmsQueue dest = (JmsQueue) queue;        // check to see if the queue is temporary. A temporary queue        // can only be used within the context of the owning connection        if (!checkForValidTemporaryDestination(dest)) {            throw new InvalidDestinationException(                    "Cannot create a queue browser for a temporary queue "                    + "that is not bound to this connection");        }        long consumerId = _session.createBrowser(dest, messageSelector);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?