Example usage for org.springframework.messaging.support GenericMessage GenericMessage

List of usage examples for org.springframework.messaging.support GenericMessage GenericMessage

Introduction

In this page you can find the example usage for org.springframework.messaging.support GenericMessage GenericMessage.

Prototype

public GenericMessage(T payload) 

Source Link

Document

Create a new message with the given payload.

Usage

From source file:org.springframework.integration.channel.DirectChannelTests.java

@Test
public void testSendPerfTwoHandlers() {
    /*/*from  w ww.  j  a v a 2 s .c  o  m*/
     *  INT-3308 - used to run 6.4 million/sec
     *  1. Skip empty iterators as above 7.2 million/sec
     *  2. optimize for single handler 6.7 million/sec (small overhead added)
     *  3. remove LB rwlock from UnicastingDispatcher 7.2 million/sec
     *  4. Move single handler optimization to dispatcher 7.3 million/sec
     */
    DirectChannel channel = new DirectChannel();
    final AtomicInteger count1 = new AtomicInteger();
    final AtomicInteger count2 = new AtomicInteger();
    channel.subscribe(message -> count1.incrementAndGet());
    channel.subscribe(message -> count2.getAndIncrement());
    GenericMessage<String> message = new GenericMessage<String>("test");
    assertTrue(channel.send(message));
    for (int i = 0; i < 10000000; i++) {
        channel.send(message);
    }
    assertEquals(5000001, count1.get());
    assertEquals(5000000, count2.get());
}

From source file:org.springframework.integration.channel.DirectChannelTests.java

@Test
public void testSendPerfFixedSubscriberChannel() {
    /*/*www  .  j a  va  2s.co m*/
     *  INT-3308 - 96 million/sec
     *  NOTE: in order to get a measurable time, I had to add some code to the handler -
     *  presumably the JIT compiler short circuited the call becaues it's a final field
     *  and he knows the method does nothing.
     *  Added the same code to the other tests for comparison.
     */
    final AtomicInteger count = new AtomicInteger();
    FixedSubscriberChannel channel = new FixedSubscriberChannel(message -> count.incrementAndGet());
    GenericMessage<String> message = new GenericMessage<String>("test");
    assertTrue(channel.send(message));
    for (int i = 0; i < 100000000; i++) {
        channel.send(message, 0);
    }
}

From source file:org.springframework.integration.channel.DirectChannelTests.java

@Test
public void testSendInSeparateThread() throws InterruptedException {
    CountDownLatch latch = new CountDownLatch(1);
    final DirectChannel channel = new DirectChannel();
    ThreadNameExtractingTestTarget target = new ThreadNameExtractingTestTarget(latch);
    channel.subscribe(target);//from  w ww  . jav a 2s  . c  o  m
    final GenericMessage<String> message = new GenericMessage<String>("test");
    new Thread((Runnable) () -> channel.send(message), "test-thread").start();
    latch.await(1000, TimeUnit.MILLISECONDS);
    assertEquals("test-thread", target.threadName);
}

From source file:org.springframework.integration.channel.QueueChannelTests.java

@Test
public void testSimpleSendAndReceive() throws Exception {
    final AtomicBoolean messageReceived = new AtomicBoolean(false);
    final CountDownLatch latch = new CountDownLatch(1);
    final QueueChannel channel = new QueueChannel();
    Log logger = spy(TestUtils.getPropertyValue(channel, "logger", Log.class));
    when(logger.isDebugEnabled()).thenReturn(true);
    when(logger.isTraceEnabled()).thenReturn(true);
    new DirectFieldAccessor(channel).setPropertyValue("logger", logger);
    new Thread(new Runnable() {
        @Override/*w  w  w. j  a va  2  s.  c  o  m*/
        public void run() {
            Message<?> message = channel.receive();
            if (message != null) {
                messageReceived.set(true);
                latch.countDown();
            }
        }
    }).start();
    assertFalse(messageReceived.get());
    channel.send(new GenericMessage<String>("testing"));
    latch.await(1000, TimeUnit.MILLISECONDS);
    assertTrue(messageReceived.get());
    ArgumentCaptor<String> preCaptor = ArgumentCaptor.forClass(String.class);
    ArgumentCaptor<String> postCaptor = ArgumentCaptor.forClass(String.class);
    verify(logger).trace(preCaptor.capture());
    verify(logger, times(3)).debug(postCaptor.capture());
    assertThat(preCaptor.getValue(), startsWith("preReceive"));
    assertThat(postCaptor.getValue(), startsWith("postReceive"));
}

From source file:org.springframework.integration.channel.QueueChannelTests.java

