org.apache.activemq.broker.jmx.InactiveDurableSubscriptionView Maven / Gradle / Ivy
/**
* 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.jmx;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.TabularData;
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.region.Subscription;
import org.apache.activemq.command.ConsumerInfo;
import org.apache.activemq.command.RemoveSubscriptionInfo;
import org.apache.activemq.command.SubscriptionInfo;
/**
*
*
*/
public class InactiveDurableSubscriptionView extends DurableSubscriptionView implements DurableSubscriptionViewMBean {
protected SubscriptionInfo subscriptionInfo;
/**
* Constructor
*
* @param broker
* @param brokerService
* @param clientId
* @param subInfo
* @param subscription
*/
public InactiveDurableSubscriptionView(ManagedRegionBroker broker, BrokerService brokerService, String clientId, SubscriptionInfo subInfo, Subscription subscription) {
super(broker, brokerService, clientId, null, subscription);
this.broker = broker;
this.subscriptionInfo = subInfo;
}
/**
* @return the id of the Subscription
*/
@Override
public long getSubscriptionId() {
return -1;
}
/**
* @return the destination name
*/
@Override
public String getDestinationName() {
return subscriptionInfo.getDestination().getPhysicalName();
}
/**
* @return true if the destination is a Queue
*/
@Override
public boolean isDestinationQueue() {
return false;
}
/**
* @return true of the destination is a Topic
*/
@Override
public boolean isDestinationTopic() {
return true;
}
/**
* @return true if the destination is temporary
*/
@Override
public boolean isDestinationTemporary() {
return false;
}
/**
* @return name of the durable consumer
*/
@Override
public String getSubscriptionName() {
return subscriptionInfo.getSubscriptionName();
}
/**
* @return true if the subscriber is active
*/
@Override
public boolean isActive() {
return false;
}
@Override
protected ConsumerInfo getConsumerInfo() {
// when inactive, consumer info is stale
return null;
}
/**
* Browse messages for this durable subscriber
*
* @return messages
* @throws OpenDataException
*/
@Override
public CompositeData[] browse() throws OpenDataException {
return broker.browse(this);
}
/**
* Browse messages for this durable subscriber
*
* @return messages
* @throws OpenDataException
*/
@Override
public TabularData browseAsTable() throws OpenDataException {
return broker.browseAsTable(this);
}
/**
* Destroys the durable subscription so that messages will no longer be
* stored for this subscription
*/
@Override
public void destroy() throws Exception {
RemoveSubscriptionInfo info = new RemoveSubscriptionInfo();
info.setClientId(clientId);
info.setSubscriptionName(subscriptionInfo.getSubscriptionName());
ConnectionContext context = new ConnectionContext();
context.setBroker(broker);
context.setClientId(clientId);
brokerService.getBroker().removeSubscription(context, info);
}
@Override
public String toString() {
return "InactiveDurableSubscriptionView: " + getClientId() + ":" + getSubscriptionName();
}
@Override
public String getSelector() {
return subscriptionInfo.getSelector();
}
@Override
public void removeMessage(@MBeanInfo("messageId") String messageId) throws Exception {
broker.remove(this, messageId);
}
}