Example usage for org.springframework.amqp.core MessageListener onMessage

List of usage examples for org.springframework.amqp.core MessageListener onMessage

Introduction

In this page you can find the example usage for org.springframework.amqp.core MessageListener onMessage.

Prototype

void onMessage(Message message);

Source Link

Document

Delivers a single message.

Usage

From source file:org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.java

/**
 * Invoke the specified listener as Spring Rabbit MessageListener.
 * <p>//from ww  w .  j  a v  a 2 s .  c  o  m
 * Default implementation performs a plain invocation of the <code>onMessage</code> method.
 * <p>
 * Exception thrown from listener will be wrapped to {@link ListenerExecutionFailedException}.
 *
 * @param listener the Rabbit MessageListener to invoke
 * @param message the received Rabbit Message
 * @throws Exception Any Exception.
 *
 * @see org.springframework.amqp.core.MessageListener#onMessage
 */
protected void doInvokeListener(MessageListener listener, Message message) throws Exception {
    try {
        listener.onMessage(message);
    } catch (Exception e) {
        throw wrapToListenerExecutionFailedExceptionIfNeeded(e, message);
    }
}

From source file:org.springframework.integration.amqp.channel.DispatcherHasNoSubscribersTests.java

@Test
public void testPtP() {
    final Channel channel = mock(Channel.class);
    Connection connection = mock(Connection.class);
    doAnswer(new Answer<Channel>() {
        public Channel answer(InvocationOnMock invocation) throws Throwable {
            return channel;
        }/*from   w ww. jav  a  2  s .co  m*/
    }).when(connection).createChannel(anyBoolean());
    ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
    when(connectionFactory.createConnection()).thenReturn(connection);
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    AmqpTemplate amqpTemplate = mock(AmqpTemplate.class);

    PointToPointSubscribableAmqpChannel amqpChannel = new PointToPointSubscribableAmqpChannel(
            "noSubscribersChannel", container, amqpTemplate);
    amqpChannel.setBeanName("noSubscribersChannel");
    amqpChannel.afterPropertiesSet();

    MessageListener listener = (MessageListener) container.getMessageListener();
    try {
        listener.onMessage(new Message("Hello world!".getBytes(), null));
        fail("Exception expected");
    } catch (MessageDeliveryException e) {
        assertEquals("Dispatcher has no subscribers for amqp-channel 'noSubscribersChannel'.", e.getMessage());
    }
}

From source file:org.springframework.integration.amqp.channel.DispatcherHasNoSubscribersTests.java

@Test
public void testPubSub() {
    final Channel channel = mock(Channel.class);
    Connection connection = mock(Connection.class);
    doAnswer(new Answer<Channel>() {
        public Channel answer(InvocationOnMock invocation) throws Throwable {
            return channel;
        }/*from w w w.  ja  v a  2  s .  co  m*/
    }).when(connection).createChannel(anyBoolean());
    ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
    when(connectionFactory.createConnection()).thenReturn(connection);
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    AmqpTemplate amqpTemplate = mock(AmqpTemplate.class);
    final Queue queue = new Queue("noSubscribersQueue");
    PublishSubscribeAmqpChannel amqpChannel = new PublishSubscribeAmqpChannel("noSubscribersChannel", container,
            amqpTemplate) {
        @Override
        protected Queue initializeQueue(AmqpAdmin admin, String channelName) {
            return queue;
        }
    };
    amqpChannel.setBeanName("noSubscribersChannel");
    amqpChannel.afterPropertiesSet();

    List<String> logList = insertMockLoggerInListener(amqpChannel);
    MessageListener listener = (MessageListener) container.getMessageListener();
    listener.onMessage(new Message("Hello world!".getBytes(), null));
    verifyLogReceived(logList);
}