ARTEMIS-780 Consolodate protocol packets and new Address/Queue commands
This commit is contained in:
parent
7a51491c32
commit
c480351c11
|
@ -799,14 +799,14 @@ public class Create extends InputAbstract {
|
||||||
printWriter.println();
|
printWriter.println();
|
||||||
|
|
||||||
for (String str : getQueueList()) {
|
for (String str : getQueueList()) {
|
||||||
printWriter.println(" <address name=\"" + str + "\" type=\"anycast\">");
|
printWriter.println(" <address name=\"" + str + "\">");
|
||||||
printWriter.println(" <queues>");
|
printWriter.println(" <anycast>");
|
||||||
printWriter.println(" <queue name=\"" + str + "\" />");
|
printWriter.println(" <queue name=\"" + str + "\" />");
|
||||||
printWriter.println(" </queues>");
|
printWriter.println(" </anycast>");
|
||||||
printWriter.println(" </address>");
|
printWriter.println(" </address>");
|
||||||
}
|
}
|
||||||
for (String str : getAddressList()) {
|
for (String str : getAddressList()) {
|
||||||
printWriter.println(" <address name=\"" + str + "\" type=\"multicast\"/>");
|
printWriter.println(" <address name=\"" + str + "\"/>");
|
||||||
}
|
}
|
||||||
filters.put("${address-queue.settings}", writer.toString());
|
filters.put("${address-queue.settings}", writer.toString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,15 +98,15 @@ ${cluster-security.settings}${cluster.settings}${replicated.settings}${shared-st
|
||||||
</address-settings>
|
</address-settings>
|
||||||
|
|
||||||
<addresses>
|
<addresses>
|
||||||
<address name="DLQ" type="anycast">
|
<address name="DLQ">
|
||||||
<queues>
|
<anycast>
|
||||||
<queue name="DLQ" />
|
<queue name="DLQ" />
|
||||||
</queues>
|
</anycast>
|
||||||
</address>
|
</address>
|
||||||
<address name="ExpiryQueue" type="anycast">
|
<address name="ExpiryQueue">
|
||||||
<queues>
|
<anycast>
|
||||||
<queue name="ExpiryQueue" />
|
<queue name="ExpiryQueue" />
|
||||||
</queues>
|
</anycast>
|
||||||
</address>${address-queue.settings}
|
</address>${address-queue.settings}
|
||||||
</addresses>
|
</addresses>
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,8 @@ package org.apache.activemq.artemis.api.core.management;
|
||||||
|
|
||||||
import javax.management.MBeanOperationInfo;
|
import javax.management.MBeanOperationInfo;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.apache.activemq.artemis.api.core.ActiveMQAddressDoesNotExistException;
|
import org.apache.activemq.artemis.api.core.ActiveMQAddressDoesNotExistException;
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An ActiveMQServerControl is used to manage ActiveMQ Artemis servers.
|
* An ActiveMQServerControl is used to manage ActiveMQ Artemis servers.
|
||||||
|
@ -438,7 +436,7 @@ public interface ActiveMQServerControl {
|
||||||
|
|
||||||
@Operation(desc = "delete an address", impact = MBeanOperationInfo.ACTION)
|
@Operation(desc = "delete an address", impact = MBeanOperationInfo.ACTION)
|
||||||
void createAddress(@Parameter(name = "name", desc = "The name of the address") String name,
|
void createAddress(@Parameter(name = "name", desc = "The name of the address") String name,
|
||||||
@Parameter(name = "deliveryMode", desc = "The delivery modes enabled for this address'") Set<RoutingType> routingTypes) throws Exception;
|
@Parameter(name = "deliveryMode", desc = "The delivery modes enabled for this address'") Object[] routingTypes) throws Exception;
|
||||||
|
|
||||||
@Operation(desc = "delete an address", impact = MBeanOperationInfo.ACTION)
|
@Operation(desc = "delete an address", impact = MBeanOperationInfo.ACTION)
|
||||||
void deleteAddress(@Parameter(name = "name", desc = "The name of the address") String name) throws Exception;
|
void deleteAddress(@Parameter(name = "name", desc = "The name of the address") String name) throws Exception;
|
||||||
|
@ -457,14 +455,21 @@ public interface ActiveMQServerControl {
|
||||||
void createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
|
void createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
|
||||||
@Parameter(name = "name", desc = "Name of the queue") String name) throws Exception;
|
@Parameter(name = "name", desc = "Name of the queue") String name) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a queue.
|
||||||
|
* <br>
|
||||||
|
* If {@code address} is {@code null} it will be defaulted to {@code name}.
|
||||||
|
* <br>
|
||||||
|
* This method throws a {@link org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException}) exception if the queue already exits.
|
||||||
|
*
|
||||||
|
* @param address address to bind the queue to
|
||||||
|
* @param name name of the queue
|
||||||
|
* @param durable whether the queue is durable
|
||||||
|
*/
|
||||||
|
@Operation(desc = "Create a queue with the specified address, name and durability", impact = MBeanOperationInfo.ACTION)
|
||||||
void createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
|
void createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
|
||||||
@Parameter(name = "routingType", desc = "The routing type used for this address, 0=multicast, 1=anycast") RoutingType routingType,
|
|
||||||
@Parameter(name = "name", desc = "Name of the queue") String name,
|
@Parameter(name = "name", desc = "Name of the queue") String name,
|
||||||
@Parameter(name = "filter", desc = "Filter of the queue") String filterStr,
|
@Parameter(name = "durable", desc = "Is the queue durable?") boolean durable) throws Exception;
|
||||||
@Parameter(name = "durable", desc = "Is the queue durable?") boolean durable,
|
|
||||||
@Parameter(name = "maxConsumers", desc = "The maximum number of consumers allowed on this queue at any one time") int maxConsumers,
|
|
||||||
@Parameter(name = "deleteOnNoConsumers", desc = "Delete this queue when the last consumer disconnects") boolean deleteOnNoConsumers,
|
|
||||||
@Parameter(name = "autoCreateAddress", desc = "Create an address with default values should a matching address not be found") boolean autoCreateAddress) throws Exception;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a queue.
|
* Create a queue.
|
||||||
|
@ -491,14 +496,25 @@ public interface ActiveMQServerControl {
|
||||||
* <br>
|
* <br>
|
||||||
* This method throws a {@link org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException}) exception if the queue already exits.
|
* This method throws a {@link org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException}) exception if the queue already exits.
|
||||||
*
|
*
|
||||||
* @param address address to bind the queue to
|
* @param address address to bind the queue to
|
||||||
* @param name name of the queue
|
* @param routingType the routing type used for this address, {@code MULTICAST} or {@code ANYCAST}
|
||||||
* @param durable whether the queue is durable
|
* @param name name of the queue
|
||||||
|
* @param filterStr filter of the queue
|
||||||
|
* @param durable is the queue durable?
|
||||||
|
* @param maxConsumers the maximum number of consumers allowed on this queue at any one time
|
||||||
|
* @param deleteOnNoConsumers delete this queue when the last consumer disconnects
|
||||||
|
* @param autoCreateAddress create an address with default values should a matching address not be found
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@Operation(desc = "Create a queue with the specified address, name and durability", impact = MBeanOperationInfo.ACTION)
|
|
||||||
void createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
|
void createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
|
||||||
|
@Parameter(name = "routingType", desc = "The routing type used for this address, MULTICAST or ANYCAST") String routingType,
|
||||||
@Parameter(name = "name", desc = "Name of the queue") String name,
|
@Parameter(name = "name", desc = "Name of the queue") String name,
|
||||||
@Parameter(name = "durable", desc = "Is the queue durable?") boolean durable) throws Exception;
|
@Parameter(name = "filter", desc = "Filter of the queue") String filterStr,
|
||||||
|
@Parameter(name = "durable", desc = "Is the queue durable?") boolean durable,
|
||||||
|
@Parameter(name = "maxConsumers", desc = "The maximum number of consumers allowed on this queue at any one time") int maxConsumers,
|
||||||
|
@Parameter(name = "deleteOnNoConsumers", desc = "Delete this queue when the last consumer disconnects") boolean deleteOnNoConsumers,
|
||||||
|
@Parameter(name = "autoCreateAddress", desc = "Create an address with default values should a matching address not be found") boolean autoCreateAddress) throws Exception;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deploy a durable queue.
|
* Deploy a durable queue.
|
||||||
|
@ -552,7 +568,8 @@ public interface ActiveMQServerControl {
|
||||||
*/
|
*/
|
||||||
@Operation(desc = "Destroy a queue", impact = MBeanOperationInfo.ACTION)
|
@Operation(desc = "Destroy a queue", impact = MBeanOperationInfo.ACTION)
|
||||||
void destroyQueue(@Parameter(name = "name", desc = "Name of the queue to destroy") String name,
|
void destroyQueue(@Parameter(name = "name", desc = "Name of the queue to destroy") String name,
|
||||||
@Parameter(name = "removeConsumers", desc = "Remove consumers of this queue") boolean removeConsumers, boolean autoDeleteAddress) throws Exception;
|
@Parameter(name = "removeConsumers", desc = "Remove consumers of this queue") boolean removeConsumers,
|
||||||
|
@Parameter(name = "autoDeleteAddress", desc = "Automatically delete the address if this was the last queue") boolean autoDeleteAddress) throws Exception;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -140,6 +140,18 @@ public interface QueueControl {
|
||||||
@Attribute(desc = "dead-letter address associated with this queue")
|
@Attribute(desc = "dead-letter address associated with this queue")
|
||||||
String getDeadLetterAddress();
|
String getDeadLetterAddress();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Attribute(desc = "maximum number of consumers allowed on this queue at any one time")
|
||||||
|
int getMaxConsumers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Attribute(desc = "delete this queue when the last consumer disconnects")
|
||||||
|
boolean isDeleteOnNoConsumers();
|
||||||
|
|
||||||
// Operations ----------------------------------------------------
|
// Operations ----------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -54,7 +54,7 @@ import org.apache.activemq.artemis.core.protocol.core.Packet;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ActiveMQExceptionMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ActiveMQExceptionMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateAddressMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateAddressMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage_V3;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage_V2;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSessionMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSessionMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSharedQueueMessage_V2;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSharedQueueMessage_V2;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.DisconnectConsumerMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.DisconnectConsumerMessage;
|
||||||
|
@ -625,7 +625,7 @@ public class ActiveMQSessionContext extends SessionContext {
|
||||||
int maxConsumers,
|
int maxConsumers,
|
||||||
boolean deleteOnNoConsumers,
|
boolean deleteOnNoConsumers,
|
||||||
boolean autoCreated) throws ActiveMQException {
|
boolean autoCreated) throws ActiveMQException {
|
||||||
CreateQueueMessage request = new CreateQueueMessage_V3(address, queueName, routingType, filterString, durable, temp, maxConsumers, deleteOnNoConsumers, autoCreated, true);
|
CreateQueueMessage request = new CreateQueueMessage_V2(address, queueName, routingType, filterString, durable, temp, maxConsumers, deleteOnNoConsumers, autoCreated, true);
|
||||||
sessionChannel.sendBlocking(request, PacketImpl.NULL_RESPONSE);
|
sessionChannel.sendBlocking(request, PacketImpl.NULL_RESPONSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,6 @@ import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ClusterTop
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateAddressMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateAddressMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage_V2;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage_V2;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage_V3;
|
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSessionMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSessionMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSessionResponseMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSessionResponseMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSharedQueueMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSharedQueueMessage;
|
||||||
|
@ -95,7 +94,6 @@ import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CRE
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_ADDRESS;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_ADDRESS;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE_V2;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE_V2;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE_V3;
|
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_SHARED_QUEUE;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_SHARED_QUEUE;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_SHARED_QUEUE_V2;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_SHARED_QUEUE_V2;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.DELETE_QUEUE;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.DELETE_QUEUE;
|
||||||
|
@ -255,10 +253,6 @@ public abstract class PacketDecoder implements Serializable {
|
||||||
packet = new CreateQueueMessage_V2();
|
packet = new CreateQueueMessage_V2();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CREATE_QUEUE_V3: {
|
|
||||||
packet = new CreateQueueMessage_V3();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CREATE_SHARED_QUEUE: {
|
case CREATE_SHARED_QUEUE: {
|
||||||
packet = new CreateSharedQueueMessage();
|
packet = new CreateSharedQueueMessage();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -253,9 +253,7 @@ public class PacketImpl implements Packet {
|
||||||
|
|
||||||
public static final byte CREATE_QUEUE_V2 = -12;
|
public static final byte CREATE_QUEUE_V2 = -12;
|
||||||
|
|
||||||
public static final byte CREATE_QUEUE_V3 = -13;
|
public static final byte CREATE_SHARED_QUEUE_V2 = -13;
|
||||||
|
|
||||||
public static final byte CREATE_SHARED_QUEUE_V2 = -14;
|
|
||||||
|
|
||||||
// Static --------------------------------------------------------
|
// Static --------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,10 @@ public class CreateAddressMessage extends PacketImpl {
|
||||||
return false;
|
return false;
|
||||||
} else if (!address.equals(other.address))
|
} else if (!address.equals(other.address))
|
||||||
return false;
|
return false;
|
||||||
if (routingTypes.equals(other.routingTypes))
|
if (routingTypes == null) {
|
||||||
|
if (other.routingTypes != null)
|
||||||
|
return false;
|
||||||
|
} else if (!routingTypes.equals(other.routingTypes))
|
||||||
return false;
|
return false;
|
||||||
if (autoCreated != other.autoCreated)
|
if (autoCreated != other.autoCreated)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -18,16 +18,26 @@ package org.apache.activemq.artemis.core.protocol.core.impl.wireformat;
|
||||||
|
|
||||||
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
|
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
|
||||||
import org.apache.activemq.artemis.api.core.SimpleString;
|
import org.apache.activemq.artemis.api.core.SimpleString;
|
||||||
|
import org.apache.activemq.artemis.core.server.RoutingType;
|
||||||
|
|
||||||
public class CreateQueueMessage_V2 extends CreateQueueMessage {
|
public class CreateQueueMessage_V2 extends CreateQueueMessage {
|
||||||
|
|
||||||
protected boolean autoCreated;
|
protected boolean autoCreated;
|
||||||
|
|
||||||
|
private RoutingType routingType;
|
||||||
|
|
||||||
|
private int maxConsumers;
|
||||||
|
|
||||||
|
private boolean deleteOnNoConsumers;
|
||||||
|
|
||||||
public CreateQueueMessage_V2(final SimpleString address,
|
public CreateQueueMessage_V2(final SimpleString address,
|
||||||
final SimpleString queueName,
|
final SimpleString queueName,
|
||||||
|
final RoutingType routingType,
|
||||||
final SimpleString filterString,
|
final SimpleString filterString,
|
||||||
final boolean durable,
|
final boolean durable,
|
||||||
final boolean temporary,
|
final boolean temporary,
|
||||||
|
final int maxConsumers,
|
||||||
|
final boolean deleteOnNoConsumers,
|
||||||
final boolean autoCreated,
|
final boolean autoCreated,
|
||||||
final boolean requiresResponse) {
|
final boolean requiresResponse) {
|
||||||
this();
|
this();
|
||||||
|
@ -39,26 +49,52 @@ public class CreateQueueMessage_V2 extends CreateQueueMessage {
|
||||||
this.temporary = temporary;
|
this.temporary = temporary;
|
||||||
this.autoCreated = autoCreated;
|
this.autoCreated = autoCreated;
|
||||||
this.requiresResponse = requiresResponse;
|
this.requiresResponse = requiresResponse;
|
||||||
|
this.routingType = routingType;
|
||||||
|
this.maxConsumers = maxConsumers;
|
||||||
|
this.deleteOnNoConsumers = deleteOnNoConsumers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CreateQueueMessage_V2() {
|
public CreateQueueMessage_V2() {
|
||||||
super(CREATE_QUEUE_V2);
|
super(CREATE_QUEUE_V2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CreateQueueMessage_V2(byte packet) {
|
|
||||||
super(packet);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Public --------------------------------------------------------
|
// Public --------------------------------------------------------
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuffer buff = new StringBuffer(super.getParentString());
|
StringBuffer buff = new StringBuffer(super.getParentString());
|
||||||
buff.append(", autoCreated=" + autoCreated);
|
buff.append(", autoCreated=" + autoCreated);
|
||||||
|
buff.append(", routingType=" + routingType);
|
||||||
|
buff.append(", maxConsumers=" + maxConsumers);
|
||||||
|
buff.append(", deleteOnNoConsumers=" + deleteOnNoConsumers);
|
||||||
buff.append("]");
|
buff.append("]");
|
||||||
return buff.toString();
|
return buff.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RoutingType getRoutingType() {
|
||||||
|
return routingType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRoutingType(RoutingType routingType) {
|
||||||
|
this.routingType = routingType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaxConsumers() {
|
||||||
|
return maxConsumers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaxConsumers(int maxConsumers) {
|
||||||
|
this.maxConsumers = maxConsumers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDeleteOnNoConsumers() {
|
||||||
|
return deleteOnNoConsumers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeleteOnNoConsumers(boolean deleteOnNoConsumers) {
|
||||||
|
this.deleteOnNoConsumers = deleteOnNoConsumers;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAutoCreated() {
|
public boolean isAutoCreated() {
|
||||||
return autoCreated;
|
return autoCreated;
|
||||||
}
|
}
|
||||||
|
@ -71,12 +107,18 @@ public class CreateQueueMessage_V2 extends CreateQueueMessage {
|
||||||
public void encodeRest(final ActiveMQBuffer buffer) {
|
public void encodeRest(final ActiveMQBuffer buffer) {
|
||||||
super.encodeRest(buffer);
|
super.encodeRest(buffer);
|
||||||
buffer.writeBoolean(autoCreated);
|
buffer.writeBoolean(autoCreated);
|
||||||
|
buffer.writeByte(routingType.getType());
|
||||||
|
buffer.writeInt(maxConsumers);
|
||||||
|
buffer.writeBoolean(deleteOnNoConsumers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void decodeRest(final ActiveMQBuffer buffer) {
|
public void decodeRest(final ActiveMQBuffer buffer) {
|
||||||
super.decodeRest(buffer);
|
super.decodeRest(buffer);
|
||||||
autoCreated = buffer.readBoolean();
|
autoCreated = buffer.readBoolean();
|
||||||
|
routingType = RoutingType.getType(buffer.readByte());
|
||||||
|
maxConsumers = buffer.readInt();
|
||||||
|
deleteOnNoConsumers = buffer.readBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -84,6 +126,9 @@ public class CreateQueueMessage_V2 extends CreateQueueMessage {
|
||||||
final int prime = 31;
|
final int prime = 31;
|
||||||
int result = super.hashCode();
|
int result = super.hashCode();
|
||||||
result = prime * result + (autoCreated ? 1231 : 1237);
|
result = prime * result + (autoCreated ? 1231 : 1237);
|
||||||
|
result = prime * result + (routingType.getType());
|
||||||
|
result = prime * result + (maxConsumers);
|
||||||
|
result = prime * result + (deleteOnNoConsumers ? 1231 : 1237);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,6 +143,17 @@ public class CreateQueueMessage_V2 extends CreateQueueMessage {
|
||||||
CreateQueueMessage_V2 other = (CreateQueueMessage_V2) obj;
|
CreateQueueMessage_V2 other = (CreateQueueMessage_V2) obj;
|
||||||
if (autoCreated != other.autoCreated)
|
if (autoCreated != other.autoCreated)
|
||||||
return false;
|
return false;
|
||||||
|
if (maxConsumers != other.maxConsumers)
|
||||||
|
return false;
|
||||||
|
if (deleteOnNoConsumers != other.deleteOnNoConsumers)
|
||||||
|
return false;
|
||||||
|
if (deleteOnNoConsumers != other.deleteOnNoConsumers)
|
||||||
|
return false;
|
||||||
|
if (routingType == null) {
|
||||||
|
if (other.routingType != null)
|
||||||
|
return false;
|
||||||
|
} else if (!routingType.equals(other.routingType))
|
||||||
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,134 +0,0 @@
|
||||||
/*
|
|
||||||
* 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.artemis.core.protocol.core.impl.wireformat;
|
|
||||||
|
|
||||||
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
|
|
||||||
import org.apache.activemq.artemis.api.core.SimpleString;
|
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
|
||||||
|
|
||||||
public class CreateQueueMessage_V3 extends CreateQueueMessage_V2 {
|
|
||||||
|
|
||||||
private RoutingType routingType;
|
|
||||||
|
|
||||||
private int maxConsumers;
|
|
||||||
|
|
||||||
private boolean deleteOnNoConsumers;
|
|
||||||
|
|
||||||
public CreateQueueMessage_V3(final SimpleString address,
|
|
||||||
final SimpleString queueName,
|
|
||||||
final RoutingType routingType,
|
|
||||||
final SimpleString filterString,
|
|
||||||
final boolean durable,
|
|
||||||
final boolean temporary,
|
|
||||||
final int maxConsumers,
|
|
||||||
final boolean deleteOnNoConsumers,
|
|
||||||
final boolean autoCreated,
|
|
||||||
final boolean requiresResponse) {
|
|
||||||
this();
|
|
||||||
|
|
||||||
this.address = address;
|
|
||||||
this.queueName = queueName;
|
|
||||||
this.filterString = filterString;
|
|
||||||
this.durable = durable;
|
|
||||||
this.temporary = temporary;
|
|
||||||
this.autoCreated = autoCreated;
|
|
||||||
this.requiresResponse = requiresResponse;
|
|
||||||
this.routingType = routingType;
|
|
||||||
this.maxConsumers = maxConsumers;
|
|
||||||
this.deleteOnNoConsumers = deleteOnNoConsumers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CreateQueueMessage_V3() {
|
|
||||||
super(CREATE_QUEUE_V3);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Public --------------------------------------------------------
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
StringBuffer buff = new StringBuffer(super.getParentString());
|
|
||||||
buff.append(", routingType=" + routingType);
|
|
||||||
buff.append(", maxConsumers=" + maxConsumers);
|
|
||||||
buff.append(", deleteOnNoConsumers=" + deleteOnNoConsumers);
|
|
||||||
buff.append("]");
|
|
||||||
return buff.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RoutingType getRoutingType() {
|
|
||||||
return routingType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRoutingType(RoutingType routingType) {
|
|
||||||
this.routingType = routingType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getMaxConsumers() {
|
|
||||||
return maxConsumers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMaxConsumers(int maxConsumers) {
|
|
||||||
this.maxConsumers = maxConsumers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDeleteOnNoConsumers() {
|
|
||||||
return deleteOnNoConsumers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDeleteOnNoConsumers(boolean deleteOnNoConsumers) {
|
|
||||||
this.deleteOnNoConsumers = deleteOnNoConsumers;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void encodeRest(final ActiveMQBuffer buffer) {
|
|
||||||
super.encodeRest(buffer);
|
|
||||||
buffer.writeByte(routingType.getType());
|
|
||||||
buffer.writeInt(maxConsumers);
|
|
||||||
buffer.writeBoolean(deleteOnNoConsumers);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void decodeRest(final ActiveMQBuffer buffer) {
|
|
||||||
super.decodeRest(buffer);
|
|
||||||
routingType = RoutingType.getType(buffer.readByte());
|
|
||||||
maxConsumers = buffer.readInt();
|
|
||||||
deleteOnNoConsumers = buffer.readBoolean();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
final int prime = 31;
|
|
||||||
int result = super.hashCode();
|
|
||||||
result = prime * result + (routingType.getType());
|
|
||||||
result = prime * result + (maxConsumers);
|
|
||||||
result = prime * result + (deleteOnNoConsumers ? 1231 : 1237);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (this == obj)
|
|
||||||
return true;
|
|
||||||
if (!super.equals(obj))
|
|
||||||
return false;
|
|
||||||
if (!(obj instanceof CreateQueueMessage_V3))
|
|
||||||
return false;
|
|
||||||
CreateQueueMessage_V3 other = (CreateQueueMessage_V3) obj;
|
|
||||||
if (autoCreated != other.autoCreated)
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -18,7 +18,6 @@ package org.apache.activemq.artemis.core.protocol.core.impl.wireformat;
|
||||||
|
|
||||||
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
|
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
|
||||||
import org.apache.activemq.artemis.api.core.SimpleString;
|
import org.apache.activemq.artemis.api.core.SimpleString;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl;
|
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
import org.apache.activemq.artemis.core.server.RoutingType;
|
||||||
|
|
||||||
public class CreateSharedQueueMessage_V2 extends CreateSharedQueueMessage {
|
public class CreateSharedQueueMessage_V2 extends CreateSharedQueueMessage {
|
||||||
|
|
|
@ -16,16 +16,12 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.activemq.artemis.junit;
|
package org.apache.activemq.artemis.junit;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
import org.apache.activemq.artemis.api.core.ActiveMQException;
|
import org.apache.activemq.artemis.api.core.ActiveMQException;
|
||||||
import org.apache.activemq.artemis.api.core.SimpleString;
|
import org.apache.activemq.artemis.api.core.SimpleString;
|
||||||
import org.apache.activemq.artemis.api.core.client.ClientConsumer;
|
import org.apache.activemq.artemis.api.core.client.ClientConsumer;
|
||||||
import org.apache.activemq.artemis.api.core.client.ClientMessage;
|
import org.apache.activemq.artemis.api.core.client.ClientMessage;
|
||||||
import org.apache.activemq.artemis.api.core.client.ServerLocator;
|
import org.apache.activemq.artemis.api.core.client.ServerLocator;
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
import org.apache.activemq.artemis.core.server.RoutingType;
|
||||||
import org.apache.activemq.artemis.core.server.impl.AddressInfo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A JUnit Rule that embeds an ActiveMQ Artemis ClientConsumer into a test.
|
* A JUnit Rule that embeds an ActiveMQ Artemis ClientConsumer into a test.
|
||||||
|
|
|
@ -36,6 +36,7 @@ import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
@ -77,9 +78,9 @@ import org.apache.activemq.artemis.core.server.ActiveMQServer;
|
||||||
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
|
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
|
||||||
import org.apache.activemq.artemis.core.server.ConnectorServiceFactory;
|
import org.apache.activemq.artemis.core.server.ConnectorServiceFactory;
|
||||||
import org.apache.activemq.artemis.core.server.Consumer;
|
import org.apache.activemq.artemis.core.server.Consumer;
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
|
||||||
import org.apache.activemq.artemis.core.server.JournalType;
|
import org.apache.activemq.artemis.core.server.JournalType;
|
||||||
import org.apache.activemq.artemis.core.server.Queue;
|
import org.apache.activemq.artemis.core.server.Queue;
|
||||||
|
import org.apache.activemq.artemis.core.server.RoutingType;
|
||||||
import org.apache.activemq.artemis.core.server.ServerConsumer;
|
import org.apache.activemq.artemis.core.server.ServerConsumer;
|
||||||
import org.apache.activemq.artemis.core.server.ServerSession;
|
import org.apache.activemq.artemis.core.server.ServerSession;
|
||||||
import org.apache.activemq.artemis.core.server.cluster.ClusterConnection;
|
import org.apache.activemq.artemis.core.server.cluster.ClusterConnection;
|
||||||
|
@ -563,12 +564,16 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createAddress(@Parameter(name = "name", desc = "The name of the address") String name,
|
public void createAddress(@Parameter(name = "name", desc = "The name of the address") String name,
|
||||||
@Parameter(name = "deliveryMode", desc = "The delivery modes enabled for this address'") Set<RoutingType> routingTypes) throws Exception {
|
@Parameter(name = "deliveryMode", desc = "The delivery modes enabled for this address'") Object[] routingTypes) throws Exception {
|
||||||
checkStarted();
|
checkStarted();
|
||||||
|
|
||||||
clearIO();
|
clearIO();
|
||||||
try {
|
try {
|
||||||
server.createAddressInfo(new AddressInfo(new SimpleString(name), routingTypes));
|
Set<RoutingType> set = new HashSet<>();
|
||||||
|
for (Object routingType : routingTypes) {
|
||||||
|
set.add(RoutingType.valueOf(routingType.toString()));
|
||||||
|
}
|
||||||
|
server.createAddressInfo(new AddressInfo(new SimpleString(name), set));
|
||||||
} finally {
|
} finally {
|
||||||
blockOnIO();
|
blockOnIO();
|
||||||
}
|
}
|
||||||
|
@ -580,7 +585,7 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
|
||||||
|
|
||||||
clearIO();
|
clearIO();
|
||||||
try {
|
try {
|
||||||
server.removeAddressInfo(new SimpleString(name));
|
server.removeAddressInfo(new SimpleString(name), null);
|
||||||
} finally {
|
} finally {
|
||||||
blockOnIO();
|
blockOnIO();
|
||||||
}
|
}
|
||||||
|
@ -642,14 +647,14 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
|
public void createQueue(String address,
|
||||||
@Parameter(name = "routingType", desc = "The routing type used for this address, 0=multicast, 1=anycast") RoutingType routingType,
|
String routingType,
|
||||||
@Parameter(name = "name", desc = "Name of the queue") String name,
|
String name,
|
||||||
@Parameter(name = "filter", desc = "Filter of the queue") String filterStr,
|
String filterStr,
|
||||||
@Parameter(name = "durable", desc = "Is the queue durable?") boolean durable,
|
boolean durable,
|
||||||
@Parameter(name = "maxConsumers", desc = "The maximum number of consumers allowed on this queue at any one time") int maxConsumers,
|
int maxConsumers,
|
||||||
@Parameter(name = "deleteOnNoConsumers", desc = "Delete this queue when the last consumer disconnects") boolean deleteOnNoConsumers,
|
boolean deleteOnNoConsumers,
|
||||||
@Parameter(name = "autoCreateAddress", desc = "Create an address with default values should a matching address not be found") boolean autoCreateAddress) throws Exception {
|
boolean autoCreateAddress) throws Exception {
|
||||||
checkStarted();
|
checkStarted();
|
||||||
|
|
||||||
clearIO();
|
clearIO();
|
||||||
|
@ -660,7 +665,7 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
|
||||||
filter = new SimpleString(filterStr);
|
filter = new SimpleString(filterStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
server.createQueue(SimpleString.toSimpleString(address), routingType, new SimpleString(name), filter, durable, false, maxConsumers, deleteOnNoConsumers, autoCreateAddress);
|
server.createQueue(SimpleString.toSimpleString(address), RoutingType.valueOf(routingType), new SimpleString(name), filter, durable, false, maxConsumers, deleteOnNoConsumers, autoCreateAddress);
|
||||||
} finally {
|
} finally {
|
||||||
blockOnIO();
|
blockOnIO();
|
||||||
}
|
}
|
||||||
|
|
|
@ -331,6 +331,30 @@ public class QueueControlImpl extends AbstractControl implements QueueControl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxConsumers() {
|
||||||
|
checkStarted();
|
||||||
|
|
||||||
|
clearIO();
|
||||||
|
try {
|
||||||
|
return queue.getMaxConsumers();
|
||||||
|
} finally {
|
||||||
|
blockOnIO();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDeleteOnNoConsumers() {
|
||||||
|
checkStarted();
|
||||||
|
|
||||||
|
clearIO();
|
||||||
|
try {
|
||||||
|
return queue.isDeleteOnNoConsumers();
|
||||||
|
} finally {
|
||||||
|
blockOnIO();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object>[] listScheduledMessages() throws Exception {
|
public Map<String, Object>[] listScheduledMessages() throws Exception {
|
||||||
checkStarted();
|
checkStarted();
|
||||||
|
|
|
@ -33,7 +33,6 @@ import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ActiveMQEx
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateAddressMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateAddressMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage_V2;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage_V2;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage_V3;
|
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSharedQueueMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSharedQueueMessage;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSharedQueueMessage_V2;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSharedQueueMessage_V2;
|
||||||
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.NullResponseMessage;
|
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.NullResponseMessage;
|
||||||
|
@ -80,7 +79,6 @@ import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnection;
|
||||||
import org.apache.activemq.artemis.core.server.ActiveMQMessageBundle;
|
import org.apache.activemq.artemis.core.server.ActiveMQMessageBundle;
|
||||||
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
|
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
|
||||||
import org.apache.activemq.artemis.core.server.BindingQueryResult;
|
import org.apache.activemq.artemis.core.server.BindingQueryResult;
|
||||||
import org.apache.activemq.artemis.core.server.Queue;
|
|
||||||
import org.apache.activemq.artemis.core.server.QueueQueryResult;
|
import org.apache.activemq.artemis.core.server.QueueQueryResult;
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
import org.apache.activemq.artemis.core.server.RoutingType;
|
||||||
import org.apache.activemq.artemis.core.server.ServerMessage;
|
import org.apache.activemq.artemis.core.server.ServerMessage;
|
||||||
|
@ -91,7 +89,6 @@ import org.jboss.logging.Logger;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_ADDRESS;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_ADDRESS;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE_V2;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE_V2;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE_V3;
|
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_SHARED_QUEUE;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_SHARED_QUEUE;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_SHARED_QUEUE_V2;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_SHARED_QUEUE_V2;
|
||||||
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.DELETE_QUEUE;
|
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.DELETE_QUEUE;
|
||||||
|
@ -251,23 +248,6 @@ public class ServerSessionPacketHandler implements ChannelHandler {
|
||||||
case CREATE_QUEUE_V2: {
|
case CREATE_QUEUE_V2: {
|
||||||
CreateQueueMessage_V2 request = (CreateQueueMessage_V2) packet;
|
CreateQueueMessage_V2 request = (CreateQueueMessage_V2) packet;
|
||||||
requiresResponse = request.isRequiresResponse();
|
requiresResponse = request.isRequiresResponse();
|
||||||
session.createQueue(request.getAddress(),
|
|
||||||
request.getQueueName(),
|
|
||||||
RoutingType.MULTICAST,
|
|
||||||
request.getFilterString(),
|
|
||||||
request.isTemporary(),
|
|
||||||
request.isDurable(),
|
|
||||||
Queue.MAX_CONSUMERS_UNLIMITED,
|
|
||||||
false,
|
|
||||||
request.isAutoCreated());
|
|
||||||
if (requiresResponse) {
|
|
||||||
response = new NullResponseMessage();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CREATE_QUEUE_V3: {
|
|
||||||
CreateQueueMessage_V3 request = (CreateQueueMessage_V3) packet;
|
|
||||||
requiresResponse = request.isRequiresResponse();
|
|
||||||
session.createQueue(request.getAddress(), request.getQueueName(), request.getRoutingType(), request.getFilterString(), request.isTemporary(), request.isDurable(), request.getMaxConsumers(), request.isDeleteOnNoConsumers(),
|
session.createQueue(request.getAddress(), request.getQueueName(), request.getRoutingType(), request.getFilterString(), request.isTemporary(), request.isDurable(), request.getMaxConsumers(), request.isDeleteOnNoConsumers(),
|
||||||
request.isAutoCreated());
|
request.isAutoCreated());
|
||||||
if (requiresResponse) {
|
if (requiresResponse) {
|
||||||
|
|
|
@ -35,6 +35,12 @@ public enum CheckType {
|
||||||
return role.isCreateAddress();
|
return role.isCreateAddress();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
DELETE_ADDRESS {
|
||||||
|
@Override
|
||||||
|
public boolean hasRole(final Role role) {
|
||||||
|
return role.isDeleteAddress();
|
||||||
|
}
|
||||||
|
},
|
||||||
CREATE_DURABLE_QUEUE {
|
CREATE_DURABLE_QUEUE {
|
||||||
@Override
|
@Override
|
||||||
public boolean hasRole(final Role role) {
|
public boolean hasRole(final Role role) {
|
||||||
|
|
|
@ -456,7 +456,7 @@ public interface ActiveMQServer extends ActiveMQComponent {
|
||||||
|
|
||||||
AddressInfo createOrUpdateAddressInfo(AddressInfo addressInfo) throws Exception;
|
AddressInfo createOrUpdateAddressInfo(AddressInfo addressInfo) throws Exception;
|
||||||
|
|
||||||
void removeAddressInfo(SimpleString address) throws Exception;
|
void removeAddressInfo(SimpleString address, SecurityAuth session) throws Exception;
|
||||||
|
|
||||||
String getInternalNamingPrefix();
|
String getInternalNamingPrefix();
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,7 +110,6 @@ import org.apache.activemq.artemis.core.server.ActiveMQServer;
|
||||||
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
|
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
|
||||||
import org.apache.activemq.artemis.core.server.Bindable;
|
import org.apache.activemq.artemis.core.server.Bindable;
|
||||||
import org.apache.activemq.artemis.core.server.BindingQueryResult;
|
import org.apache.activemq.artemis.core.server.BindingQueryResult;
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
|
||||||
import org.apache.activemq.artemis.core.server.Divert;
|
import org.apache.activemq.artemis.core.server.Divert;
|
||||||
import org.apache.activemq.artemis.core.server.JournalType;
|
import org.apache.activemq.artemis.core.server.JournalType;
|
||||||
import org.apache.activemq.artemis.core.server.LargeServerMessage;
|
import org.apache.activemq.artemis.core.server.LargeServerMessage;
|
||||||
|
@ -123,6 +122,7 @@ import org.apache.activemq.artemis.core.server.Queue;
|
||||||
import org.apache.activemq.artemis.core.server.QueueConfig;
|
import org.apache.activemq.artemis.core.server.QueueConfig;
|
||||||
import org.apache.activemq.artemis.core.server.QueueFactory;
|
import org.apache.activemq.artemis.core.server.QueueFactory;
|
||||||
import org.apache.activemq.artemis.core.server.QueueQueryResult;
|
import org.apache.activemq.artemis.core.server.QueueQueryResult;
|
||||||
|
import org.apache.activemq.artemis.core.server.RoutingType;
|
||||||
import org.apache.activemq.artemis.core.server.SecuritySettingPlugin;
|
import org.apache.activemq.artemis.core.server.SecuritySettingPlugin;
|
||||||
import org.apache.activemq.artemis.core.server.ServerSession;
|
import org.apache.activemq.artemis.core.server.ServerSession;
|
||||||
import org.apache.activemq.artemis.core.server.ServiceRegistry;
|
import org.apache.activemq.artemis.core.server.ServiceRegistry;
|
||||||
|
@ -1477,7 +1477,7 @@ public class ActiveMQServerImpl implements ActiveMQServer {
|
||||||
final SimpleString filterString,
|
final SimpleString filterString,
|
||||||
final boolean durable,
|
final boolean durable,
|
||||||
final boolean temporary) throws Exception {
|
final boolean temporary) throws Exception {
|
||||||
return createQueue(address, ActiveMQDefaultConfiguration.getDefaultRoutingType(), queueName, filterString, durable, temporary);
|
return createQueue(address, ActiveMQDefaultConfiguration.getDefaultRoutingType(), queueName, filterString, durable, temporary);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1717,7 +1717,7 @@ public class ActiveMQServerImpl implements ActiveMQServer {
|
||||||
|
|
||||||
if (autoDeleteAddress && postOffice != null) {
|
if (autoDeleteAddress && postOffice != null) {
|
||||||
try {
|
try {
|
||||||
removeAddressInfo(address);
|
removeAddressInfo(address, session);
|
||||||
} catch (ActiveMQDeleteAddressException e) {
|
} catch (ActiveMQDeleteAddressException e) {
|
||||||
// Could be thrown if the address has bindings or is not deletable.
|
// Could be thrown if the address has bindings or is not deletable.
|
||||||
}
|
}
|
||||||
|
@ -2392,7 +2392,12 @@ public class ActiveMQServerImpl implements ActiveMQServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeAddressInfo(SimpleString address) throws Exception {
|
public void removeAddressInfo(final SimpleString address,
|
||||||
|
final SecurityAuth session) throws Exception {
|
||||||
|
if (session != null) {
|
||||||
|
securityStore.check(address, CheckType.DELETE_ADDRESS, session);
|
||||||
|
}
|
||||||
|
|
||||||
AddressInfo addressInfo = getAddressInfo(address);
|
AddressInfo addressInfo = getAddressInfo(address);
|
||||||
if (postOffice.removeAddressInfo(address) == null) {
|
if (postOffice.removeAddressInfo(address) == null) {
|
||||||
throw ActiveMQMessageBundle.BUNDLE.addressDoesNotExist(address);
|
throw ActiveMQMessageBundle.BUNDLE.addressDoesNotExist(address);
|
||||||
|
@ -2451,7 +2456,7 @@ public class ActiveMQServerImpl implements ActiveMQServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
AddressInfo defaultAddressInfo = new AddressInfo(addressName);
|
AddressInfo defaultAddressInfo = new AddressInfo(addressName);
|
||||||
defaultAddressInfo.addRoutingType(ActiveMQDefaultConfiguration.getDefaultRoutingType());
|
defaultAddressInfo.addRoutingType(routingType == null ? ActiveMQDefaultConfiguration.getDefaultRoutingType() : routingType);
|
||||||
AddressInfo info = postOffice.getAddressInfo(addressName);
|
AddressInfo info = postOffice.getAddressInfo(addressName);
|
||||||
|
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.activemq.artemis.core.server.impl;
|
package org.apache.activemq.artemis.core.server.impl;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
|
|
@ -719,7 +719,8 @@ public class ManagementServiceImpl implements ManagementService {
|
||||||
paramTypes[i] == Long.TYPE && params[i].getClass() == Long.class ||
|
paramTypes[i] == Long.TYPE && params[i].getClass() == Long.class ||
|
||||||
paramTypes[i] == Double.TYPE && params[i].getClass() == Double.class ||
|
paramTypes[i] == Double.TYPE && params[i].getClass() == Double.class ||
|
||||||
paramTypes[i] == Integer.TYPE && params[i].getClass() == Integer.class ||
|
paramTypes[i] == Integer.TYPE && params[i].getClass() == Integer.class ||
|
||||||
paramTypes[i] == Boolean.TYPE && params[i].getClass() == Boolean.class) {
|
paramTypes[i] == Boolean.TYPE && params[i].getClass() == Boolean.class ||
|
||||||
|
paramTypes[i] == Object[].class && params[i].getClass() == Object[].class) {
|
||||||
// parameter match
|
// parameter match
|
||||||
} else {
|
} else {
|
||||||
match = false;
|
match = false;
|
||||||
|
|
|
@ -82,7 +82,7 @@ public class AutoDeleteJmsDestinationTest extends JMSTestBase {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAutoDeleteNegative() throws Exception {
|
public void testAutoDeleteNegative() throws Exception {
|
||||||
server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoDeleteJmsQueues(false));
|
server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoDeleteQueues(false));
|
||||||
Connection connection = cf.createConnection();
|
Connection connection = cf.createConnection();
|
||||||
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||||
|
|
||||||
|
|
|
@ -230,11 +230,11 @@ public class SessionTest extends ActiveMQTestBase {
|
||||||
@Test
|
@Test
|
||||||
public void testQueueQueryNoQ() throws Exception {
|
public void testQueueQueryNoQ() throws Exception {
|
||||||
server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoCreateQueues(false));
|
server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoCreateQueues(false));
|
||||||
server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoCreateAddresses(false));
|
|
||||||
cf = createSessionFactory(locator);
|
cf = createSessionFactory(locator);
|
||||||
ClientSession clientSession = cf.createSession(false, true, true);
|
ClientSession clientSession = cf.createSession(false, true, true);
|
||||||
QueueQuery resp = clientSession.queueQuery(new SimpleString(queueName));
|
QueueQuery resp = clientSession.queueQuery(new SimpleString(queueName));
|
||||||
Assert.assertFalse(resp.isExists());
|
Assert.assertFalse(resp.isExists());
|
||||||
|
Assert.assertFalse(resp.isAutoCreateJmsQueues());
|
||||||
Assert.assertEquals(null, resp.getAddress());
|
Assert.assertEquals(null, resp.getAddress());
|
||||||
clientSession.close();
|
clientSession.close();
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ import org.apache.activemq.artemis.api.core.client.ClientSession;
|
||||||
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
|
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
|
||||||
import org.apache.activemq.artemis.api.core.client.ServerLocator;
|
import org.apache.activemq.artemis.api.core.client.ServerLocator;
|
||||||
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
|
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
|
||||||
|
import org.apache.activemq.artemis.api.core.management.AddressControl;
|
||||||
import org.apache.activemq.artemis.api.core.management.AddressSettingsInfo;
|
import org.apache.activemq.artemis.api.core.management.AddressSettingsInfo;
|
||||||
import org.apache.activemq.artemis.api.core.management.BridgeControl;
|
import org.apache.activemq.artemis.api.core.management.BridgeControl;
|
||||||
import org.apache.activemq.artemis.api.core.management.DivertControl;
|
import org.apache.activemq.artemis.api.core.management.DivertControl;
|
||||||
|
@ -52,6 +53,7 @@ import org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants;
|
||||||
import org.apache.activemq.artemis.core.security.Role;
|
import org.apache.activemq.artemis.core.security.Role;
|
||||||
import org.apache.activemq.artemis.core.server.ActiveMQServer;
|
import org.apache.activemq.artemis.core.server.ActiveMQServer;
|
||||||
import org.apache.activemq.artemis.core.server.ActiveMQServers;
|
import org.apache.activemq.artemis.core.server.ActiveMQServers;
|
||||||
|
import org.apache.activemq.artemis.core.server.RoutingType;
|
||||||
import org.apache.activemq.artemis.core.settings.impl.SlowConsumerPolicy;
|
import org.apache.activemq.artemis.core.settings.impl.SlowConsumerPolicy;
|
||||||
import org.apache.activemq.artemis.core.transaction.impl.XidImpl;
|
import org.apache.activemq.artemis.core.transaction.impl.XidImpl;
|
||||||
import org.apache.activemq.artemis.jlibaio.LibaioContext;
|
import org.apache.activemq.artemis.jlibaio.LibaioContext;
|
||||||
|
@ -251,6 +253,41 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
|
||||||
checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name));
|
checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateAndDestroyQueue_4() throws Exception {
|
||||||
|
SimpleString address = RandomUtil.randomSimpleString();
|
||||||
|
SimpleString name = RandomUtil.randomSimpleString();
|
||||||
|
boolean durable = RandomUtil.randomBoolean();
|
||||||
|
boolean deleteOnNoConsumers = RandomUtil.randomBoolean();
|
||||||
|
boolean autoCreateAddress = true;
|
||||||
|
int maxConsumers = RandomUtil.randomInt();
|
||||||
|
|
||||||
|
ActiveMQServerControl serverControl = createManagementControl();
|
||||||
|
|
||||||
|
checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name));
|
||||||
|
|
||||||
|
serverControl.createQueue(address.toString(), RoutingType.ANYCAST.toString(), name.toString(), null, durable, maxConsumers, deleteOnNoConsumers, autoCreateAddress);
|
||||||
|
|
||||||
|
checkResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name));
|
||||||
|
QueueControl queueControl = ManagementControlHelper.createQueueControl(address, name, mbeanServer);
|
||||||
|
Assert.assertEquals(address.toString(), queueControl.getAddress());
|
||||||
|
Assert.assertEquals(name.toString(), queueControl.getName());
|
||||||
|
Assert.assertNull(queueControl.getFilter());
|
||||||
|
Assert.assertEquals(durable, queueControl.isDurable());
|
||||||
|
Assert.assertEquals(deleteOnNoConsumers, queueControl.isDeleteOnNoConsumers());
|
||||||
|
Assert.assertEquals(maxConsumers, queueControl.getMaxConsumers());
|
||||||
|
Assert.assertEquals(false, queueControl.isTemporary());
|
||||||
|
|
||||||
|
checkResource(ObjectNameBuilder.DEFAULT.getAddressObjectName(address));
|
||||||
|
AddressControl addressControl = ManagementControlHelper.createAddressControl(address, mbeanServer);
|
||||||
|
Assert.assertEquals(address.toString(), addressControl.getAddress());
|
||||||
|
|
||||||
|
serverControl.destroyQueue(name.toString(), true, true);
|
||||||
|
|
||||||
|
checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name));
|
||||||
|
checkNoResource(ObjectNameBuilder.DEFAULT.getAddressObjectName(address));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateAndDestroyQueueClosingConsumers() throws Exception {
|
public void testCreateAndDestroyQueueClosingConsumers() throws Exception {
|
||||||
SimpleString address = RandomUtil.randomSimpleString();
|
SimpleString address = RandomUtil.randomSimpleString();
|
||||||
|
|
|
@ -17,13 +17,11 @@
|
||||||
package org.apache.activemq.artemis.tests.integration.management;
|
package org.apache.activemq.artemis.tests.integration.management;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.apache.activemq.artemis.api.core.ActiveMQAddressDoesNotExistException;
|
import org.apache.activemq.artemis.api.core.ActiveMQAddressDoesNotExistException;
|
||||||
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
|
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
|
||||||
import org.apache.activemq.artemis.api.core.management.Parameter;
|
import org.apache.activemq.artemis.api.core.management.Parameter;
|
||||||
import org.apache.activemq.artemis.api.core.management.ResourceNames;
|
import org.apache.activemq.artemis.api.core.management.ResourceNames;
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
|
||||||
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
|
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
|
||||||
|
|
||||||
public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTest {
|
public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTest {
|
||||||
|
@ -103,15 +101,15 @@ public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTes
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createQueue(@Parameter(name = "address", desc = "Address of the queue") String address,
|
public void createQueue(String address,
|
||||||
@Parameter(name = "routingType", desc = "The routing type used for this address, 0=multicast, 1=anycast") RoutingType routingType,
|
String routingType,
|
||||||
@Parameter(name = "name", desc = "Name of the queue") String name,
|
String name,
|
||||||
@Parameter(name = "filter", desc = "Filter of the queue") String filterStr,
|
String filterStr,
|
||||||
@Parameter(name = "durable", desc = "Is the queue durable?") boolean durable,
|
boolean durable,
|
||||||
@Parameter(name = "maxConsumers", desc = "The maximum number of consumers allowed on this queue at any one time") int maxConsumers,
|
int maxConsumers,
|
||||||
@Parameter(name = "deleteOnNoConsumers", desc = "Delete this queue when the last consumer disconnects") boolean deleteOnNoConsumers,
|
boolean deleteOnNoConsumers,
|
||||||
@Parameter(name = "autoCreateAddress", desc = "Create an address with default values should a matching address not be found") boolean autoCreateAddress) throws Exception {
|
boolean autoCreateAddress) throws Exception {
|
||||||
|
proxy.invokeOperation("createQueue", address, routingType, name, filterStr, durable, maxConsumers, deleteOnNoConsumers, autoCreateAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -158,9 +156,10 @@ public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTes
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void destroyQueue(@Parameter(name = "name", desc = "Name of the queue to destroy") String name,
|
public void destroyQueue(String name,
|
||||||
@Parameter(name = "removeConsumers", desc = "Remove consumers of this queue") boolean removeConsumers,
|
boolean removeConsumers,
|
||||||
boolean autoDeleteAddress) throws Exception {
|
boolean autoDeleteAddress) throws Exception {
|
||||||
|
proxy.invokeOperation("destroyQueue", name, removeConsumers, autoDeleteAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -567,7 +566,7 @@ public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTes
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createAddress(@Parameter(name = "name", desc = "The name of the address") String name,
|
public void createAddress(@Parameter(name = "name", desc = "The name of the address") String name,
|
||||||
@Parameter(name = "deliveryMode", desc = "The delivery modes enabled for this address'") Set<RoutingType> routingTypes) throws Exception {
|
@Parameter(name = "deliveryMode", desc = "The delivery modes enabled for this address'") Object[] routingTypes) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,16 @@ public class QueueControlUsingCoreTest extends QueueControlTest {
|
||||||
return (String) proxy.retrieveAttributeValue("deadLetterAddress");
|
return (String) proxy.retrieveAttributeValue("deadLetterAddress");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxConsumers() {
|
||||||
|
return (Integer) proxy.retrieveAttributeValue("maxConsumers");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDeleteOnNoConsumers() {
|
||||||
|
return (Boolean) proxy.retrieveAttributeValue("deleteOnNoConsumers");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getDeliveringCount() {
|
public int getDeliveringCount() {
|
||||||
return (Integer) proxy.retrieveAttributeValue("deliveringCount", Integer.class);
|
return (Integer) proxy.retrieveAttributeValue("deliveringCount", Integer.class);
|
||||||
|
|
|
@ -33,7 +33,6 @@ import org.apache.activemq.artemis.core.config.CoreQueueConfiguration;
|
||||||
import org.apache.activemq.artemis.core.postoffice.Bindings;
|
import org.apache.activemq.artemis.core.postoffice.Bindings;
|
||||||
import org.apache.activemq.artemis.core.server.ActiveMQServer;
|
import org.apache.activemq.artemis.core.server.ActiveMQServer;
|
||||||
import org.apache.activemq.artemis.core.server.ActiveMQServers;
|
import org.apache.activemq.artemis.core.server.ActiveMQServers;
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
|
||||||
import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
|
import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
|
||||||
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
|
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
|
|
@ -83,7 +83,11 @@ public class StompTest extends StompTestBase {
|
||||||
boolean connected = conn != null && conn.isConnected();
|
boolean connected = conn != null && conn.isConnected();
|
||||||
log.debug("Connection 1.0 connected: " + connected);
|
log.debug("Connection 1.0 connected: " + connected);
|
||||||
if (connected) {
|
if (connected) {
|
||||||
conn.disconnect();
|
try {
|
||||||
|
conn.disconnect();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
super.tearDown();
|
super.tearDown();
|
||||||
|
|
|
@ -28,7 +28,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public class AutoAckMesageListenerTest extends JMSTestCase {
|
public class AutoAckMessageListenerTest extends JMSTestCase {
|
||||||
|
|
||||||
// Constants -----------------------------------------------------
|
// Constants -----------------------------------------------------
|
||||||
|
|
|
@ -34,7 +34,6 @@ import org.apache.activemq.artemis.api.core.client.ServerLocator;
|
||||||
import org.apache.activemq.artemis.api.core.management.ManagementHelper;
|
import org.apache.activemq.artemis.api.core.management.ManagementHelper;
|
||||||
import org.apache.activemq.artemis.api.core.management.ResourceNames;
|
import org.apache.activemq.artemis.api.core.management.ResourceNames;
|
||||||
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
|
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
|
||||||
import org.apache.activemq.artemis.core.server.RoutingType;
|
|
||||||
import org.apache.activemq.artemis.tests.util.SpawnedVMSupport;
|
import org.apache.activemq.artemis.tests.util.SpawnedVMSupport;
|
||||||
import org.objectweb.jtests.jms.admin.Admin;
|
import org.objectweb.jtests.jms.admin.Admin;
|
||||||
|
|
||||||
|
@ -148,9 +147,8 @@ public class AbstractAdmin implements Admin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createTopic(final String name) {
|
public void createTopic(final String name) {
|
||||||
Boolean result;
|
|
||||||
try {
|
try {
|
||||||
invokeSyncOperation(ResourceNames.BROKER, "createAddress", name, (int) RoutingType.MULTICAST.getType(), false, -1);
|
invokeSyncOperation(ResourceNames.BROKER, "createAddress", name, new Object[]{"MULTICAST"});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalStateException(e);
|
throw new IllegalStateException(e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue