⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmstopicsubscriber.java

📁 实现了Jms的服务器源码,支持多种适配器,DB,FTP,支持多种数据库
💻 JAVA
字号:
/**
 * Redistribution and use of this software and associated documentation
 * ("Software"), with or without modification, are permitted provided
 * that the following conditions are met:
 *
 * 1. Redistributions of source code must retain copyright
 *    statements and notices.  Redistributions must also contain a
 *    copy of this document.
 *
 * 2. Redistributions in binary form must reproduce the
 *    above copyright notice, this list of conditions and the
 *    following disclaimer in the documentation and/or other
 *    materials provided with the distribution.
 *
 * 3. The name "Exolab" must not be used to endorse or promote
 *    products derived from this Software without prior written
 *    permission of Exoffice Technologies.  For written permission,
 *    please contact info@exolab.org.
 *
 * 4. Products derived from this Software may not be called "Exolab"
 *    nor may "Exolab" appear in their names without prior written
 *    permission of Exoffice Technologies. Exolab is a registered
 *    trademark of Exoffice Technologies.
 *
 * 5. Due credit should be given to the Exolab Project
 *    (http://www.exolab.org/).
 *
 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Copyright 2000-2004 (C) Exoffice Technologies Inc. All Rights Reserved.
 *
 * $Id: JmsTopicSubscriber.java,v 1.10 2004/01/20 14:14:21 tanderson Exp $
 */
package org.exolab.jms.client;

import javax.jms.InvalidDestinationException;
import javax.jms.JMSException;
import javax.jms.TopicSubscriber;
import javax.jms.Topic;


/**
 * Client implementation of the <code>javax.jms.TopicSubscriber</code>
 * interface
 *
 * @version     $Revision: 1.10 $ $Date: 2004/01/20 14:14:21 $
 * @author      <a href="mailto:jima@comware.com.au">Jim Alateras</a>
 * @author      <a href="mailto:tma@netspace.net.au">Tim Anderson</a>
 */
class JmsTopicSubscriber
    extends JmsMessageConsumer
    implements TopicSubscriber {

    /**
     * The topic to receive messages from
     */
    private JmsTopic _topic = null;

    /**
     * If <code>true</code>, indicates that locally published messages
     * are inhibited.
     */
    private boolean _noLocal = false;

    /**
     * The subscription name, for durable subscribers. If <code>null</code>,
     * indicates a non-durable subscriber.
     */
    private String _name = null;


    /**
     * Construct a new <code>JmsTopicSubscriber</code>
     *
     * @param session the session responsible for the consumer
     * @param clientId the session allocated consumer identifier
     * @param topic the topic to subscribe to
     * @param selector the message selector. May be <code>null</code>
     * @param noLocal if <code>true</code>, indicates that locally published
     * messages are inhibited.
     * @param name the subscription name, for durable consumers. If
     * <code>null</code>, indicates a non-durable subscriber.
     * @throws InvalidDestinationException if <code>topic</code> is null
     */
    public JmsTopicSubscriber(JmsSession session, long clientId,
                              JmsTopic topic, String selector,
                              boolean noLocal, String name)
        throws InvalidDestinationException {
        super(session, clientId, selector);
        if (topic == null) {
            throw new InvalidDestinationException("Argument 'topic' is null");
        }

        _topic = topic;
        _noLocal = noLocal;
        _name = name;
    }

    /**
     * Returns the topic associated with this subscriber
     *
     * @return the topic associated with this subscriber
     */
    public Topic getTopic() {
        return _topic;
    }

    /**
     * Returns if locally published messages are being inhibited
     *
     * @return <code>true</code> if locally published messages are being
     * inhibited.
     */
    public boolean getNoLocal() {
        return _noLocal;
    }

    /**
     * Return the durable subscription name
     *
     * @return the durable subscription name, or <code>null</code> if
     * this is a non-durable subscriber
     */
    public String getName() {
        return _name;
    }

    /**
     * Determines if the subscriber is durable
     *
     * @return <code>true</code> if the subscriber is durable
     */
    public boolean isDurableSubscriber() {
        return ((_name != null) && (_name.length() > 0));
    }

    /**
     * Close the subscriber.
     * This call blocks until a receive or message listener in progress has
     * completed. A blocked subscriber receive call returns <code>null</code>
     * when this subscriber is closed.
     *
     * @throws JMSException if this subscriber can't be closed
     */
    public synchronized void close() throws JMSException {
        if (!isClosed()) {
            // unregister this subscriber from the session and then call the
            // base class method.
            JmsTopicSession session = (JmsTopicSession) getSession();
            session.removeSubscriber(this);
            super.close();
        }
    }

    /**
     * Release all resources used by this subscriber
     *
     * @throws JMSException if this subscriber can't be destroyed
     */
    public synchronized void destroy() throws JMSException {
        _topic = null;
        super.destroy();
    }

}

⌨️ 快捷键说明

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