/** * Create a text message with the relevant content type. */ public static Message createTextMessage(String body) { return createTextMessage(body, new MessageProperties()); }
private org.springframework.amqp.core.Message createAmqpTextMessage(String payload) { MessageProperties properties = new MessageProperties(); properties.setHeader("foo", "bar"); return MessageTestUtils.createTextMessage(payload, properties); }
@Test public void resolveGenericMessage() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(Message.class); Channel channel = mock(Channel.class); listener.onMessage(MessageTestUtils.createTextMessage("test"), channel); assertDefaultListenerMethodInvocation(); }
@Test public void resolveConvertedPayload() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(Integer.class); Channel channel = mock(Channel.class); listener.onMessage(MessageTestUtils.createTextMessage("33"), channel); assertDefaultListenerMethodInvocation(); }
@Test public void invalidMessagePayloadType() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(Message.class); Channel channel = mock(Channel.class); thrown.expect(ListenerExecutionFailedException.class); thrown.expectCause(Matchers.<Throwable>either(Matchers.instanceOf(MethodArgumentTypeMismatchException.class)) .or(Matchers.instanceOf(org.springframework.messaging.converter.MessageConversionException.class))); listener.onMessage(MessageTestUtils.createTextMessage("test"), channel); // Message<String> as Message<Integer> }
@Test public void emptySendTo() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(String.class); processAndReply(listener, MessageTestUtils.createTextMessage("content"), "", "", false, null); assertDefaultListenerMethodInvocation(); }
@Test public void genericMessageTest3() throws Exception { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("{ \"foo\" : \"bar\" }"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("withNonGenericMessage", Message.class); listener.setMessageConverter(new Jackson2JsonMessageConverter()); message.getMessageProperties().setContentType("application/json"); listener.onMessage(message, channel); assertEquals(LinkedHashMap.class, this.sample.payload.getClass()); }
@Test public void genericMessageTest2() throws Exception { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("{ \"foo\" : \"bar\" }"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("withGenericMessageFooType", Message.class); listener.setMessageConverter(new Jackson2JsonMessageConverter()); message.getMessageProperties().setContentType("application/json"); listener.onMessage(message, channel); assertEquals(Foo.class, this.sample.payload.getClass()); }
@Test public void resolveCustomHeaderNameAndPayload() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(String.class, int.class); Channel channel = mock(Channel.class); MessageProperties properties = new MessageProperties(); properties.setHeader("myCounter", 24); org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); }
@Test public void resolveHeaders() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(String.class, Map.class); Channel channel = mock(Channel.class); MessageProperties properties = new MessageProperties(); properties.setHeader("customInt", 1234); properties.setMessageId("abcd-1234"); org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); }
@Test public void resolveRabbitMessageHeaderAccessor() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(AmqpMessageHeaderAccessor.class); Channel channel = mock(Channel.class); MessageProperties properties = new MessageProperties(); properties.setHeader("customBoolean", true); properties.setAppId("myAppId"); org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); }
@Test public void resolveHeaderAndPayload() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(String.class, int.class, String.class, String.class); Channel channel = mock(Channel.class); MessageProperties properties = new MessageProperties(); properties.setHeader("myCounter", 55); properties.setConsumerTag("consumerTag"); properties.setConsumerQueue("queue"); org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("my payload", properties); listener.onMessage(message, channel); assertDefaultListenerMethodInvocation(); }
@Test public void processAndReplyWithSendTo() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(String.class); String body = "echo text"; String messageId = "msgId-1234"; MessageProperties properties = new MessageProperties(); properties.setMessageId(messageId); org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage(body, properties); // MessageId is used as fallback when no correlationId is set processAndReply(listener, message, "replyDestination", "", false, messageId); assertDefaultListenerMethodInvocation(); }
@Test public void endpointWithMessage() { MessageProperties properties = new MessageProperties(); properties.setHeader("prefix", "prefix-"); Message request = MessageTestUtils.createTextMessage("foo", properties); Message reply = rabbitTemplate.sendAndReceive("test.message", request); assertEquals("prefix-FOO", MessageTestUtils.extractText(reply)); }
@Test public void validatePayloadValid() throws Exception { String methodName = "validatePayload"; DefaultMessageHandlerMethodFactory customFactory = new DefaultMessageHandlerMethodFactory(); customFactory.setValidator(testValidator("invalid value")); initializeFactory(customFactory); Method method = getListenerMethod(methodName, String.class); MessagingMessageListenerAdapter listener = createInstance(customFactory, method); Channel channel = mock(Channel.class); listener.onMessage(MessageTestUtils.createTextMessage("test"), channel); // test is a valid value assertListenerMethodInvocation(sample, methodName); }
@Test public void messageConverterUsedIfSet() throws Exception { containerFactory.setMessageConverter(new UpperCaseMessageConverter()); MethodRabbitListenerEndpoint endpoint = createDefaultMethodRabbitEndpoint("expectFooBarUpperCase", String.class); Message message = MessageTestUtils.createTextMessage("foo-bar"); invokeListener(endpoint, message); assertListenerMethodInvocation("expectFooBarUpperCase"); }
@Test public void endpointWithHeader() { MessageProperties properties = new MessageProperties(); properties.setHeader("prefix", "prefix-"); Message request = MessageTestUtils.createTextMessage("foo", properties); Message reply = rabbitTemplate.sendAndReceive("test.header", request); assertEquals("prefix-FOO", MessageTestUtils.extractText(reply)); assertEquals(reply.getMessageProperties().getHeaders().get("replyMPPApplied"), Boolean.TRUE); }
@Test public void processAndReplyWithMessage() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(org.springframework.amqp.core.Message.class); listener.setMessageConverter(null); listener.setResponseExchange("fooQueue"); String body = "echo text"; org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage(body, new MessageProperties()); processAndReply(listener, message, "fooQueue", "", false, null); assertDefaultListenerMethodInvocation(); }
@Test public void endpointWithComplexReply() { MessageProperties properties = new MessageProperties(); properties.setHeader("foo", "fooValue"); Message request = MessageTestUtils.createTextMessage("content", properties); Message reply = rabbitTemplate.sendAndReceive("test.reply", request); assertEquals("Wrong reply", "content", MessageTestUtils.extractText(reply)); assertEquals("Wrong foo header", "fooValue", reply.getMessageProperties().getHeaders().get("foo")); assertThat((String) reply.getMessageProperties().getHeaders().get("bar"), startsWith(tagPrefix)); }
@Test public void processAndReplyUsingReplyTo() throws Exception { MessagingMessageListenerAdapter listener = createDefaultInstance(String.class); listener.setMandatoryPublish(true); String body = "echo text"; Address replyTo = new Address("replyToQueue", "myRouting"); MessageProperties properties = new MessageProperties(); properties.setReplyToAddress(replyTo); org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage(body, properties); processAndReply(listener, message, "replyToQueue", "myRouting", true, null); assertDefaultListenerMethodInvocation(); }