Search in sources :

Example 6 with Action

use of org.apache.qpid.server.util.Action in project qpid-broker-j by apache.

the class AMQChannel method deadLetter.

private void deadLetter(long deliveryTag) {
    final UnacknowledgedMessageMap unackedMap = getUnacknowledgedMessageMap();
    final MessageConsumerAssociation association = unackedMap.remove(deliveryTag, true);
    if (association == null) {
        LOGGER.warn("No message found, unable to DLQ delivery tag: " + deliveryTag);
    } else {
        final MessageInstance messageInstance = association.getMessageInstance();
        final ServerMessage msg = messageInstance.getMessage();
        int requeues = 0;
        if (messageInstance.makeAcquisitionUnstealable(association.getConsumer())) {
            requeues = messageInstance.routeToAlternate(new Action<MessageInstance>() {

                @Override
                public void performAction(final MessageInstance requeueEntry) {
                    messageWithSubject(ChannelMessages.DEADLETTERMSG(msg.getMessageNumber(), requeueEntry.getOwningResource().getName()));
                }
            }, null);
        }
        if (requeues == 0) {
            final TransactionLogResource owningResource = messageInstance.getOwningResource();
            if (owningResource instanceof Queue) {
                final Queue<?> queue = (Queue<?>) owningResource;
                final MessageDestination alternateBindingDestination = queue.getAlternateBindingDestination();
                if (alternateBindingDestination == null) {
                    messageWithSubject(ChannelMessages.DISCARDMSG_NOALTEXCH(msg.getMessageNumber(), queue.getName(), msg.getInitialRoutingAddress()));
                } else {
                    messageWithSubject(ChannelMessages.DISCARDMSG_NOROUTE(msg.getMessageNumber(), alternateBindingDestination.getName()));
                }
            }
        }
    }
}
Also used : MessageInstance(org.apache.qpid.server.message.MessageInstance) PrivilegedAction(java.security.PrivilegedAction) Action(org.apache.qpid.server.util.Action) MessageDestination(org.apache.qpid.server.message.MessageDestination) ServerMessage(org.apache.qpid.server.message.ServerMessage) TransactionLogResource(org.apache.qpid.server.store.TransactionLogResource) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) Queue(org.apache.qpid.server.model.Queue)

Example 7 with Action

use of org.apache.qpid.server.util.Action in project qpid-broker-j by apache.

the class AbstractQueue method addLifetimeConstraint.

