use of jakarta.jms.MessageConsumer in project spring-framework by spring-projects.
the class JmsTemplateTests method doTestReceive.
private void doTestReceive(boolean explicitDestination, boolean useDefaultDestination, boolean testConverter, boolean clientAcknowledge, boolean messageSelector, boolean noLocal, long timeout) throws Exception {
JmsTemplate template = createTemplate();
template.setConnectionFactory(this.connectionFactory);
String destinationName = "testDestination";
if (useDefaultDestination) {
if (explicitDestination) {
template.setDefaultDestination(this.queue);
} else {
template.setDefaultDestinationName(destinationName);
}
}
if (noLocal) {
template.setPubSubNoLocal(true);
}
template.setReceiveTimeout(timeout);
MessageConsumer messageConsumer = mock(MessageConsumer.class);
String selectorString = "selector";
given(this.session.createConsumer(this.queue, messageSelector ? selectorString : null)).willReturn(messageConsumer);
if (!useTransactedTemplate() && !useTransactedSession()) {
given(this.session.getAcknowledgeMode()).willReturn(clientAcknowledge ? Session.CLIENT_ACKNOWLEDGE : Session.AUTO_ACKNOWLEDGE);
}
TextMessage textMessage = mock(TextMessage.class);
if (testConverter) {
given(textMessage.getText()).willReturn("Hello World!");
}
if (timeout == JmsTemplate.RECEIVE_TIMEOUT_NO_WAIT) {
given(messageConsumer.receiveNoWait()).willReturn(textMessage);
} else if (timeout == JmsTemplate.RECEIVE_TIMEOUT_INDEFINITE_WAIT) {
given(messageConsumer.receive()).willReturn(textMessage);
} else {
given(messageConsumer.receive(timeout)).willReturn(textMessage);
}
Message message = null;
String textFromMessage = null;
if (useDefaultDestination) {
if (testConverter) {
textFromMessage = (String) (messageSelector ? template.receiveSelectedAndConvert(selectorString) : template.receiveAndConvert());
} else {
message = (messageSelector ? template.receiveSelected(selectorString) : template.receive());
}
} else if (explicitDestination) {
if (testConverter) {
textFromMessage = (String) (messageSelector ? template.receiveSelectedAndConvert(this.queue, selectorString) : template.receiveAndConvert(this.queue));
} else {
message = (messageSelector ? template.receiveSelected(this.queue, selectorString) : template.receive(this.queue));
}
} else {
if (testConverter) {
textFromMessage = (String) (messageSelector ? template.receiveSelectedAndConvert(destinationName, selectorString) : template.receiveAndConvert(destinationName));
} else {
message = (messageSelector ? template.receiveSelected(destinationName, selectorString) : template.receive(destinationName));
}
}
if (testConverter) {
assertThat(textFromMessage).as("Message text should be equal").isEqualTo("Hello World!");
} else {
assertThat(textMessage).as("Messages should refer to the same object").isEqualTo(message);
}
verify(this.connection).start();
verify(this.connection).close();
if (useTransactedTemplate()) {
verify(this.session).commit();
}
verify(this.session).close();
if (!useTransactedSession() && clientAcknowledge) {
verify(textMessage).acknowledge();
}
verify(messageConsumer).close();
}
Aggregations