use of org.apache.activemq.artemis.core.config.DivertConfiguration in project activemq-artemis by apache.
the class AddressCommandTest method testShowAddressBindings.
@Test
public void testShowAddressBindings() throws Exception {
// Create bindings
SimpleString address = new SimpleString("address");
server.addAddressInfo(new AddressInfo(address, RoutingType.MULTICAST));
server.createQueue(address, RoutingType.MULTICAST, new SimpleString("queue1"), null, true, false);
server.createQueue(address, RoutingType.MULTICAST, new SimpleString("queue2"), null, true, false);
server.createQueue(address, RoutingType.MULTICAST, new SimpleString("queue3"), null, true, false);
DivertConfiguration divertConfiguration = new DivertConfiguration();
divertConfiguration.setName(address.toString());
divertConfiguration.setAddress(address.toString());
server.deployDivert(divertConfiguration);
ShowAddress showAddress = new ShowAddress();
showAddress.setName(address.toString());
showAddress.setBindings(true);
showAddress.execute(new ActionContext(System.in, new PrintStream(output), new PrintStream(error)));
System.out.println(output.toString());
}
use of org.apache.activemq.artemis.core.config.DivertConfiguration in project activemq-artemis by apache.
the class LargeMessageReplicationTest method addDivert.
private void addDivert(Configuration serverConfig, String source, String target, boolean exclusive) {
List<DivertConfiguration> divertConfigs = serverConfig.getDivertConfigurations();
DivertConfiguration newDivert = new DivertConfiguration();
newDivert.setName("myDivert");
newDivert.setAddress(source);
newDivert.setForwardingAddress(target);
newDivert.setExclusive(exclusive);
divertConfigs.add(newDivert);
}
use of org.apache.activemq.artemis.core.config.DivertConfiguration in project activemq-artemis by apache.
the class DivertTest method testSingleDivertWithExpiry.
@Test
public void testSingleDivertWithExpiry() throws Exception {
final String testAddress = "testAddress";
final String forwardAddress = "forwardAddress";
final String expiryAddress = "expiryAddress";
AddressSettings expirySettings = new AddressSettings().setExpiryAddress(new SimpleString(expiryAddress));
DivertConfiguration divertConf = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress);
Configuration config = createDefaultInVMConfig().addDivertConfiguration(divertConf).clearAddressesSettings().addAddressesSetting("#", expirySettings);
ActiveMQServer server = addServer(ActiveMQServers.newActiveMQServer(config, true));
server.start();
ServerLocator locator = createInVMNonHALocator();
ClientSessionFactory sf = createSessionFactory(locator);
ClientSession session = sf.createSession(false, false, false);
final SimpleString queueName1 = new SimpleString("queue1");
final SimpleString queueName2 = new SimpleString("queue2");
session.createQueue(new SimpleString(forwardAddress), RoutingType.MULTICAST, queueName1, null, true);
session.createQueue(new SimpleString(testAddress), RoutingType.MULTICAST, queueName2, null, true);
session.createQueue(new SimpleString(expiryAddress), RoutingType.MULTICAST, new SimpleString(expiryAddress), null, true);
session.start();
ClientProducer producer = session.createProducer(new SimpleString(testAddress));
ClientConsumer consumer1 = session.createConsumer(queueName1);
ClientConsumer consumer2 = session.createConsumer(queueName2);
final int numMessages = 1;
final SimpleString propKey = new SimpleString("testkey");
for (int i = 0; i < numMessages; i++) {
ClientMessage message = session.createMessage(true);
message.putIntProperty(propKey, i);
message.setExpiration(System.currentTimeMillis() + 1000);
producer.send(message);
}
session.commit();
// this context is validating if these messages are routed correctly
{
int count1 = 0;
ClientMessage message = null;
while ((message = consumer1.receiveImmediate()) != null) {
message.acknowledge();
count1++;
}
int count2 = 0;
while ((message = consumer2.receiveImmediate()) != null) {
message.acknowledge();
count2++;
}
assertEquals(1, count1);
assertEquals(1, count2);
session.rollback();
}
Thread.sleep(2000);
// it must been expired by now
assertNull(consumer1.receiveImmediate());
// it must been expired by now
assertNull(consumer2.receiveImmediate());
int countOriginal1 = 0;
int countOriginal2 = 0;
ClientConsumer consumerExpiry = session.createConsumer(expiryAddress);
for (int i = 0; i < numMessages * 2; i++) {
ClientMessage message = consumerExpiry.receive(5000);
System.out.println("Received message " + message);
assertNotNull(message);
if (message.getStringProperty(Message.HDR_ORIGINAL_QUEUE).equals("divert1")) {
countOriginal1++;
} else if (message.getStringProperty(Message.HDR_ORIGINAL_QUEUE).equals("queue2")) {
countOriginal2++;
} else {
System.out.println("message not part of any expired queue" + message);
}
}
assertEquals(numMessages, countOriginal1);
assertEquals(numMessages, countOriginal2);
}
use of org.apache.activemq.artemis.core.config.DivertConfiguration in project activemq-artemis by apache.
the class DivertTest method testMultipleNonExclusiveDivert.
@Test
public void testMultipleNonExclusiveDivert() throws Exception {
final String testAddress = "testAddress";
final String forwardAddress1 = "forwardAddress1";
final String forwardAddress2 = "forwardAddress2";
final String forwardAddress3 = "forwardAddress3";
DivertConfiguration divertConf1 = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress1);
DivertConfiguration divertConf2 = new DivertConfiguration().setName("divert2").setRoutingName("divert2").setAddress(testAddress).setForwardingAddress(forwardAddress2);
DivertConfiguration divertConf3 = new DivertConfiguration().setName("divert3").setRoutingName("divert3").setAddress(testAddress).setForwardingAddress(forwardAddress3);
Configuration config = createDefaultInVMConfig().addDivertConfiguration(divertConf1).addDivertConfiguration(divertConf2).addDivertConfiguration(divertConf3);
ActiveMQServer server = addServer(ActiveMQServers.newActiveMQServer(config, false));
server.start();
ServerLocator locator = createInVMNonHALocator();
ClientSessionFactory sf = createSessionFactory(locator);
ClientSession session = sf.createSession(false, true, true);
final SimpleString queueName1 = new SimpleString("queue1");
final SimpleString queueName2 = new SimpleString("queue2");
final SimpleString queueName3 = new SimpleString("queue3");
final SimpleString queueName4 = new SimpleString("queue4");
session.createQueue(new SimpleString(forwardAddress1), RoutingType.MULTICAST, queueName1, null, false);
session.createQueue(new SimpleString(forwardAddress2), RoutingType.MULTICAST, queueName2, null, false);
session.createQueue(new SimpleString(forwardAddress3), RoutingType.MULTICAST, queueName3, null, false);
session.createQueue(new SimpleString(testAddress), RoutingType.MULTICAST, queueName4, null, false);
session.start();
ClientProducer producer = session.createProducer(new SimpleString(testAddress));
ClientConsumer consumer1 = session.createConsumer(queueName1);
ClientConsumer consumer2 = session.createConsumer(queueName2);
ClientConsumer consumer3 = session.createConsumer(queueName3);
ClientConsumer consumer4 = session.createConsumer(queueName4);
final int numMessages = 10;
final SimpleString propKey = new SimpleString("testkey");
for (int i = 0; i < numMessages; i++) {
ClientMessage message = session.createMessage(false);
message.putIntProperty(propKey, i);
producer.send(message);
}
for (int i = 0; i < numMessages; i++) {
ClientMessage message = consumer1.receive(DivertTest.TIMEOUT);
Assert.assertNotNull(message);
Assert.assertEquals(i, message.getIntProperty(propKey).intValue());
message.acknowledge();
}
Assert.assertNull(consumer1.receiveImmediate());
for (int i = 0; i < numMessages; i++) {
ClientMessage message = consumer2.receive(DivertTest.TIMEOUT);
Assert.assertNotNull(message);
Assert.assertEquals(i, message.getIntProperty(propKey).intValue());
message.acknowledge();
}
Assert.assertNull(consumer2.receiveImmediate());
for (int i = 0; i < numMessages; i++) {
ClientMessage message = consumer3.receive(DivertTest.TIMEOUT);
Assert.assertNotNull(message);
Assert.assertEquals(i, message.getIntProperty(propKey).intValue());
message.acknowledge();
}
Assert.assertNull(consumer3.receiveImmediate());
for (int i = 0; i < numMessages; i++) {
ClientMessage message = consumer4.receive(DivertTest.TIMEOUT);
Assert.assertNotNull(message);
Assert.assertEquals(i, message.getIntProperty(propKey).intValue());
message.acknowledge();
}
Assert.assertNull(consumer4.receiveImmediate());
}
use of org.apache.activemq.artemis.core.config.DivertConfiguration in project activemq-artemis by apache.
the class DivertTest method testSingleExclusiveDivertWithRoutingType.
@Test
public void testSingleExclusiveDivertWithRoutingType() throws Exception {
final String testAddress = "testAddress";
final String forwardAddress = "forwardAddress";
DivertConfiguration divertConf = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress).setExclusive(true);
Configuration config = createDefaultInVMConfig().addDivertConfiguration(divertConf);
ActiveMQServer server = addServer(ActiveMQServers.newActiveMQServer(config, false));
server.start();
ServerLocator locator = createInVMNonHALocator();
ClientSessionFactory sf = createSessionFactory(locator);
ClientSession session = sf.createSession(false, true, true);
final SimpleString queueName1 = new SimpleString("queue1");
final SimpleString queueName2 = new SimpleString("queue2");
session.createQueue(new SimpleString(forwardAddress), RoutingType.ANYCAST, queueName1, null, false);
session.createQueue(new SimpleString(testAddress), RoutingType.MULTICAST, queueName2, null, false);
session.start();
ClientProducer producer = session.createProducer(new SimpleString(testAddress));
ClientConsumer consumer1 = session.createConsumer(queueName1);
final int numMessages = 1;
final SimpleString propKey = new SimpleString("testkey");
for (int i = 0; i < numMessages; i++) {
ClientMessage message = session.createMessage(false);
message.setRoutingType(RoutingType.MULTICAST);
message.putIntProperty(propKey, i);
producer.send(message);
}
for (int i = 0; i < numMessages; i++) {
ClientMessage message = consumer1.receive(DivertTest.TIMEOUT);
Assert.assertNotNull(message);
Assert.assertEquals(i, message.getObjectProperty(propKey));
message.acknowledge();
}
Assert.assertNull(consumer1.receiveImmediate());
}
Aggregations