List of usage examples for org.springframework.messaging.support GenericMessage GenericMessage
public GenericMessage(T payload)
From source file:org.springframework.integration.jdbc.MessageGroupQueueTests.java
@Test public void testConcurrentReadersWithTimeout() throws Exception { final MessageGroupQueue queue = new MessageGroupQueue(new SimpleMessageStore(), 1, 1); final AtomicReference<Message<?>> messageHolder1 = new AtomicReference<Message<?>>(); final AtomicReference<Message<?>> messageHolder2 = new AtomicReference<Message<?>>(); final AtomicReference<Message<?>> messageHolder3 = new AtomicReference<Message<?>>(); Thread t1 = new Thread(() -> { try {/*from w w w . ja va2s.c o m*/ messageHolder1.set(queue.poll(10, TimeUnit.SECONDS)); } catch (Exception e) { LogFactory.getLog(getClass()).error("queue poll failed", e); } }); Thread t2 = new Thread(() -> { try { messageHolder2.set(queue.poll(10, TimeUnit.SECONDS)); } catch (Exception e) { LogFactory.getLog(getClass()).error("queue poll failed", e); } }); Thread t3 = new Thread(() -> { try { messageHolder3.set(queue.poll(10, TimeUnit.SECONDS)); } catch (Exception e) { LogFactory.getLog(getClass()).error("queue poll failed", e); } }); Thread t4 = new Thread(() -> { try { queue.offer(new GenericMessage<String>("Hi"), 10, TimeUnit.SECONDS); } catch (Exception e) { LogFactory.getLog(getClass()).error("queue offer failed", e); } }); t1.start(); Thread.sleep(1000); t2.start(); Thread.sleep(1000); t3.start(); Thread.sleep(1000); t4.start(); Thread.sleep(1000); assertNotNull(messageHolder1.get()); assertEquals("Hi", messageHolder1.get().getPayload()); Thread.sleep(4000); assertTrue(messageHolder2.get() == null); }
From source file:org.springframework.integration.jdbc.MessageGroupQueueTests.java
@Test public void testConcurrentWritersWithTimeout() throws Exception { final MessageGroupQueue queue = new MessageGroupQueue(new SimpleMessageStore(), 1, 1); final AtomicReference<Boolean> booleanHolder1 = new AtomicReference<Boolean>(true); final AtomicReference<Boolean> booleanHolder2 = new AtomicReference<Boolean>(true); final AtomicReference<Boolean> booleanHolder3 = new AtomicReference<Boolean>(true); Thread t1 = new Thread(() -> { try {// w w w . j a va 2 s .c o m booleanHolder1.set(queue.offer(new GenericMessage<String>("Hi-1"), 2, TimeUnit.SECONDS)); } catch (Exception e) { LogFactory.getLog(getClass()).error("queue offer failed", e); } }); Thread t2 = new Thread(() -> { try { boolean offered = queue.offer(new GenericMessage<String>("Hi-2"), 2, TimeUnit.SECONDS); booleanHolder2.set(offered); } catch (Exception e) { LogFactory.getLog(getClass()).error("queue offer failed", e); } }); Thread t3 = new Thread(() -> { try { boolean offered = queue.offer(new GenericMessage<String>("Hi-3"), 2, TimeUnit.SECONDS); booleanHolder3.set(offered); } catch (Exception e) { LogFactory.getLog(getClass()).error("queue offer failed", e); } }); t1.start(); Thread.sleep(1000); t2.start(); Thread.sleep(100); t3.start(); Thread.sleep(4000); assertTrue(booleanHolder1.get()); assertFalse(booleanHolder2.get()); assertFalse(booleanHolder3.get()); }
From source file:org.springframework.integration.jdbc.MessageGroupQueueTests.java
@Test public void testConcurrentWriteReadMulti() throws Exception { final MessageGroupQueue queue = new MessageGroupQueue(new SimpleMessageStore(), 1, 4); final AtomicReference<Message<?>> messageHolder = new AtomicReference<Message<?>>(); queue.offer(new GenericMessage<String>("hello"), 1000, TimeUnit.SECONDS); Thread t1 = new Thread(() -> { try {/*w w w . jav a 2 s .c om*/ queue.offer(new GenericMessage<String>("Hi"), 1000, TimeUnit.SECONDS); queue.offer(new GenericMessage<String>("Hi"), 1000, TimeUnit.SECONDS); queue.offer(new GenericMessage<String>("Hi"), 1000, TimeUnit.SECONDS); } catch (Exception e) { LogFactory.getLog(getClass()).error("queue offer failed", e); } }); Thread t2 = new Thread(() -> { try { queue.poll(1000, TimeUnit.SECONDS); messageHolder.set(queue.poll(1000, TimeUnit.SECONDS)); queue.poll(1000, TimeUnit.SECONDS); queue.poll(1000, TimeUnit.SECONDS); } catch (Exception e) { LogFactory.getLog(getClass()).error("queue poll failed", e); } }); t1.start(); Thread.sleep(1000); t2.start(); Thread.sleep(1000); assertTrue(messageHolder.get().getPayload().equals("Hi")); assertNull(queue.poll(5, TimeUnit.SECONDS)); }
From source file:org.springframework.integration.jdbc.MessageGroupQueueTests.java
@Test public void validateMgqInterruptionStoreLock() throws Exception { MessageGroupStore mgs = Mockito.mock(MessageGroupStore.class); Mockito.doAnswer(invocation -> {// www.j ava2 s. c o m Thread.sleep(5000); return null; }).when(mgs).addMessageToGroup(Mockito.any(Integer.class), Mockito.any(Message.class)); MessageGroup mg = Mockito.mock(MessageGroup.class); Mockito.when(mgs.getMessageGroup(Mockito.any())).thenReturn(mg); Mockito.when(mg.size()).thenReturn(0); final MessageGroupQueue queue = new MessageGroupQueue(mgs, 1, 1); final AtomicReference<InterruptedException> exceptionHolder = new AtomicReference<InterruptedException>(); Thread t1 = new Thread(() -> queue.offer(new GenericMessage<String>("hello"))); t1.start(); Thread.sleep(500); Thread t2 = new Thread(() -> { queue.offer(new GenericMessage<String>("hello")); try { queue.offer(new GenericMessage<String>("hello"), 100, TimeUnit.SECONDS); } catch (InterruptedException e) { exceptionHolder.set(e); } }); t2.start(); Thread.sleep(1000); t2.interrupt(); Thread.sleep(1000); assertTrue(exceptionHolder.get() instanceof InterruptedException); }
From source file:org.springframework.integration.jms.ChannelPublishingJmsMessageListenerTests.java
private void startBackgroundReplier(final PollableChannel channel) { new SimpleAsyncTaskExecutor().execute(() -> { Message<?> request = channel.receive(50000); Message<?> reply = new GenericMessage<String>(((String) request.getPayload()).toUpperCase()); ((MessageChannel) request.getHeaders().getReplyChannel()).send(reply, 5000); });/*from ww w . j ava2 s . co m*/ }
From source file:org.springframework.integration.jms.request_reply.RequestReplyScenariosWithTempReplyQueuesTests.java
@SuppressWarnings("resource") @Test//w w w. j a v a 2s . co m public void messageCorrelationBasedOnRequestMessageId() throws Exception { ActiveMqTestUtils.prepare(); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "producer-temp-reply-consumers.xml", this.getClass()); RequestReplyExchanger gateway = context.getBean(RequestReplyExchanger.class); CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class); final JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory); final Destination requestDestination = context.getBean("siOutQueue", Destination.class); new Thread(() -> { final Message requestMessage = jmsTemplate.receive(requestDestination); Destination replyTo = null; try { replyTo = requestMessage.getJMSReplyTo(); } catch (Exception e) { fail(); } jmsTemplate.send(replyTo, (MessageCreator) session -> { try { TextMessage message = session.createTextMessage(); message.setText("bar"); message.setJMSCorrelationID(requestMessage.getJMSMessageID()); return message; } catch (Exception e) { // ignore } return null; }); }).start(); gateway.exchange(new GenericMessage<String>("foo")); context.close(); }
From source file:org.springframework.integration.jms.request_reply.RequestReplyScenariosWithTempReplyQueuesTests.java
@Test public void messageCorrelationBasedOnRequestCorrelationIdTimedOutFirstReply() throws Exception { ActiveMqTestUtils.prepare();//from w ww.j a v a 2 s .c o m ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "producer-temp-reply-consumers.xml", this.getClass()); RequestReplyExchanger gateway = context.getBean(RequestReplyExchanger.class); ConnectionFactory connectionFactory = context.getBean(ConnectionFactory.class); final Destination requestDestination = context.getBean("siOutQueue", Destination.class); DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer(); dmlc.setConnectionFactory(connectionFactory); dmlc.setDestination(requestDestination); dmlc.setMessageListener((SessionAwareMessageListener<Message>) (message, session) -> { Destination replyTo = null; try { replyTo = message.getJMSReplyTo(); } catch (Exception e1) { fail(); } String requestPayload = (String) extractPayload(message); if (requestPayload.equals("foo")) { try { Thread.sleep(6000); } catch (Exception e2) { /*ignore*/ } } try { TextMessage replyMessage = session.createTextMessage(); replyMessage.setText(requestPayload); replyMessage.setJMSCorrelationID(message.getJMSMessageID()); MessageProducer producer = session.createProducer(replyTo); producer.send(replyMessage); } catch (Exception e3) { // ignore. the test will fail } }); dmlc.afterPropertiesSet(); dmlc.start(); try { gateway.exchange(new GenericMessage<String>("foo")); } catch (Exception e) { // ignore } Thread.sleep(1000); try { assertEquals("bar", gateway.exchange(new GenericMessage<String>("bar")).getPayload()); } catch (Exception e) { e.printStackTrace(); fail(); } context.close(); }
From source file:org.springframework.integration.jms.request_reply.RequestReplyScenariosWithTempReplyQueuesTests.java
/** * Validates that JOG will recreate a temporary queue * once a failure detected and that the messages will still be properly correlated *//* ww w . j av a2s . co m*/ @Test public void brokenBrokerTest() throws Exception { BrokerService broker = new BrokerService(); broker.setPersistent(false); broker.setUseJmx(false); broker.setTransportConnectorURIs(new String[] { "tcp://localhost:61623" }); broker.setDeleteAllMessagesOnStartup(true); broker.start(); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("broken-broker.xml", this.getClass()); final RequestReplyExchanger gateway = context.getBean(RequestReplyExchanger.class); int replyCounter = 0; int timeoutCounter = 0; for (int i = 0; i < 50; i++) { try { assertEquals(i + "", gateway.exchange(new GenericMessage<String>(String.valueOf(i))).getPayload()); replyCounter++; } catch (Exception e) { timeoutCounter++; } if (i == 0 || i == 20 || i == 40) { Object replyDestination = TestUtils.getPropertyValue(context.getBean("jog"), "handler.replyDestination"); if (replyDestination != null) { broker.removeDestination((ActiveMQDestination) replyDestination); } } } assertEquals(50, replyCounter + timeoutCounter); context.close(); }
From source file:org.springframework.integration.jms.request_reply.RequestReplyScenariosWithTempReplyQueuesTests.java
@Test public void testConcurrently() throws Exception { ActiveMqTestUtils.prepare();//from ww w.j av a2 s .c o m ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "mult-producer-and-consumers-temp-reply.xml", this.getClass()); final RequestReplyExchanger gateway = context.getBean(RequestReplyExchanger.class); Executor executor = Executors.newFixedThreadPool(10); final int testNumbers = 100; final CountDownLatch latch = new CountDownLatch(testNumbers); final AtomicInteger failures = new AtomicInteger(); final AtomicInteger timeouts = new AtomicInteger(); final AtomicInteger missmatches = new AtomicInteger(); for (int i = 0; i < testNumbers; i++) { final int y = i; executor.execute(() -> { try { String reply = (String) gateway.exchange(new GenericMessage<String>(String.valueOf(y))) .getPayload(); if (!String.valueOf(y).equals(reply)) { missmatches.incrementAndGet(); } } catch (Exception e) { if (e instanceof MessageDeliveryException) { timeouts.incrementAndGet(); } else { failures.incrementAndGet(); } } // if (latch.getCount()%100 == 0){ // long count = testNumbers-latch.getCount(); // if (count > 0){ // print(failures, timeouts, missmatches, testNumbers-latch.getCount()); // } // } latch.countDown(); }); } latch.await(); print(failures, timeouts, missmatches, testNumbers); Thread.sleep(5000); assertEquals(0, missmatches.get()); assertEquals(0, failures.get()); assertEquals(0, timeouts.get()); context.close(); }
From source file:org.springframework.integration.mqtt.DownstreamExceptionTests.java
@Test public void testNoErrorChannel() throws Exception { service.n = 0;//from w w w. j a v a2 s . c om Log logger = spy(TestUtils.getPropertyValue(noErrorChannel, "logger", Log.class)); final CountDownLatch latch = new CountDownLatch(1); doAnswer(invocation -> { if (((String) invocation.getArgument(0)).contains("Unhandled")) { latch.countDown(); } return null; }).when(logger).error(anyString(), any(Throwable.class)); new DirectFieldAccessor(noErrorChannel).setPropertyValue("logger", logger); MqttPahoMessageHandler adapter = new MqttPahoMessageHandler("tcp://localhost:1883", "si-test-out"); adapter.setDefaultTopic("mqtt-fooEx1"); adapter.setBeanFactory(mock(BeanFactory.class)); adapter.afterPropertiesSet(); adapter.start(); adapter.handleMessage(new GenericMessage<String>("foo")); service.barrier.await(10, TimeUnit.SECONDS); service.barrier.reset(); adapter.handleMessage(new GenericMessage<String>("foo")); service.barrier.await(10, TimeUnit.SECONDS); assertTrue(latch.await(10, TimeUnit.SECONDS)); verify(logger).error(contains("Unhandled exception for"), any(Throwable.class)); service.barrier.reset(); adapter.stop(); }