List of usage examples for org.springframework.scheduling.concurrent ThreadPoolTaskScheduler afterPropertiesSet
@Override public void afterPropertiesSet()
From source file:integration.CreateSchedulerTest.java
@Test public void shouldSupportTheNewFormatForTriggersInSpring() throws InterruptedException { StubJob task = new StubJob(); ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.afterPropertiesSet(); scheduler.schedule(task, new WordyTrigger("every 1 second")); Thread.sleep(3000L);/*w ww . j a v a2 s . c o m*/ assertTrue("the task should have been invoked at some point", task.numberOfInvocations > 2); }
From source file:org.springframework.amqp.rabbit.AsyncRabbitTemplate.java
@Override public synchronized void start() { if (!this.running) { if (this.taskScheduler == null) { ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setThreadNamePrefix(getBeanName() == null ? "asyncTemplate-" : (getBeanName() + "-")); scheduler.afterPropertiesSet(); this.taskScheduler = scheduler; }//w w w . jav a 2s .co m if (this.container != null) { this.container.start(); } if (this.directReplyToContainer != null) { this.directReplyToContainer.setTaskScheduler(this.taskScheduler); this.directReplyToContainer.start(); } } this.running = true; }
From source file:org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer.java
@Override protected void doInitialize() throws Exception { if (this.taskScheduler == null) { ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); threadPoolTaskScheduler.setThreadNamePrefix(getBeanName() + "-consumerMonitor-"); threadPoolTaskScheduler.afterPropertiesSet(); this.taskScheduler = threadPoolTaskScheduler; }/*from w w w. j a v a 2s. c o m*/ }
From source file:org.springframework.integration.config.SourcePollingChannelAdapterFactoryBeanTests.java
@Test public void testInterrupted() throws Exception { final CountDownLatch startLatch = new CountDownLatch(1); MessageSource<Object> ms = () -> { startLatch.countDown();//from www . j a va 2 s . c om try { Thread.sleep(10000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new MessagingException("Interrupted awaiting stopLatch", e); } return null; }; SourcePollingChannelAdapter pollingChannelAdapter = new SourcePollingChannelAdapter(); ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setWaitForTasksToCompleteOnShutdown(true); taskScheduler.setAwaitTerminationSeconds(1); taskScheduler.afterPropertiesSet(); pollingChannelAdapter.setTaskScheduler(taskScheduler); MessagePublishingErrorHandler errorHandler = new MessagePublishingErrorHandler(); Log errorHandlerLogger = TestUtils.getPropertyValue(errorHandler, "logger", Log.class); errorHandlerLogger = spy(errorHandlerLogger); DirectFieldAccessor dfa = new DirectFieldAccessor(errorHandler); dfa.setPropertyValue("logger", errorHandlerLogger); pollingChannelAdapter.setErrorHandler(errorHandler); pollingChannelAdapter.setSource(ms); pollingChannelAdapter.setOutputChannel(new NullChannel()); pollingChannelAdapter.setBeanFactory(mock(BeanFactory.class)); pollingChannelAdapter.afterPropertiesSet(); Log adapterLogger = TestUtils.getPropertyValue(pollingChannelAdapter, "logger", Log.class); adapterLogger = spy(adapterLogger); when(adapterLogger.isDebugEnabled()).thenReturn(true); dfa = new DirectFieldAccessor(pollingChannelAdapter); dfa.setPropertyValue("logger", adapterLogger); pollingChannelAdapter.start(); assertTrue(startLatch.await(10, TimeUnit.SECONDS)); pollingChannelAdapter.stop(); taskScheduler.shutdown(); verifyZeroInteractions(errorHandlerLogger); verify(adapterLogger).debug(contains("Poll interrupted - during stop()?")); }
From source file:org.springframework.integration.file.FileWritingMessageHandlerTests.java
@Test public void noFlushAppend() throws Exception { File tempFolder = this.temp.newFolder(); FileWritingMessageHandler handler = new FileWritingMessageHandler(tempFolder); handler.setFileExistsMode(FileExistsMode.APPEND_NO_FLUSH); handler.setFileNameGenerator(message -> "foo.txt"); ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.afterPropertiesSet(); handler.setTaskScheduler(taskScheduler); handler.setOutputChannel(new NullChannel()); handler.setBeanFactory(mock(BeanFactory.class)); handler.setFlushInterval(30000);//from w ww .j a va 2s.co m handler.afterPropertiesSet(); handler.start(); File file = new File(tempFolder, "foo.txt"); handler.handleMessage(new GenericMessage<String>("foo")); handler.handleMessage(new GenericMessage<String>("bar")); handler.handleMessage(new GenericMessage<String>("baz")); handler.handleMessage(new GenericMessage<byte[]>("qux".getBytes())); // change of payload type forces flush assertThat(file.length(), greaterThanOrEqualTo(9L)); handler.stop(); // forces flush assertThat(file.length(), equalTo(12L)); handler.setFlushInterval(100); handler.start(); handler.handleMessage(new GenericMessage<InputStream>(new ByteArrayInputStream("fiz".getBytes()))); int n = 0; while (n++ < 100 && file.length() < 15) { Thread.sleep(100); } assertThat(file.length(), equalTo(15L)); handler.handleMessage(new GenericMessage<InputStream>(new ByteArrayInputStream("buz".getBytes()))); handler.trigger(new GenericMessage<String>(Matcher.quoteReplacement(file.getAbsolutePath()))); assertThat(file.length(), equalTo(18L)); assertEquals(0, TestUtils.getPropertyValue(handler, "fileStates", Map.class).size()); handler.setFlushInterval(30000); final AtomicBoolean called = new AtomicBoolean(); handler.setFlushPredicate((fileAbsolutePath, firstWrite, lastWrite, triggerMessage) -> { called.set(true); return true; }); handler.handleMessage(new GenericMessage<InputStream>(new ByteArrayInputStream("box".getBytes()))); handler.trigger(new GenericMessage<String>("foo")); assertThat(file.length(), equalTo(21L)); assertTrue(called.get()); handler.handleMessage(new GenericMessage<InputStream>(new ByteArrayInputStream("bux".getBytes()))); called.set(false); handler.flushIfNeeded((fileAbsolutePath, firstWrite, lastWrite) -> { called.set(true); return true; }); assertThat(file.length(), equalTo(24L)); assertTrue(called.get()); handler.stop(); Log logger = spy(TestUtils.getPropertyValue(handler, "logger", Log.class)); new DirectFieldAccessor(handler).setPropertyValue("logger", logger); when(logger.isDebugEnabled()).thenReturn(true); final AtomicInteger flushes = new AtomicInteger(); doAnswer(i -> { flushes.incrementAndGet(); return null; }).when(logger).debug(startsWith("Flushed:")); handler.setFlushInterval(50); handler.setFlushWhenIdle(false); handler.start(); for (int i = 0; i < 40; i++) { handler.handleMessage(new GenericMessage<String>("foo")); Thread.sleep(5); } assertThat(flushes.get(), greaterThanOrEqualTo(2)); handler.stop(); }
From source file:org.springframework.integration.file.FileWritingMessageHandlerTests.java
@Test public void lockForFlush() throws Exception { File tempFolder = this.temp.newFolder(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); final BufferedOutputStream out = spy(new BufferedOutputStream(baos)); FileWritingMessageHandler handler = new FileWritingMessageHandler(tempFolder) { @Override/*from www .j a v a2 s.co m*/ protected BufferedOutputStream createOutputStream(File fileToWriteTo, boolean append) { return out; } }; handler.setFileExistsMode(FileExistsMode.APPEND_NO_FLUSH); handler.setFileNameGenerator(message -> "foo.txt"); ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.afterPropertiesSet(); handler.setTaskScheduler(taskScheduler); handler.setOutputChannel(new NullChannel()); handler.setBeanFactory(mock(BeanFactory.class)); handler.setFlushInterval(10); handler.setFlushWhenIdle(false); handler.afterPropertiesSet(); handler.start(); final AtomicBoolean writing = new AtomicBoolean(); final AtomicBoolean closeWhileWriting = new AtomicBoolean(); willAnswer(i -> { writing.set(true); Thread.sleep(500); writing.set(false); return null; }).given(out).write(any(byte[].class), anyInt(), anyInt()); willAnswer(i -> { closeWhileWriting.compareAndSet(false, writing.get()); return null; }).given(out).close(); handler.handleMessage(new GenericMessage<>("foo".getBytes())); verify(out).write(any(byte[].class), anyInt(), anyInt()); assertFalse(closeWhileWriting.get()); handler.stop(); }
From source file:org.springframework.integration.ip.tcp.connection.ConnectionFactoryTests.java
public void testObtainConnectionIds(AbstractServerConnectionFactory serverFactory) throws Exception { final List<IpIntegrationEvent> events = Collections.synchronizedList(new ArrayList<IpIntegrationEvent>()); int expectedEvents = serverFactory instanceof TcpNetServerConnectionFactory ? 7 // Listening, + OPEN, CLOSE, EXCEPTION for each side : 5; // Listening, + OPEN, CLOSE (but we *might* get exceptions, depending on timing). final CountDownLatch serverListeningLatch = new CountDownLatch(1); final CountDownLatch eventLatch = new CountDownLatch(expectedEvents); ApplicationEventPublisher publisher = new ApplicationEventPublisher() { @Override//from w w w.j a v a 2 s .c o m public void publishEvent(ApplicationEvent event) { LogFactory.getLog(this.getClass()).trace("Received: " + event); events.add((IpIntegrationEvent) event); if (event instanceof TcpConnectionServerListeningEvent) { serverListeningLatch.countDown(); } eventLatch.countDown(); } @Override public void publishEvent(Object event) { } }; serverFactory.setBeanName("serverFactory"); serverFactory.setApplicationEventPublisher(publisher); serverFactory = spy(serverFactory); final CountDownLatch serverConnectionInitLatch = new CountDownLatch(1); doAnswer(invocation -> { Object result = invocation.callRealMethod(); serverConnectionInitLatch.countDown(); return result; }).when(serverFactory).wrapConnection(any(TcpConnectionSupport.class)); ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setPoolSize(10); scheduler.afterPropertiesSet(); BeanFactory bf = mock(BeanFactory.class); when(bf.containsBean(IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME)).thenReturn(true); when(bf.getBean(IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME, TaskScheduler.class)) .thenReturn(scheduler); serverFactory.setBeanFactory(bf); TcpReceivingChannelAdapter adapter = new TcpReceivingChannelAdapter(); adapter.setOutputChannel(new NullChannel()); adapter.setConnectionFactory(serverFactory); adapter.start(); assertTrue("Listening event not received", serverListeningLatch.await(10, TimeUnit.SECONDS)); assertThat(events.get(0), instanceOf(TcpConnectionServerListeningEvent.class)); assertThat(((TcpConnectionServerListeningEvent) events.get(0)).getPort(), equalTo(serverFactory.getPort())); int port = serverFactory.getPort(); TcpNetClientConnectionFactory clientFactory = new TcpNetClientConnectionFactory("localhost", port); clientFactory.registerListener(message -> false); clientFactory.setBeanName("clientFactory"); clientFactory.setApplicationEventPublisher(publisher); clientFactory.start(); TcpConnectionSupport client = clientFactory.getConnection(); List<String> clients = clientFactory.getOpenConnectionIds(); assertEquals(1, clients.size()); assertTrue(clients.contains(client.getConnectionId())); assertTrue("Server connection failed to register", serverConnectionInitLatch.await(1, TimeUnit.SECONDS)); List<String> servers = serverFactory.getOpenConnectionIds(); assertEquals(1, servers.size()); assertTrue(serverFactory.closeConnection(servers.get(0))); servers = serverFactory.getOpenConnectionIds(); assertEquals(0, servers.size()); int n = 0; clients = clientFactory.getOpenConnectionIds(); while (n++ < 100 && clients.size() > 0) { Thread.sleep(100); clients = clientFactory.getOpenConnectionIds(); } assertEquals(0, clients.size()); assertTrue(eventLatch.await(10, TimeUnit.SECONDS)); assertThat("Expected at least " + expectedEvents + " events; got: " + events.size() + " : " + events, events.size(), greaterThanOrEqualTo(expectedEvents)); FooEvent event = new FooEvent(client, "foo"); client.publishEvent(event); assertThat("Expected at least " + expectedEvents + " events; got: " + events.size() + " : " + events, events.size(), greaterThanOrEqualTo(expectedEvents + 1)); try { event = new FooEvent(mock(TcpConnectionSupport.class), "foo"); client.publishEvent(event); fail("Expected exception"); } catch (IllegalArgumentException e) { assertTrue("Can only publish events with this as the source".equals(e.getMessage())); } SocketAddress address = serverFactory.getServerSocketAddress(); if (address instanceof InetSocketAddress) { InetSocketAddress inetAddress = (InetSocketAddress) address; assertEquals(port, inetAddress.getPort()); } serverFactory.stop(); scheduler.shutdown(); }
From source file:org.springframework.integration.test.util.TestUtils.java
public static ThreadPoolTaskScheduler createTaskScheduler(int poolSize) { ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setPoolSize(poolSize);//from www . jav a 2 s. c om scheduler.setRejectedExecutionHandler(new CallerRunsPolicy()); scheduler.afterPropertiesSet(); return scheduler; }
From source file:org.springframework.messaging.simp.stomp.Reactor11TcpStompClientTests.java
@Before public void setUp() throws Exception { logger.debug("Setting up before '" + this.testName.getMethodName() + "'"); int port = SocketUtils.findAvailableTcpPort(61613); this.activeMQBroker = new BrokerService(); this.activeMQBroker.addConnector("stomp://127.0.0.1:" + port); this.activeMQBroker.setStartAsync(false); this.activeMQBroker.setPersistent(false); this.activeMQBroker.setUseJmx(false); this.activeMQBroker.getSystemUsage().getMemoryUsage().setLimit(1024 * 1024 * 5); this.activeMQBroker.getSystemUsage().getTempUsage().setLimit(1024 * 1024 * 5); this.activeMQBroker.start(); ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.afterPropertiesSet(); this.client = new Reactor11TcpStompClient("127.0.0.1", port); this.client.setMessageConverter(new StringMessageConverter()); this.client.setTaskScheduler(taskScheduler); }
From source file:org.springframework.messaging.simp.stomp.Reactor2TcpStompClientTests.java
@Before public void setUp() throws Exception { logger.debug("Setting up before '" + this.testName.getMethodName() + "'"); int port = SocketUtils.findAvailableTcpPort(61613); this.activeMQBroker = new BrokerService(); this.activeMQBroker.addConnector("stomp://127.0.0.1:" + port); this.activeMQBroker.setStartAsync(false); this.activeMQBroker.setPersistent(false); this.activeMQBroker.setUseJmx(false); this.activeMQBroker.getSystemUsage().getMemoryUsage().setLimit(1024 * 1024 * 5); this.activeMQBroker.getSystemUsage().getTempUsage().setLimit(1024 * 1024 * 5); this.activeMQBroker.start(); ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.afterPropertiesSet(); this.client = new Reactor2TcpStompClient("127.0.0.1", port); this.client.setMessageConverter(new StringMessageConverter()); this.client.setTaskScheduler(taskScheduler); }