private void addLifetimeConstraint(final Deletable<? extends Deletable> lifetimeObject) {
    final Action<Deletable> deleteQueueTask = object -> Subject.doAs(getSubjectWithAddedSystemRights(), (PrivilegedAction<Void>) () -> {
        AbstractQueue.this.delete();
        return null;
    });
    lifetimeObject.addDeleteTask(deleteQueueTask);
    addDeleteTask(new DeleteDeleteTask(lifetimeObject, deleteQueueTask));
}
Also used : GZIPInputStream(java.util.zip.GZIPInputStream) ConsumerTarget(org.apache.qpid.server.consumer.ConsumerTarget) SelectorParsingException(org.apache.qpid.server.filter.SelectorParsingException) MessageContainer(org.apache.qpid.server.message.MessageContainer) MessageDestinationIsAlternateException(org.apache.qpid.server.virtualhost.MessageDestinationIsAlternateException) ParseException(org.apache.qpid.server.filter.selector.ParseException) Map(java.util.Map) RejectType(org.apache.qpid.server.message.RejectType) MessageInfo(org.apache.qpid.server.message.MessageInfo) EnumSet(java.util.EnumSet) AutoCommitTransaction(org.apache.qpid.server.txn.AutoCommitTransaction) JMSSelectorFilter(org.apache.qpid.server.filter.JMSSelectorFilter) Set(java.util.Set) AMQPConnection(org.apache.qpid.server.transport.AMQPConnection) InstanceProperties(org.apache.qpid.server.message.InstanceProperties) StandardCharsets(java.nio.charset.StandardCharsets) GenericPrincipal(org.apache.qpid.server.model.preferences.GenericPrincipal) Operation(org.apache.qpid.server.security.access.Operation) VirtualHostUnavailableException(org.apache.qpid.server.virtualhost.VirtualHostUnavailableException) QpidServiceLoader(org.apache.qpid.server.plugin.QpidServiceLoader) ByteStreams(com.google.common.io.ByteStreams) GZIPOutputStream(java.util.zip.GZIPOutputStream) ConnectionScopedRuntimeException(org.apache.qpid.server.util.ConnectionScopedRuntimeException) AccessController(java.security.AccessController) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) UnknownAlternateBindingException(org.apache.qpid.server.virtualhost.UnknownAlternateBindingException) LogMessage(org.apache.qpid.server.logging.LogMessage) Callable(java.util.concurrent.Callable) ServerMessage(org.apache.qpid.server.message.ServerMessage) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) LogSubject(org.apache.qpid.server.logging.LogSubject) Lists(com.google.common.collect.Lists) MAP_OF_STRING_STRING(org.apache.qpid.server.util.ParameterizedTypes.MAP_OF_STRING_STRING) Deletable(org.apache.qpid.server.util.Deletable) StoredMessage(org.apache.qpid.server.store.StoredMessage) MessageDeletedException(org.apache.qpid.server.message.MessageDeletedException) IOException(java.io.IOException) GZIP_CONTENT_ENCODING(org.apache.qpid.server.util.GZIPUtils.GZIP_CONTENT_ENCODING) Futures(com.google.common.util.concurrent.Futures) MessageConverterRegistry(org.apache.qpid.server.protocol.MessageConverterRegistry) FilterManager(org.apache.qpid.server.filter.FilterManager) QpidByteBuffer(org.apache.qpid.server.bytebuffer.QpidByteBuffer) MessageReference(org.apache.qpid.server.message.MessageReference) LoggerFactory(org.slf4j.LoggerFactory) SettableFuture(com.google.common.util.concurrent.SettableFuture) ConsumerOption(org.apache.qpid.server.consumer.ConsumerOption) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) DestinationReferrer(org.apache.qpid.server.exchange.DestinationReferrer) MessageEnqueueRecord(org.apache.qpid.server.store.MessageEnqueueRecord) HouseKeepingTask(org.apache.qpid.server.virtualhost.HouseKeepingTask) LocalTransaction(org.apache.qpid.server.txn.LocalTransaction) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) org.apache.qpid.server.model(org.apache.qpid.server.model) MessageConverter(org.apache.qpid.server.plugin.MessageConverter) LinkModel(org.apache.qpid.server.protocol.LinkModel) PrivilegedAction(java.security.PrivilegedAction) RoutingResult(org.apache.qpid.server.message.RoutingResult) Objects(java.util.Objects) SessionPrincipal(org.apache.qpid.server.connection.SessionPrincipal) List(java.util.List) Principal(java.security.Principal) MessageDestination(org.apache.qpid.server.message.MessageDestination) MessageDurability(org.apache.qpid.server.store.MessageDurability) TokenMgrError(org.apache.qpid.server.filter.selector.TokenMgrError) SecurityToken(org.apache.qpid.server.security.SecurityToken) AccessControlException(java.security.AccessControlException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) MessageSender(org.apache.qpid.server.message.MessageSender) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) InternalMessage(org.apache.qpid.server.message.internal.InternalMessage) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) EventLogger(org.apache.qpid.server.logging.EventLogger) ConcurrentMap(java.util.concurrent.ConcurrentMap) HashSet(java.util.HashSet) MessageFilterFactory(org.apache.qpid.server.plugin.MessageFilterFactory) AuthenticatedPrincipal(org.apache.qpid.server.security.auth.AuthenticatedPrincipal) MessageFilter(org.apache.qpid.server.filter.MessageFilter) ServerScopedRuntimeException(org.apache.qpid.server.util.ServerScopedRuntimeException) MessageInstance(org.apache.qpid.server.message.MessageInstance) Task(org.apache.qpid.server.configuration.updater.Task) DeleteDeleteTask(org.apache.qpid.server.util.DeleteDeleteTask) OutputStream(java.io.OutputStream) ServerTransaction(org.apache.qpid.server.txn.ServerTransaction) Logger(org.slf4j.Logger) QueueLogSubject(org.apache.qpid.server.logging.subjects.QueueLogSubject) Action(org.apache.qpid.server.util.Action) Iterator(java.util.Iterator) IllegalConfigurationException(org.apache.qpid.server.configuration.IllegalConfigurationException) Subject(javax.security.auth.Subject) StorableMessageMetaData(org.apache.qpid.server.store.StorableMessageMetaData) URLEncoder(java.net.URLEncoder) MessageInfoImpl(org.apache.qpid.server.message.MessageInfoImpl) QueueMessages(org.apache.qpid.server.logging.messages.QueueMessages) AMQPSession(org.apache.qpid.server.session.AMQPSession) QueueManagingVirtualHost(org.apache.qpid.server.virtualhost.QueueManagingVirtualHost) Collections(java.util.Collections) InputStream(java.io.InputStream) DeleteDeleteTask(org.apache.qpid.server.util.DeleteDeleteTask) Deletable(org.apache.qpid.server.util.Deletable)

