|
ActiveMQ example source code file (Subscription.java)
The ActiveMQ Subscription.java source code/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.activemq.broker.region; import java.io.IOException; import java.util.List; import javax.jms.InvalidSelectorException; import javax.management.ObjectName; import org.apache.activemq.broker.ConnectionContext; import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.ConsumerInfo; import org.apache.activemq.command.MessageAck; import org.apache.activemq.command.MessageDispatchNotification; import org.apache.activemq.command.MessagePull; import org.apache.activemq.command.Response; import org.apache.activemq.filter.MessageEvaluationContext; /** * */ public interface Subscription extends SubscriptionRecovery { /** * Used to add messages that match the subscription. * @param node * @throws Exception * @throws InterruptedException * @throws IOException */ void add(MessageReference node) throws Exception; /** * Used when client acknowledge receipt of dispatched message. * @param node * @throws IOException * @throws Exception */ void acknowledge(ConnectionContext context, final MessageAck ack) throws Exception; /** * Allows a consumer to pull a message on demand */ Response pullMessage(ConnectionContext context, MessagePull pull) throws Exception; /** * Is the subscription interested in the message? * @param node * @param context * @return * @throws IOException */ boolean matches(MessageReference node, MessageEvaluationContext context) throws IOException; /** * Is the subscription interested in messages in the destination? * @param context * @return */ boolean matches(ActiveMQDestination destination); /** * The subscription will be receiving messages from the destination. * @param context * @param destination * @throws Exception */ void add(ConnectionContext context, Destination destination) throws Exception; /** * The subscription will be no longer be receiving messages from the destination. * @param context * @param destination * @return a list of un-acked messages that were added to the subscription. */ List<MessageReference> remove(ConnectionContext context, Destination destination) throws Exception; /** * The ConsumerInfo object that created the subscription. * @param destination */ ConsumerInfo getConsumerInfo(); /** * The subscription should release as may references as it can to help the garbage collector * reclaim memory. */ void gc(); /** * Used by a Slave Broker to update dispatch infomation * @param mdn * @throws Exception */ void processMessageDispatchNotification(MessageDispatchNotification mdn) throws Exception; /** * @return true if the broker is currently in slave mode */ boolean isSlave(); /** * @return number of messages pending delivery */ int getPendingQueueSize(); /** * @return number of messages dispatched to the client */ int getDispatchedQueueSize(); /** * @return number of messages dispatched to the client */ long getDispatchedCounter(); /** * @return number of messages that matched the subscription */ long getEnqueueCounter(); /** * @return number of messages queued by the client */ long getDequeueCounter(); /** * @return the JMS selector on the current subscription */ String getSelector(); /** * Attempts to change the current active selector on the subscription. * This operation is not supported for persistent topics. */ void setSelector(String selector) throws InvalidSelectorException, UnsupportedOperationException; /** * @return the JMX object name that this subscription was registered as if applicable */ ObjectName getObjectName(); /** * Set when the subscription is registered in JMX */ void setObjectName(ObjectName objectName); /** * @return true when 60% or more room is left for dispatching messages */ boolean isLowWaterMark(); /** * @return true when 10% or less room is left for dispatching messages */ boolean isHighWaterMark(); /** * @return true if there is no space to dispatch messages */ boolean isFull(); /** * inform the MessageConsumer on the client to change it's prefetch * @param newPrefetch */ void updateConsumerPrefetch(int newPrefetch); /** * Called when the subscription is destroyed. */ void destroy(); /** * @return the prefetch size that is configured for the subscription */ int getPrefetchSize(); /** * @return the number of messages awaiting acknowledgement */ int getInFlightSize(); /** * @return the in flight messages as a percentage of the prefetch size */ int getInFlightUsage(); /** * Informs the Broker if the subscription needs to intervention to recover it's state * e.g. DurableTopicSubscriber may do * @see org.apache.activemq.region.cursors.PendingMessageCursor * @return true if recovery required */ boolean isRecoveryRequired(); /** * @return true if a browser */ boolean isBrowser(); /** * @return the number of messages this subscription can accept before its full */ int countBeforeFull(); ConnectionContext getContext(); public int getCursorMemoryHighWaterMark(); public void setCursorMemoryHighWaterMark(int cursorMemoryHighWaterMark); boolean isSlowConsumer(); void unmatched(MessageReference node) throws IOException; } Other ActiveMQ examples (source code examples)Here is a short list of links related to this ActiveMQ Subscription.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.