public Region getRegion(ActiveMQDestination destination) throws JMSException { switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: return queueRegion; case ActiveMQDestination.TOPIC_TYPE: return topicRegion; case ActiveMQDestination.TEMP_QUEUE_TYPE: return tempQueueRegion; case ActiveMQDestination.TEMP_TOPIC_TYPE: return tempTopicRegion; default: throw createUnknownDestinationTypeException(destination); } }
public Region getRegion(ActiveMQDestination destination) throws JMSException { switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: return queueRegion; case ActiveMQDestination.TOPIC_TYPE: return topicRegion; case ActiveMQDestination.TEMP_QUEUE_TYPE: return tempQueueRegion; case ActiveMQDestination.TEMP_TOPIC_TYPE: return tempTopicRegion; default: throw createUnknownDestinationTypeException(destination); } }
public Region getRegion(ActiveMQDestination destination) throws JMSException { switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: return queueRegion; case ActiveMQDestination.TOPIC_TYPE: return topicRegion; case ActiveMQDestination.TEMP_QUEUE_TYPE: return tempQueueRegion; case ActiveMQDestination.TEMP_TOPIC_TYPE: return tempTopicRegion; default: throw createUnknownDestinationTypeException(destination); } }
public Region getRegion(ActiveMQDestination destination) throws JMSException { switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: return queueRegion; case ActiveMQDestination.TOPIC_TYPE: return topicRegion; case ActiveMQDestination.TEMP_QUEUE_TYPE: return tempQueueRegion; case ActiveMQDestination.TEMP_TOPIC_TYPE: return tempTopicRegion; default: throw createUnknownDestinationTypeException(destination); } }
@Override public Destination addDestination(ConnectionContext context, ActiveMQDestination destination,boolean create) throws Exception { Destination answer; answer = destinations.get(destination); if (answer != null) { return answer; } switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: answer = queueRegion.addDestination(context, destination,true); break; case ActiveMQDestination.TOPIC_TYPE: answer = topicRegion.addDestination(context, destination,true); break; case ActiveMQDestination.TEMP_QUEUE_TYPE: answer = tempQueueRegion.addDestination(context, destination,create); break; case ActiveMQDestination.TEMP_TOPIC_TYPE: answer = tempTopicRegion.addDestination(context, destination,create); break; default: throw createUnknownDestinationTypeException(destination); } destinations.put(destination, answer); return answer; }
@Override public void removeDestination(ConnectionContext context, ActiveMQDestination destination, long timeout) throws Exception { if (destinations.containsKey(destination)) { switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: queueRegion.removeDestination(context, destination, timeout); removeAdvisoryTopics("Queue.", context, destination, timeout); break; case ActiveMQDestination.TOPIC_TYPE: topicRegion.removeDestination(context, destination, timeout); removeAdvisoryTopics("Topic.", context, destination, timeout); break; case ActiveMQDestination.TEMP_QUEUE_TYPE: tempQueueRegion.removeDestination(context, destination, timeout); break; case ActiveMQDestination.TEMP_TOPIC_TYPE: tempTopicRegion.removeDestination(context, destination, timeout); break; default: throw createUnknownDestinationTypeException(destination); } destinations.remove(destination); } }
@Override public Response messagePull(ConnectionContext context, MessagePull pull) throws Exception { ActiveMQDestination destination = pull.getDestination(); switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: return queueRegion.messagePull(context, pull); case ActiveMQDestination.TOPIC_TYPE: return topicRegion.messagePull(context, pull); case ActiveMQDestination.TEMP_QUEUE_TYPE: return tempQueueRegion.messagePull(context, pull); case ActiveMQDestination.TEMP_TOPIC_TYPE: return tempTopicRegion.messagePull(context, pull); default: throw createUnknownDestinationTypeException(destination); } }
@Override public void processDispatchNotification(MessageDispatchNotification messageDispatchNotification) throws Exception { ActiveMQDestination destination = messageDispatchNotification.getDestination(); switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: queueRegion.processDispatchNotification(messageDispatchNotification); break; case ActiveMQDestination.TOPIC_TYPE: topicRegion.processDispatchNotification(messageDispatchNotification); break; case ActiveMQDestination.TEMP_QUEUE_TYPE: tempQueueRegion.processDispatchNotification(messageDispatchNotification); break; case ActiveMQDestination.TEMP_TOPIC_TYPE: tempTopicRegion.processDispatchNotification(messageDispatchNotification); break; default: throw createUnknownDestinationTypeException(destination); } }
@Override public void removeConsumer(ConnectionContext context, ConsumerInfo info) throws Exception { ActiveMQDestination destination = info.getDestination(); synchronized (purgeInactiveDestinationsTask) { switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: queueRegion.removeConsumer(context, info); break; case ActiveMQDestination.TOPIC_TYPE: topicRegion.removeConsumer(context, info); break; case ActiveMQDestination.TEMP_QUEUE_TYPE: tempQueueRegion.removeConsumer(context, info); break; case ActiveMQDestination.TEMP_TOPIC_TYPE: tempTopicRegion.removeConsumer(context, info); break; default: throw createUnknownDestinationTypeException(destination); } } }
@Override public Subscription addConsumer(ConnectionContext context, ConsumerInfo info) throws Exception { ActiveMQDestination destination = info.getDestination(); if (destinationInterceptor != null) { destinationInterceptor.create(this, context, destination); } synchronized (purgeInactiveDestinationsTask) { switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: return queueRegion.addConsumer(context, info); case ActiveMQDestination.TOPIC_TYPE: return topicRegion.addConsumer(context, info); case ActiveMQDestination.TEMP_QUEUE_TYPE: return tempQueueRegion.addConsumer(context, info); case ActiveMQDestination.TEMP_TOPIC_TYPE: return tempTopicRegion.addConsumer(context, info); default: throw createUnknownDestinationTypeException(destination); } } }
@Override public void acknowledge(ConsumerBrokerExchange consumerExchange, MessageAck ack) throws Exception { if (consumerExchange.isWildcard() || consumerExchange.getRegion() == null) { ActiveMQDestination destination = ack.getDestination(); Region region; switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: region = queueRegion; break; case ActiveMQDestination.TOPIC_TYPE: region = topicRegion; break; case ActiveMQDestination.TEMP_QUEUE_TYPE: region = tempQueueRegion; break; case ActiveMQDestination.TEMP_TOPIC_TYPE: region = tempTopicRegion; break; default: throw createUnknownDestinationTypeException(destination); } consumerExchange.setRegion(region); } consumerExchange.getRegion().acknowledge(consumerExchange, ack); }
@Override public void send(ProducerBrokerExchange producerExchange, Message message) throws Exception { message.setBrokerInTime(System.currentTimeMillis()); if (producerExchange.isMutable() || producerExchange.getRegion() == null || (producerExchange.getRegion() != null && producerExchange.getRegion().getDestinationMap().get(message.getDestination()) == null)) { ActiveMQDestination destination = message.getDestination(); // ensure the destination is registered with the RegionBroker producerExchange.getConnectionContext().getBroker().addDestination(producerExchange.getConnectionContext(), destination,false); Region region; switch (destination.getDestinationType()) { case ActiveMQDestination.QUEUE_TYPE: region = queueRegion; break; case ActiveMQDestination.TOPIC_TYPE: region = topicRegion; break; case ActiveMQDestination.TEMP_QUEUE_TYPE: region = tempQueueRegion; break; case ActiveMQDestination.TEMP_TOPIC_TYPE: region = tempTopicRegion; break; default: throw createUnknownDestinationTypeException(destination); } producerExchange.setRegion(region); producerExchange.setRegionDestination(null); } producerExchange.getRegion().send(producerExchange, message); }