Example 8 with Action

use of org.apache.qpid.server.util.Action in project qpid-broker-j by apache.

the class AbstractExchange method addLifetimeConstraint.

private void addLifetimeConstraint(final Deletable<? extends Deletable> lifetimeObject) {
    final Action<Deletable> deleteExchangeTask = object -> Subject.doAs(getSubjectWithAddedSystemRights(), (PrivilegedAction<Void>) () -> {
        AbstractExchange.this.delete();
        return null;
    });
    lifetimeObject.addDeleteTask(deleteExchangeTask);
    _deleteTaskList.add(new DeleteDeleteTask(lifetimeObject, deleteExchangeTask));
}
Also used : ManagedAttributeField(org.apache.qpid.server.model.ManagedAttributeField) LoggerFactory(org.slf4j.LoggerFactory) MessageDestinationIsAlternateException(org.apache.qpid.server.virtualhost.MessageDestinationIsAlternateException) Map(java.util.Map) ExchangeLogSubject(org.apache.qpid.server.logging.subjects.ExchangeLogSubject) Binding(org.apache.qpid.server.model.Binding) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) LinkModel(org.apache.qpid.server.protocol.LinkModel) Set(java.util.Set) InstanceProperties(org.apache.qpid.server.message.InstanceProperties) PrivilegedAction(java.security.PrivilegedAction) RoutingResult(org.apache.qpid.server.message.RoutingResult) Operation(org.apache.qpid.server.security.access.Operation) List(java.util.List) VirtualHostUnavailableException(org.apache.qpid.server.virtualhost.VirtualHostUnavailableException) MessageDestination(org.apache.qpid.server.message.MessageDestination) StateTransition(org.apache.qpid.server.model.StateTransition) NamedAddressSpace(org.apache.qpid.server.model.NamedAddressSpace) SecurityToken(org.apache.qpid.server.security.SecurityToken) AccessControlException(java.security.AccessControlException) ReservedExchangeNameException(org.apache.qpid.server.virtualhost.ReservedExchangeNameException) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) MessageSender(org.apache.qpid.server.message.MessageSender) Queue(org.apache.qpid.server.model.Queue) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) UnknownAlternateBindingException(org.apache.qpid.server.virtualhost.UnknownAlternateBindingException) ConfiguredObject(org.apache.qpid.server.model.ConfiguredObject) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) ServerMessage(org.apache.qpid.server.message.ServerMessage) EventLogger(org.apache.qpid.server.logging.EventLogger) ArrayList(java.util.ArrayList) ConcurrentMap(java.util.concurrent.ConcurrentMap) HashSet(java.util.HashSet) LogSubject(org.apache.qpid.server.logging.LogSubject) FixedKeyMapCreator(org.apache.qpid.server.util.FixedKeyMapCreator) AbstractConfiguredObject(org.apache.qpid.server.model.AbstractConfiguredObject) ExchangeMessages(org.apache.qpid.server.logging.messages.ExchangeMessages) LifetimePolicy(org.apache.qpid.server.model.LifetimePolicy) Deletable(org.apache.qpid.server.util.Deletable) DeleteDeleteTask(org.apache.qpid.server.util.DeleteDeleteTask) BindingImpl(org.apache.qpid.server.binding.BindingImpl) Param(org.apache.qpid.server.model.Param) Logger(org.slf4j.Logger) AlternateBinding(org.apache.qpid.server.model.AlternateBinding) ConfiguredDerivedMethodAttribute(org.apache.qpid.server.model.ConfiguredDerivedMethodAttribute) Action(org.apache.qpid.server.util.Action) Iterator(java.util.Iterator) IllegalConfigurationException(org.apache.qpid.server.configuration.IllegalConfigurationException) Exchange(org.apache.qpid.server.model.Exchange) PublishingLink(org.apache.qpid.server.model.PublishingLink) State(org.apache.qpid.server.model.State) CreatingLinkInfo(org.apache.qpid.server.queue.CreatingLinkInfo) Subject(javax.security.auth.Subject) StorableMessageMetaData(org.apache.qpid.server.store.StorableMessageMetaData) AtomicLong(java.util.concurrent.atomic.AtomicLong) Futures(com.google.common.util.concurrent.Futures) RequiredExchangeException(org.apache.qpid.server.virtualhost.RequiredExchangeException) DoOnConfigThread(org.apache.qpid.server.model.DoOnConfigThread) QueueManagingVirtualHost(org.apache.qpid.server.virtualhost.QueueManagingVirtualHost) Collections(java.util.Collections) BindingMessages(org.apache.qpid.server.logging.messages.BindingMessages) DeleteDeleteTask(org.apache.qpid.server.util.DeleteDeleteTask) Deletable(org.apache.qpid.server.util.Deletable)

