ftp - how to write output channel from itemWriter in spring batch and spring integration? -
firstly attention, combined spring batch , spring integration, defined job flow , retrieve files ftp adapter , sent jobchannel, , process on spring batch , want write output channel , consume channel after processing, code is:
<int-ftp:outbound-gateway id="gatewayget" local-directory-expression="'./backup/' +#remotedirectory" session-factory="ftpsessionfactory" request-channel="togetchannel" reply-channel="toprocesschannel" command="get" temporary-file-suffix=".writing" command-options="-p" expression="payload.remotedirectory + '/' + payload.filename"/> <int:channel id="toprocesschannel"> <int:interceptors> <int:wire-tap channel="logger2"/> </int:interceptors> </int:channel> <int:channel id="outboundjobrequestchannel"/> <int:channel id="replyjobchannel"/> <service-activator input-channel="joblaunchreplychannel"/> <int:transformer input-channel="toprocesschannel" output-channel="outboundjobrequestchannel"> <bean class="ir.isc.macna.configuration.filemessagetojobrequest"> <property name="fileparametername" value="filename"/> </bean> </int:transformer> <batch-int:job-launching-gateway request-channel="outboundjobrequestchannel" reply-channel="joblaunchreplychannel"/>
and writer code is:
@component @stepscope public class macnafilewriter implements chunkmessagechannelitemwriter<fileinfo> { @autowired @qualifier("replyjobchannel") private messagechannel messagechannel; @override public void write(list<? extends fileinfo> list) throws exception { // send message replyjobchannel channel send method } }
and use ftp adapter write files on server:
<int-ftp:outbound-gateway session-factory="ftpsessionfactory" request-channel="replyjob" command="mput" auto-create-directory="true" expression="payload" remote-directory-expression="payload.remotedirectory + '/' + payload.filename + '.out'" reply-channel="output"/>
is standard way run batch job , consume result?
messagechannel
has send
method. purpose can use messagebuilder
create message<?>
payload
.
since <channel>
there no difference other messagechannel
consume. standard way define consumer this:
<service-activator input-channel="joblaunchreplychannel"/>
however isn't clear why going send messages joblaunchreplychannel
, when channel specific result <batch-int:job-launching-gateway>
(joblaunchinggateway
class):
jobexecution = this.joblaunchingmessagehandler.launch(joblaunchrequest);
so, jobexecution
sent joblaunchreplychannel
.
see spring batch integration documentation.
maybe need asyncitemwriter
or chunkmessagechannelitemwriter
?
Comments
Post a Comment