SFTP 入站通道适配器在 PollableChannel 接收方法处挂起
SFTP inbound channel adapter hangs at PollableChannel receive method
我的上下文xml是这样写的:
<bean id="defaultSftpSessionFactory"
class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<property name="host" value="${host}"/>
<property name="password" value="${password}"/>
<property name="port" value="${port}"/>
<property name="user" value="${username}"/>
</bean>
<int-sftp:inbound-channel-adapter id="sftpInbondAdapter"
session-factory="sftpSessionFactory"
channel="receiveChannel"
filename-pattern="*.txt"
remote-directory="/loblawln"
local-directory="/local-dir"
auto-create-local-directory="true"
temporary-file-suffix=".writing"
delete-remote-files="false">
<int:poller fixed-rate="1000" max-messages-per-poll="1"/>
</int-sftp:inbound-channel-adapter>
<int:channel id="receiveChannel">
<int:queue/>
</int:channel>
java 文件内容如下:
PollableChannel localFileChannel = context.getBean("receiveChannel", PollableChannel.class);
SourcePollingChannelAdapter adapter = context.getBean(SourcePollingChannelAdapter.class);
adapter.start();
System.out.println("Adapter started...");
Message<?> received = localFileChannel.receive();
System.out.println("Received first file message: " + received);
我参考了 Gary Russell 在 Github 提供的实现,并且还按照 spring 文档进行了 sftp 集成。我想我错过了一些重要的东西。
此外,日志也根本没有显示任何内容。
通过更改密钥以读取用户名解决了问题。
当我调试代码并读取 defaultSessionFactory 实例中的值时,这对我来说似乎有点奇怪,我发现它不是从属性文件中读取用户名,而是读取对应于 System.getProperty("user.name" ).当我将密钥从 {username} 更改为 {sftp.username} 之类的其他内容时,它会正确读取。
我的上下文xml是这样写的:
<bean id="defaultSftpSessionFactory"
class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<property name="host" value="${host}"/>
<property name="password" value="${password}"/>
<property name="port" value="${port}"/>
<property name="user" value="${username}"/>
</bean>
<int-sftp:inbound-channel-adapter id="sftpInbondAdapter"
session-factory="sftpSessionFactory"
channel="receiveChannel"
filename-pattern="*.txt"
remote-directory="/loblawln"
local-directory="/local-dir"
auto-create-local-directory="true"
temporary-file-suffix=".writing"
delete-remote-files="false">
<int:poller fixed-rate="1000" max-messages-per-poll="1"/>
</int-sftp:inbound-channel-adapter>
<int:channel id="receiveChannel">
<int:queue/>
</int:channel>
java 文件内容如下:
PollableChannel localFileChannel = context.getBean("receiveChannel", PollableChannel.class);
SourcePollingChannelAdapter adapter = context.getBean(SourcePollingChannelAdapter.class);
adapter.start();
System.out.println("Adapter started...");
Message<?> received = localFileChannel.receive();
System.out.println("Received first file message: " + received);
我参考了 Gary Russell 在 Github 提供的实现,并且还按照 spring 文档进行了 sftp 集成。我想我错过了一些重要的东西。 此外,日志也根本没有显示任何内容。
通过更改密钥以读取用户名解决了问题。 当我调试代码并读取 defaultSessionFactory 实例中的值时,这对我来说似乎有点奇怪,我发现它不是从属性文件中读取用户名,而是读取对应于 System.getProperty("user.name" ).当我将密钥从 {username} 更改为 {sftp.username} 之类的其他内容时,它会正确读取。