Example 9 with Action

use of org.apache.qpid.server.util.Action in project qpid-broker-j by apache.

the class ConsumerTarget_0_10 method sendToDLQOrDiscard.

private void sendToDLQOrDiscard(final MessageInstanceConsumer consumer, MessageInstance entry) {
    final ServerMessage msg = entry.getMessage();
    int requeues = 0;
    if (entry.makeAcquisitionUnstealable(consumer)) {
        requeues = entry.routeToAlternate(new Action<MessageInstance>() {

            @Override
            public void performAction(final MessageInstance requeueEntry) {
                getEventLogger().message(ChannelMessages.DEADLETTERMSG(msg.getMessageNumber(), requeueEntry.getOwningResource().getName()));
            }
        }, null);
    }
    if (requeues == 0) {
        TransactionLogResource owningResource = entry.getOwningResource();
        if (owningResource instanceof Queue) {
            final Queue<?> queue = (Queue<?>) owningResource;
            final MessageDestination alternateBindingDestination = queue.getAlternateBindingDestination();
            if (alternateBindingDestination != null) {
                getEventLogger().message(ChannelMessages.DISCARDMSG_NOROUTE(msg.getMessageNumber(), alternateBindingDestination.getName()));
            } else {
                getEventLogger().message(ChannelMessages.DISCARDMSG_NOALTEXCH(msg.getMessageNumber(), queue.getName(), msg.getInitialRoutingAddress()));
            }
        }
    }
}
Also used : MessageInstance(org.apache.qpid.server.message.MessageInstance) Action(org.apache.qpid.server.util.Action) MessageDestination(org.apache.qpid.server.message.MessageDestination) ServerMessage(org.apache.qpid.server.message.ServerMessage) TransactionLogResource(org.apache.qpid.server.store.TransactionLogResource) Queue(org.apache.qpid.server.model.Queue)

Aggregations

Action (org.apache.qpid.server.util.Action)9 PrivilegedAction (java.security.PrivilegedAction)6 ListenableFuture (com.google.common.util.concurrent.ListenableFuture)4 AccessControlException (java.security.AccessControlException)4 ArrayList (java.util.ArrayList)4 Collection (java.util.Collection)4 Iterator (java.util.Iterator)4 List (java.util.List)4 Map (java.util.Map)4 Set (java.util.Set)4 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)4 Subject (javax.security.auth.Subject)4 MessageDestination (org.apache.qpid.server.message.MessageDestination)4 ServerMessage (org.apache.qpid.server.message.ServerMessage)4 Futures (com.google.common.util.concurrent.Futures)3 AccessController (java.security.AccessController)3 Principal (java.security.Principal)3 Collections (java.util.Collections)3 HashMap (java.util.HashMap)3 ConcurrentLinkedQueue (java.util.concurrent.ConcurrentLinkedQueue)3