@Test
public void testImmediateReceive() throws Exception {
    final AtomicBoolean messageReceived = new AtomicBoolean(false);
    final QueueChannel channel = new QueueChannel();
    final CountDownLatch latch1 = new CountDownLatch(1);
    final CountDownLatch latch2 = new CountDownLatch(1);
    Executor singleThreadExecutor = Executors.newSingleThreadExecutor();
    Runnable receiveTask1 = new Runnable() {
        @Override/*www. j av a  2 s .com*/
        public void run() {
            Message<?> message = channel.receive(0);
            if (message != null) {
                messageReceived.set(true);
            }
            latch1.countDown();
        }
    };
    Runnable sendTask = new Runnable() {
        @Override
        public void run() {
            channel.send(new GenericMessage<String>("testing"));
        }
    };
    singleThreadExecutor.execute(receiveTask1);
    latch1.await();
    singleThreadExecutor.execute(sendTask);
    assertFalse(messageReceived.get());
    Runnable receiveTask2 = new Runnable() {
        @Override
        public void run() {
            Message<?> message = channel.receive(0);
            if (message != null) {
                messageReceived.set(true);
            }
            latch2.countDown();
        }
    };
    singleThreadExecutor.execute(receiveTask2);
    latch2.await();
    assertTrue(messageReceived.get());
}

From source file:org.springframework.integration.channel.QueueChannelTests.java

@Test
public void testImmediateSend() {
    QueueChannel channel = new QueueChannel(3);
    boolean result1 = channel.send(new GenericMessage<String>("test-1"));
    assertTrue(result1);/* ww  w . j  ava  2s .co m*/
    boolean result2 = channel.send(new GenericMessage<String>("test-2"), 100);
    assertTrue(result2);
    boolean result3 = channel.send(new GenericMessage<String>("test-3"), 0);
    assertTrue(result3);
    boolean result4 = channel.send(new GenericMessage<String>("test-4"), 0);
    assertFalse(result4);
}

From source file:org.springframework.integration.channel.QueueChannelTests.java

@Test
public void testBlockingSendWithNoTimeout() throws Exception {
    final QueueChannel channel = new QueueChannel(1);
    boolean result1 = channel.send(new GenericMessage<String>("test-1"));
    assertTrue(result1);/*w  w  w  . ja v  a2 s . co m*/
    final AtomicBoolean sendInterrupted = new AtomicBoolean(false);
    final CountDownLatch latch = new CountDownLatch(1);
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            channel.send(new GenericMessage<String>("test-2"));
            sendInterrupted.set(true);
            latch.countDown();
        }
    });
    t.start();
    assertFalse(sendInterrupted.get());
    t.interrupt();
    latch.await();
    assertTrue(sendInterrupted.get());
}

From source file:org.springframework.integration.channel.QueueChannelTests.java

@Test
public void testBlockingSendWithTimeout() throws Exception {
    final QueueChannel channel = new QueueChannel(1);
    boolean result1 = channel.send(new GenericMessage<String>("test-1"));
    assertTrue(result1);/*from  w  w w.  j a v a  2  s.c o  m*/
    final AtomicBoolean sendInterrupted = new AtomicBoolean(false);
    final CountDownLatch latch = new CountDownLatch(1);
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            channel.send(new GenericMessage<String>("test-2"), 10000);
            sendInterrupted.set(true);
            latch.countDown();
        }
    });
    t.start();
    assertFalse(sendInterrupted.get());
    t.interrupt();
    latch.await();
    assertTrue(sendInterrupted.get());
}

From source file:org.springframework.integration.channel.QueueChannelTests.java

@Test
public void testClear() {
    QueueChannel channel = new QueueChannel(2);
    GenericMessage<String> message1 = new GenericMessage<String>("test1");
    GenericMessage<String> message2 = new GenericMessage<String>("test2");
    GenericMessage<String> message3 = new GenericMessage<String>("test3");
    assertTrue(channel.send(message1));//from ww w.j a va  2 s  .  co  m
    assertTrue(channel.send(message2));
    assertFalse(channel.send(message3, 0));
    List<Message<?>> clearedMessages = channel.clear();
    assertNotNull(clearedMessages);
    assertEquals(2, clearedMessages.size());
    assertTrue(channel.send(message3));
}

From source file:org.springframework.integration.channel.QueueChannelTests.java

@Test
public void testPurge() {
    QueueChannel channel = new QueueChannel(2);
    long minute = 60 * 1000;
    long time = System.currentTimeMillis();
    long past = time - minute;
    long future = time + minute;
    Message<String> expiredMessage = MessageBuilder.withPayload("test1").setExpirationDate(past).build();
    Message<String> unexpiredMessage = MessageBuilder.withPayload("test2").setExpirationDate(future).build();
    assertTrue(channel.send(expiredMessage, 0));
    assertTrue(channel.send(unexpiredMessage, 0));
    assertFalse(channel.send(new GenericMessage<String>("atCapacity"), 0));
    List<Message<?>> purgedMessages = channel.purge(new UnexpiredMessageSelector());
    assertNotNull(purgedMessages);//from w w w . j ava 2s.  c  om
    assertEquals(1, purgedMessages.size());
    assertTrue(channel.send(new GenericMessage<String>("roomAvailable"), 0));
}