use of org.apache.activemq.transport.amqp.client.AmqpClient in project activemq-artemis by apache.
the class AmqpPurgeOnNoConsumersTest method testQueueReceiverReadMessage.
@Test(timeout = 60000)
public void testQueueReceiverReadMessage() throws Exception {
AmqpConnection connection = null;
String queue = "purgeQueue";
SimpleString ssQueue = new SimpleString(queue);
server.addAddressInfo(new AddressInfo(ssQueue, RoutingType.ANYCAST));
server.createQueue(ssQueue, RoutingType.ANYCAST, ssQueue, null, true, false, 1, true, false);
AmqpClient client = createAmqpClient();
connection = addConnection(client.connect());
AmqpSession session = connection.createSession();
final AmqpReceiver receiver = session.createReceiver(queue);
QueueImpl queueView = (QueueImpl) getProxyToQueue(queue);
assertEquals(0L, queueView.getPageSubscription().getPagingStore().getAddressSize());
assertEquals(0, queueView.getMessageCount());
sendMessages(queue, 5, null, true);
Wait.assertEquals(5, queueView::getMessageCount);
receiver.flow(5);
for (int i = 0; i < 4; i++) {
try {
AmqpMessage receive = receiver.receive(5, TimeUnit.SECONDS);
receive.accept();
assertNotNull(receive);
} catch (Exception e) {
e.printStackTrace();
}
}
try {
receiver.close();
} catch (IOException e) {
e.printStackTrace();
}
Wait.assertEquals(0, queueView::getMessageCount);
assertEquals(0L, queueView.getPageSubscription().getPagingStore().getAddressSize());
connection.close();
server.stop();
server.start();
queueView = (QueueImpl) getProxyToQueue(queue);
assertEquals(0, queueView.getMessageCount());
assertEquals(0L, queueView.getPageSubscription().getPagingStore().getAddressSize());
}
use of org.apache.activemq.transport.amqp.client.AmqpClient in project activemq-artemis by apache.
the class AmqpReceiverDispositionTest method testRejectedDisposition.
@Test(timeout = 30000)
public void testRejectedDisposition() throws Exception {
sendMessages(getQueueName(), 1);
AmqpClient client = createAmqpClient();
AmqpConnection connection = addConnection(client.connect());
AmqpSession session = connection.createSession();
AmqpReceiver receiver1 = session.createReceiver(getQueueName());
receiver1.flow(1);
AmqpMessage message = receiver1.receive(5, TimeUnit.SECONDS);
assertNotNull("did not receive message first time", message);
assertEquals("MessageID:0", message.getMessageId());
Message protonMessage = message.getWrappedMessage();
assertNotNull(protonMessage);
assertEquals("Unexpected initial value for AMQP delivery-count", 0, protonMessage.getDeliveryCount());
message.reject();
// Reject is a terminal outcome and should not be redelivered to the rejecting receiver
// or any other as it should move to the archived state.
receiver1.flow(1);
message = receiver1.receiveNoWait();
assertNull("Should not receive message again", message);
// Attempt to Read the message again with another receiver to validate it is archived.
AmqpReceiver receiver2 = session.createReceiver(getQueueName());
receiver2.flow(1);
assertNull(receiver2.receiveNoWait());
connection.close();
}
use of org.apache.activemq.transport.amqp.client.AmqpClient in project activemq-artemis by apache.
the class AmqpReceiverTest method testReceiverCloseSendsRemoteClose.
@Test(timeout = 60000)
public void testReceiverCloseSendsRemoteClose() throws Exception {
AmqpClient client = createAmqpClient();
assertNotNull(client);
final AtomicBoolean closed = new AtomicBoolean();
client.setValidator(new AmqpValidator() {
@Override
public void inspectClosedResource(Session session) {
IntegrationTestLogger.LOGGER.info("Session closed: " + session.getContext());
}
@Override
public void inspectDetachedResource(Receiver receiver) {
markAsInvalid("Broker should not detach receiver linked to closed session.");
}
@Override
public void inspectClosedResource(Receiver receiver) {
IntegrationTestLogger.LOGGER.info("Receiver closed: " + receiver.getContext());
closed.set(true);
}
});
AmqpConnection connection = addConnection(client.connect());
assertNotNull(connection);
AmqpSession session = connection.createSession();
assertNotNull(session);
AmqpReceiver receiver = session.createReceiver(getQueueName());
assertNotNull(receiver);
receiver.close();
assertTrue("Did not process remote close as expected", closed.get());
connection.getStateInspector().assertValid();
connection.close();
}
use of org.apache.activemq.transport.amqp.client.AmqpClient in project activemq-artemis by apache.
the class AmqpReceiverTest method testLinkDetatchErrorIsCorrectWhenQueueDoesNotExists.
@Test(timeout = 60000)
public void testLinkDetatchErrorIsCorrectWhenQueueDoesNotExists() throws Exception {
AddressSettings value = new AddressSettings();
value.setAutoCreateQueues(false);
value.setAutoCreateAddresses(false);
server.getAddressSettingsRepository().addMatch("AnAddressThatDoesNotExist", value);
AmqpClient client = createAmqpClient();
AmqpConnection connection = addConnection(client.connect());
try {
AmqpSession session = connection.createSession();
Exception expectedException = null;
try {
session.createSender("AnAddressThatDoesNotExist");
fail("Creating a sender here on an address that doesn't exist should fail");
} catch (Exception e) {
expectedException = e;
}
assertNotNull(expectedException);
assertTrue(expectedException.getMessage().contains("amqp:not-found"));
assertTrue(expectedException.getMessage().contains("target address does not exist"));
} finally {
connection.close();
}
}
use of org.apache.activemq.transport.amqp.client.AmqpClient in project activemq-artemis by apache.
the class AmqpReceiverTest method testCreateQueueReceiverWithJMSSelector.
@Test(timeout = 60000)
public void testCreateQueueReceiverWithJMSSelector() throws Exception {
AmqpClient client = createAmqpClient();
client.setValidator(new AmqpValidator() {
@SuppressWarnings("unchecked")
@Override
public void inspectOpenedResource(Receiver receiver) {
if (receiver.getRemoteSource() == null) {
markAsInvalid("Link opened with null source.");
}
Source source = (Source) receiver.getRemoteSource();
Map<Symbol, Object> filters = source.getFilter();
if (findFilter(filters, JMS_SELECTOR_FILTER_IDS) == null) {
markAsInvalid("Broker did not return the JMS Filter on Attach");
}
}
});
AmqpConnection connection = addConnection(client.connect());
AmqpSession session = connection.createSession();
session.createReceiver(getQueueName(), "JMSPriority > 8");
connection.getStateInspector().assertValid();
connection.close();
}
Aggregations