/** * Returns the ObjectName used by QueueControl. * * @see QueueControl */ public ObjectName getQueueObjectName(final SimpleString address, final SimpleString name, RoutingType routingType) throws Exception { return ObjectName.getInstance(String.format("%s:broker=%s,component=addresses,address=%s,subcomponent=queues,routing-type=%s,queue=%s", domain, ObjectName.quote(brokerName), ObjectName.quote(address.toString()), ObjectName.quote(routingType.toString().toLowerCase()), ObjectName.quote(name.toString()))); }
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + (autoCreated ? 1231 : 1237); result = prime * result + (routingType.getType()); result = prime * result + (maxConsumers); result = prime * result + (purgeOnNoConsumers ? 1231 : 1237); result = prime * result + (exclusive == null ? 0 : exclusive ? 1231 : 1237); result = prime * result + (lastValue == null ? 0 : lastValue ? 1231 : 1237); return result; }
if (other.routingType != null) return false; } else if (!routingType.equals(other.routingType)) return false; return true;
/** * It will create the address and queue configurations */ private void applyAddressesAndQueues(HashMap<String, String> filters) { StringWriter writer = new StringWriter(); PrintWriter printWriter = new PrintWriter(writer); printWriter.println(); for (String str : getQueueList()) { String[] seg = str.split(":"); String name = seg[0].trim(); // default routing type to anycast if not specified String routingType = (seg.length == 2 ? seg[1].trim() : "anycast"); try { RoutingType.valueOf(routingType.toUpperCase()); } catch (Exception e) { e.printStackTrace(); System.err.println("Invalid routing type: " + routingType); } printWriter.println(" <address name=\"" + name + "\">"); printWriter.println(" <" + routingType + ">"); printWriter.println(" <queue name=\"" + name + "\" />"); printWriter.println(" </" + routingType + ">"); printWriter.println(" </address>"); } for (String str : getAddressList()) { printWriter.println(" <address name=\"" + str + "\"/>"); } filters.put("${address-queue.settings}", writer.toString()); }
public void testPrefix(final String prefix, final RoutingType routingType, final boolean send) throws Exception { int port = 61614; URI uri = createStompClientUri(scheme, hostname, port); final String ADDRESS = UUID.randomUUID().toString(); final String PREFIXED_ADDRESS = prefix + ADDRESS; String param = routingType.toString(); String urlParam = param.toLowerCase() + "Prefix"; server.getRemotingService().createAcceptor("test", "tcp://" + hostname + ":" + port + "?protocols=" + StompProtocolManagerFactory.STOMP_PROTOCOL_NAME + "&" + urlParam + "=" + prefix).start(); StompClientConnection conn = StompClientConnectionFactory.createClientConnection(uri); conn.connect(defUser, defPass); // since this queue doesn't exist the broker should create a new address using the routing type matching the prefix if (send) { send(conn, PREFIXED_ADDRESS, null, "Hello World", true); } else { String uuid = UUID.randomUUID().toString(); ClientStompFrame frame = conn.createFrame(Stomp.Commands.SUBSCRIBE) .addHeader(Stomp.Headers.Subscribe.DESTINATION, PREFIXED_ADDRESS) .addHeader(Stomp.Headers.RECEIPT_REQUESTED, uuid); frame = conn.sendFrame(frame); assertEquals(uuid, frame.getHeader(Stomp.Headers.Response.RECEIPT_ID)); } AddressInfo addressInfo = server.getAddressInfo(SimpleString.toSimpleString(ADDRESS)); assertNotNull("No address was created with the name " + ADDRESS, addressInfo); Set<RoutingType> routingTypes = new HashSet<>(); routingTypes.add(RoutingType.valueOf(param)); assertEquals(routingTypes, addressInfo.getRoutingTypes()); conn.disconnect(); }
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + (autoCreated ? 1231 : 1237); result = prime * result + (purgeOnNoConsumers ? 1231 : 1237); result = prime * result + routingType.hashCode(); result = prime * result + maxConsumers; result = prime * result + (exclusive == null ? 0 : exclusive ? 1231 : 1237); result = prime * result + (lastValue == null ? 0 : lastValue ? 1231 : 1237); return result; }
public void set(String key, String value) { if (key != null && value != null) { if (key.equals(ROUTING_TYPE)) { setRoutingType(RoutingType.valueOf(value.toUpperCase())); } else if (key.equals(FILTER_STRING)) { setFilterString(SimpleString.toSimpleString(value)); } else if (key.equals(DURABLE)) { setDurable(Boolean.valueOf(value)); } else if (key.equals(MAX_CONSUMERS)) { setMaxConsumers(Integer.valueOf(value)); } else if (key.equals(EXCLUSIVE)) { setExclusive(Boolean.valueOf(value)); } else if (key.equals(LAST_VALUE)) { setLastValue(Boolean.valueOf(value)); } else if (key.equals(LAST_VALUE_KEY)) { setLastValueKey(SimpleString.toSimpleString(value)); } else if (key.equals(NON_DESTRUCTIVE)) { setNonDestructive(Boolean.valueOf(value)); } else if (key.equals(PURGE_ON_NO_CONSUMERS)) { setPurgeOnNoConsumers(Boolean.valueOf(value)); } else if (key.equals(CONSUMERS_BEFORE_DISPATCH)) { setConsumersBeforeDispatch(Integer.valueOf(value)); } else if (key.equals(DELAY_BEFORE_DISPATCH)) { setDelayBeforeDispatch(Long.valueOf(value)); } else if (key.equals(CONSUMER_PRIORITY)) { setConsumerPriority(Integer.valueOf(value)); } } }
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + (autoCreated ? 1231 : 1237); result = prime * result + (purgeOnNoConsumers ? 1231 : 1237); result = prime * result + routingType.hashCode(); result = prime * result + maxConsumers; result = prime * result + (exclusive == null ? 0 : exclusive ? 1231 : 1237); result = prime * result + (lastValue == null ? 0 : lastValue ? 1231 : 1237); return result; }
@Override public RoutingType getRoutingType() { if (containsProperty(Message.HDR_ROUTING_TYPE)) { return RoutingType.getType(getByteProperty(Message.HDR_ROUTING_TYPE)); } return null; }
if (other.routingType != null) return false; } else if (!routingType.equals(other.routingType)) return false; if (maxConsumers != other.maxConsumers)
session.createQueue(address, RoutingType.valueOf(routingType), queueName, filter, true); if (logger.isDebugEnabled()) { logger.debug("Binding queue(name=" + queueName + ", address=" + address + ", filter=" + filter + ")");
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + (autoCreated ? 1231 : 1237); result = prime * result + (purgeOnNoConsumers ? 1231 : 1237); result = prime * result + routingType.hashCode(); result = prime * result + maxConsumers; result = prime * result + (exclusive == null ? 0 : exclusive ? 1231 : 1237); result = prime * result + (lastValue == null ? 0 : lastValue ? 1231 : 1237); return result; }
@Override public String[] getRoutingTypes() { EnumSet<RoutingType> routingTypes = addressInfo.getRoutingTypes(); String[] result = new String[routingTypes.size()]; int i = 0; for (RoutingType routingType : routingTypes) { result[i++] = routingType.toString(); } return result; }
@Override public Message setRoutingType(RoutingType routingType) { if (routingType == null) { removeProperty(Message.HDR_ROUTING_TYPE); } else { putByteProperty(Message.HDR_ROUTING_TYPE, routingType.getType()); } return this; }
@Override public Destination getJMSDestination() throws JMSException { if (dest == null) { SimpleString address = message.getAddressSimpleString(); SimpleString name = address; if (address != null & enable1xPrefixes) { dest = ActiveMQDestination.fromPrefixedName(get1xPrefixedName(address.toString())); } else { if (address == null) { dest = null; } else if (RoutingType.ANYCAST.equals(message.getRoutingType())) { dest = ActiveMQDestination.createQueue(address); } else if (RoutingType.MULTICAST.equals(message.getRoutingType())) { dest = ActiveMQDestination.createTopic(address); } else { dest = (ActiveMQDestination) ActiveMQDestination.fromPrefixedName(address.toString()); } if (name != null) { ((ActiveMQDestination) dest).setName(name.toString()); } } } return dest; }
public void set(String key, String value) { if (key != null && value != null) { if (key.equals(ROUTING_TYPE)) { setRoutingType(RoutingType.valueOf(value.toUpperCase())); } else if (key.equals(FILTER_STRING)) { setFilterString(SimpleString.toSimpleString(value)); } else if (key.equals(DURABLE)) { setDurable(Boolean.valueOf(value)); } else if (key.equals(MAX_CONSUMERS)) { setMaxConsumers(Integer.valueOf(value)); } else if (key.equals(EXCLUSIVE)) { setExclusive(Boolean.valueOf(value)); } else if (key.equals(LAST_VALUE)) { setLastValue(Boolean.valueOf(value)); } else if (key.equals(LAST_VALUE_KEY)) { setLastValueKey(SimpleString.toSimpleString(value)); } else if (key.equals(NON_DESTRUCTIVE)) { setNonDestructive(Boolean.valueOf(value)); } else if (key.equals(PURGE_ON_NO_CONSUMERS)) { setPurgeOnNoConsumers(Boolean.valueOf(value)); } else if (key.equals(CONSUMERS_BEFORE_DISPATCH)) { setConsumersBeforeDispatch(Integer.valueOf(value)); } else if (key.equals(DELAY_BEFORE_DISPATCH)) { setDelayBeforeDispatch(Long.valueOf(value)); } else if (key.equals(CONSUMER_PRIORITY)) { setConsumerPriority(Integer.valueOf(value)); } } }
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + (autoCreated ? 1231 : 1237); result = prime * result + (purgeOnNoConsumers ? 1231 : 1237); result = prime * result + routingType.hashCode(); result = prime * result + maxConsumers; result = prime * result + (exclusive == null ? 0 : exclusive ? 1231 : 1237); result = prime * result + (lastValue == null ? 0 : lastValue ? 1231 : 1237); return result; }
@Override public String toString() { StringBuilder sb = new StringBuilder("PersistentAddressBindingEncoding [id=" + id); sb.append(", name=" + name); sb.append(", routingTypes={"); for (RoutingType routingType : routingTypes) { sb.append(routingType.toString() + ","); } if (sb.charAt(sb.length() - 1) == ',') { sb.deleteCharAt(sb.length() - 1); } sb.append("}"); sb.append(", autoCreated=" + autoCreated + "]"); return sb.toString(); }
@Override public void decodeRest(final ActiveMQBuffer buffer) { address = buffer.readSimpleString(); int routingTypeSetSize = buffer.readInt(); routingTypes = EnumSet.noneOf(RoutingType.class); for (int i = 0; i < routingTypeSetSize; i++) { routingTypes.add(RoutingType.getType(buffer.readByte())); } requiresResponse = buffer.readBoolean(); autoCreated = buffer.readBoolean(); }