use of org.apache.qpid.server.protocol.v0_8.transport.BasicNackBody in project qpid-broker-j by apache.
the class PublisherConfirmsTest method publishUnrouteableMandatoryMessage.
@Test
@SpecificationTest(section = "https://www.rabbitmq.com/confirms.html", description = "[...] when the broker is unable to handle messages successfully, instead of a basic.ack," + "the broker will send a basic.nack.")
public void publishUnrouteableMandatoryMessage() throws Exception {
try (FrameTransport transport = new FrameTransport(_brokerAddress).connect()) {
final Interaction interaction = transport.newInteraction();
BasicNackBody nackBody = interaction.openAnonymousConnection().channel().open().consumeResponse(ChannelOpenOkBody.class).basic().confirmSelect().consumeResponse(ConfirmSelectOkBody.class).basic().publishExchange("").publishRoutingKey("unrouteable").publishMandatory(true).content("Test").publishMessage().consumeResponse().getLatestResponse(BasicNackBody.class);
assertThat(nackBody.getDeliveryTag(), is(equalTo(1L)));
}
}
use of org.apache.qpid.server.protocol.v0_8.transport.BasicNackBody in project qpid-broker-j by apache.
the class PublisherConfirmsTest method publishUnroutableMessageWithTransactionalConfirms.
@Test
public void publishUnroutableMessageWithTransactionalConfirms() throws Exception {
try (FrameTransport transport = new FrameTransport(_brokerAddress).connect()) {
final Interaction interaction = transport.newInteraction();
interaction.openAnonymousConnection().channel().open().consumeResponse(ChannelOpenOkBody.class).tx().select().consumeResponse(TxSelectOkBody.class).basic().confirmSelect().consumeResponse(ConfirmSelectOkBody.class).basic().publishExchange("").publishRoutingKey("unrouteable").publishMandatory(true).publishMessage().basic().publishExchange("").publishRoutingKey(BrokerAdmin.TEST_QUEUE_NAME).publishMandatory(true).publishMessage();
final BasicNackBody nackBody = interaction.consumeResponse().getLatestResponse(BasicNackBody.class);
assertThat(nackBody.getDeliveryTag(), is(equalTo(1L)));
final BasicAckBody ackBody = interaction.consumeResponse().getLatestResponse(BasicAckBody.class);
assertThat(ackBody.getDeliveryTag(), is(equalTo(2L)));
assertThat(getBrokerAdmin().getQueueDepthMessages(BrokerAdmin.TEST_QUEUE_NAME), is(equalTo(0)));
interaction.tx().commit();
final Set<Class<?>> outstanding = Sets.newHashSet(TxCommitOkBody.class, BasicReturnBody.class, ContentHeaderBody.class);
while (!outstanding.isEmpty()) {
final Response<?> response = interaction.consumeResponse(outstanding.toArray(new Class<?>[outstanding.size()])).getLatestResponse();
final boolean remove = outstanding.remove(response.getBody().getClass());
assertThat("" + response, remove, is(equalTo(true)));
}
assertThat(getBrokerAdmin().getQueueDepthMessages(BrokerAdmin.TEST_QUEUE_NAME), is(equalTo(1)));
}
}
Aggregations