- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将 Imap Idle XML 配置(运行良好)转换为 Java Config(不起作用)时遇到一些问题。
我对 Spring 还很陌生,所以这个问题可能是微不足道的。感谢您的帮助!
XML 配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/integration/mail http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-mail="http://www.springframework.org/schema/integration/mail"
xmlns:util="http://www.springframework.org/schema/util">
<int:channel id="emails"/>
<util:properties id="javaMailProperties">
<prop key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.imap.socketFactory.fallback">false</prop>
<prop key="mail.store.protocol">imaps</prop>
<prop key="mail.debug">true</prop>
</util:properties>
<int-mail:imap-idle-channel-adapter id="mailAdapter"
store-uri="imaps://login:pass@imap-server:993/INBOX"
java-mail-properties="javaMailProperties"
channel="emails"
should-delete-messages="false"
should-mark-messages-as-read="true">
</int-mail:imap-idle-channel-adapter>
</beans>
Java 配置:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.channel.DirectChannel;
import org.springframework.integration.mail.ImapIdleChannelAdapter;
import org.springframework.integration.mail.ImapMailReceiver;
import org.springframework.messaging.MessageChannel;
import java.util.Properties;
@Configuration
public class ImapConfig{
private Properties javaMailProperties() {
Properties javaMailProperties = new Properties();
javaMailProperties.setProperty("mail.imap.socketFactory.class","javax.net.ssl.SSLSocketFactory");
javaMailProperties.setProperty("mail.imap.socketFactory.fallback","false");
javaMailProperties.setProperty("mail.store.protocol","imaps");
javaMailProperties.setProperty("mail.debug","true");
return javaMailProperties;
}
@Bean
MessageChannel messageChannel() {
return new DirectChannel();
}
@Bean
ImapIdleChannelAdapter mailAdapter() {
ImapMailReceiver mailReceiver = new ImapMailReceiver("imaps://login:pass@imap-server:993/INBOX");
mailReceiver.setJavaMailProperties(javaMailProperties());
mailReceiver.setShouldDeleteMessages(false);
mailReceiver.setShouldMarkMessagesAsRead(true);
ImapIdleChannelAdapter imapIdleChannelAdapter = new ImapIdleChannelAdapter(mailReceiver);
imapIdleChannelAdapter.setOutputChannel(messageChannel());
return imapIdleChannelAdapter;
}
}
Main.java:
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.integration.channel.DirectChannel;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHandler;
import org.springframework.messaging.MessagingException;
public class Main {
public static void main(String args[]) {
ApplicationContext ac = new AnnotationConfigApplicationContext(ImapConfig.class);
DirectChannel inputChannel = ac.getBean("messageChannel", DirectChannel.class);
inputChannel.subscribe(new MessageHandler() {
public void handleMessage(Message<?> message) throws MessagingException {
System.out.println(message);
}
});
}
}
异常(exception):
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'mailAdapter'; nested exception is java.lang.IllegalArgumentException: 'taskScheduler' must not be null
Exception in thread "main" org.springframework.context.ApplicationContextException: Failed to start bean 'mailAdapter'; nested exception is java.lang.IllegalArgumentException: 'taskScheduler' must not be null
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:874)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
at Main.main(Main.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.IllegalArgumentException: 'taskScheduler' must not be null
at org.springframework.util.Assert.notNull(Assert.java:115)
at org.springframework.integration.mail.ImapIdleChannelAdapter.doStart(ImapIdleChannelAdapter.java:158)
at org.springframework.integration.endpoint.AbstractEndpoint.start(AbstractEndpoint.java:94)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
... 13 more
Process finished with exit code 1
最佳答案
您错过了 @Configuration
上的 @EnableIntegration
:http://docs.spring.io/spring-integration/docs/4.3.1.RELEASE/reference/html/overview.html#configuration-enable-integration
关于Java Spring 集成邮件 - IllegalArgumentException : 'taskScheduler' must not be null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015943/
假设我想创建一个自定义 TaskScheduler,但在其中,如果某些条件不适用,则回退到默认值。我该怎么做? 例如 protected override void QueueTask(Task ta
任务并行库非常棒,在过去的几个月里我经常使用它。然而,有件事确实困扰着我:事实上 TaskScheduler.Current是默认的任务计划程序,而不是 TaskScheduler.Default 。
我有一个从数据库中获取产品的任务,以及操作一些 UI 修改的 ContinueWith 操作,因此我遇到了一个问题,因为任务创建了一个新线程,并且没有执行 UI 修改在 UI 线程中。 我尝试使用此修
我有一个具有多个Dispatcher(又名 GUI 线程、又名消息泵)的应用程序,以确保 GUI 的缓慢且无响应的部分运行,而不会严重影响应用程序的其余部分。我也经常使用 Task。 目前,我的代码可
我要实现的是: 任务调度程序,将任务排入队列并并行运行指定数量,而其他任务则在队列中等待开始。每个任务都有超时,当任务运行时开始计数,如果超过该时间,任务将被取消并抛出 TimeoutExceptio
我有一些使用 ReaderWriterLockSlim 的代码。当某个对象被构造时,我在它上面获取写锁,并在一段时间后处理该对象时释放它。但是,由于这些调用的来源,我不能保证它们会在同一个线程上,这是
我发现不需要声明额外的 TaskScheduler,我可以像这样执行任务: 但是你能帮我解释一下吗,为什么不需要像下面这样的? 最佳答案 通用时间表
我在同一台服务器上有两个 spring boot 应用程序 (1.4.3.RELEASE)。应用程序 A 是一个单体应用程序,其中包含用于处理警报的部分代码,而应用程序 B 是一个仅处理警报的新专用应
在阅读了一些关于 TaskScheduler ( good article here ) 的内容后,发现 TaskScheduler 可以: 安排任务 - 通过使用 QueueTask 方法,在上面的
我有以下使用隐式调度的方法: private async Task FooAsync() { await Something(); DoAnotherThing(); await S
根据我的研究,我了解到以下内容: TaskScheduler.UnobservedTaskException必须等待任务被垃圾回收,然后该任务的未观察到的异常才会冒泡到 UnobservedTaskE
我需要在 Windows Server 2008 上通过 Powershell v2 安排任务。我正在使用 MS PowershellPack 中的 TaskScheduler 模块。 . 可以安排任
上个月我问了以下问题,这导致我学习了 TaskEx.Yield: Can async methods have expensive code before the first 'await'? 但是,
actors 中的异步等待支持 我正在将 actor 库 Akka 移植到 .NET ( https://github.com/rogeralsing/Pigeon )我想在我的 Actor 内部添加
我想打印我创建的任务的特定触发器,如何使用 QT Framework 在 C++ 中执行此操作,最好的方法是什么?另外,创建具有多个任务的动态调度程序并能够检索每个任务信息的最佳方法是什么? 最佳答案
TaskScheduler.Default 不总是保证任务将在池线程上执行吗? 在修复 bug 时,我至少发现了一个没有修复的情况。它可以像这样重现(一个由真实代码制作的人为示例): var tcs
我有自己的 TaskScheduler 实现。它存在的主要原因是它将处理器核心亲和性设置为运行我的任务的线程。 当我以下列方式使用它时: var myTaskSceduler = new MyTask
我正在尝试使用 the following custom task scheduler限制并发网络请求: 我是这样使用它的: const int CONCURRENCY_LEVEL = 2; stat
我正在寻求并行化我的项目中的一些工作,我首先使用了 Parallel.ForEach 并且它同时运行得很好,然后首席开发人员过来说他不太喜欢这个并想改变那个。 然后我决定沿着 TaskFactory
我试图设置一个 cron 来在我的 Windows 服务器上运行一个 php 脚本。该脚本在手动访问时运行良好,但无法通过任务计划运行。 问题是: // Code to fetch stuff fro
我是一名优秀的程序员,十分优秀!