Streaming objects from S3 Object using Spring Aws Integration
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I am working on a usecase where I am supposed to poll S3 -> read the stream for the content -> do some processing and upload it to another bucket rather than writing the file in my server.
I know I can achieve it using S3StreamingMessageSource in Spring aws integration but the problem I am facing is that I do not know on how to process the message stream received by polling
public class S3PollerConfigurationUsingStreaming {
@Value("${amazonProperties.bucketName}")
private String bucketName;
@Value("${amazonProperties.newBucket}")
private String newBucket;
@Autowired
private AmazonClientService amazonClient;
@Bean
@InboundChannelAdapter(value = "s3Channel", poller = @Poller(fixedDelay = "100"))
public MessageSource<InputStream> s3InboundStreamingMessageSource() {
S3StreamingMessageSource messageSource = new S3StreamingMessageSource(template());
messageSource.setRemoteDirectory(bucketName);
messageSource.setFilter(new S3PersistentAcceptOnceFileListFilter(new SimpleMetadataStore(),
"streaming"));
return messageSource;
}
@Bean
@Transformer(inputChannel = "s3Channel", outputChannel = "data")
public org.springframework.integration.transformer.Transformer transformer() {
return new StreamTransformer();
}
@Bean
public S3RemoteFileTemplate template() {
return new S3RemoteFileTemplate(new S3SessionFactory(amazonClient.getS3Client()));
}
@Bean
public PollableChannel s3Channel() {
return new QueueChannel();
}
@Bean
IntegrationFlow fileStreamingFlow() {
return IntegrationFlows
.from(s3InboundStreamingMessageSource(),
e -> e.poller(p -> p.fixedDelay(30, TimeUnit.SECONDS)))
.handle(streamFile())
.get();
}
}
Can someone please help me with the code to process the stream ?
amazon-s3 streaming spring-integration spring-integration-aws
add a comment |
I am working on a usecase where I am supposed to poll S3 -> read the stream for the content -> do some processing and upload it to another bucket rather than writing the file in my server.
I know I can achieve it using S3StreamingMessageSource in Spring aws integration but the problem I am facing is that I do not know on how to process the message stream received by polling
public class S3PollerConfigurationUsingStreaming {
@Value("${amazonProperties.bucketName}")
private String bucketName;
@Value("${amazonProperties.newBucket}")
private String newBucket;
@Autowired
private AmazonClientService amazonClient;
@Bean
@InboundChannelAdapter(value = "s3Channel", poller = @Poller(fixedDelay = "100"))
public MessageSource<InputStream> s3InboundStreamingMessageSource() {
S3StreamingMessageSource messageSource = new S3StreamingMessageSource(template());
messageSource.setRemoteDirectory(bucketName);
messageSource.setFilter(new S3PersistentAcceptOnceFileListFilter(new SimpleMetadataStore(),
"streaming"));
return messageSource;
}
@Bean
@Transformer(inputChannel = "s3Channel", outputChannel = "data")
public org.springframework.integration.transformer.Transformer transformer() {
return new StreamTransformer();
}
@Bean
public S3RemoteFileTemplate template() {
return new S3RemoteFileTemplate(new S3SessionFactory(amazonClient.getS3Client()));
}
@Bean
public PollableChannel s3Channel() {
return new QueueChannel();
}
@Bean
IntegrationFlow fileStreamingFlow() {
return IntegrationFlows
.from(s3InboundStreamingMessageSource(),
e -> e.poller(p -> p.fixedDelay(30, TimeUnit.SECONDS)))
.handle(streamFile())
.get();
}
}
Can someone please help me with the code to process the stream ?
amazon-s3 streaming spring-integration spring-integration-aws
add a comment |
I am working on a usecase where I am supposed to poll S3 -> read the stream for the content -> do some processing and upload it to another bucket rather than writing the file in my server.
I know I can achieve it using S3StreamingMessageSource in Spring aws integration but the problem I am facing is that I do not know on how to process the message stream received by polling
public class S3PollerConfigurationUsingStreaming {
@Value("${amazonProperties.bucketName}")
private String bucketName;
@Value("${amazonProperties.newBucket}")
private String newBucket;
@Autowired
private AmazonClientService amazonClient;
@Bean
@InboundChannelAdapter(value = "s3Channel", poller = @Poller(fixedDelay = "100"))
public MessageSource<InputStream> s3InboundStreamingMessageSource() {
S3StreamingMessageSource messageSource = new S3StreamingMessageSource(template());
messageSource.setRemoteDirectory(bucketName);
messageSource.setFilter(new S3PersistentAcceptOnceFileListFilter(new SimpleMetadataStore(),
"streaming"));
return messageSource;
}
@Bean
@Transformer(inputChannel = "s3Channel", outputChannel = "data")
public org.springframework.integration.transformer.Transformer transformer() {
return new StreamTransformer();
}
@Bean
public S3RemoteFileTemplate template() {
return new S3RemoteFileTemplate(new S3SessionFactory(amazonClient.getS3Client()));
}
@Bean
public PollableChannel s3Channel() {
return new QueueChannel();
}
@Bean
IntegrationFlow fileStreamingFlow() {
return IntegrationFlows
.from(s3InboundStreamingMessageSource(),
e -> e.poller(p -> p.fixedDelay(30, TimeUnit.SECONDS)))
.handle(streamFile())
.get();
}
}
Can someone please help me with the code to process the stream ?
amazon-s3 streaming spring-integration spring-integration-aws
I am working on a usecase where I am supposed to poll S3 -> read the stream for the content -> do some processing and upload it to another bucket rather than writing the file in my server.
I know I can achieve it using S3StreamingMessageSource in Spring aws integration but the problem I am facing is that I do not know on how to process the message stream received by polling
public class S3PollerConfigurationUsingStreaming {
@Value("${amazonProperties.bucketName}")
private String bucketName;
@Value("${amazonProperties.newBucket}")
private String newBucket;
@Autowired
private AmazonClientService amazonClient;
@Bean
@InboundChannelAdapter(value = "s3Channel", poller = @Poller(fixedDelay = "100"))
public MessageSource<InputStream> s3InboundStreamingMessageSource() {
S3StreamingMessageSource messageSource = new S3StreamingMessageSource(template());
messageSource.setRemoteDirectory(bucketName);
messageSource.setFilter(new S3PersistentAcceptOnceFileListFilter(new SimpleMetadataStore(),
"streaming"));
return messageSource;
}
@Bean
@Transformer(inputChannel = "s3Channel", outputChannel = "data")
public org.springframework.integration.transformer.Transformer transformer() {
return new StreamTransformer();
}
@Bean
public S3RemoteFileTemplate template() {
return new S3RemoteFileTemplate(new S3SessionFactory(amazonClient.getS3Client()));
}
@Bean
public PollableChannel s3Channel() {
return new QueueChannel();
}
@Bean
IntegrationFlow fileStreamingFlow() {
return IntegrationFlows
.from(s3InboundStreamingMessageSource(),
e -> e.poller(p -> p.fixedDelay(30, TimeUnit.SECONDS)))
.handle(streamFile())
.get();
}
}
Can someone please help me with the code to process the stream ?
amazon-s3 streaming spring-integration spring-integration-aws
amazon-s3 streaming spring-integration spring-integration-aws
asked Jan 4 at 18:34
Aarish RameshAarish Ramesh
2,34873475
2,34873475
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Not sure what is your problem, but I see that you have a mix of concerns. If you use messaging annotations (see @InboundChannelAdapter
in your config), what is the point to use the same s3InboundStreamingMessageSource
in the IntegrationFlow
definition?
Anyway it looks like you have already explored for yourself a StreamTransformer
. This one has a charset
property to convert your InputStream
from the remote S3 resource to the String
. Otherwise it returns a byte
. Everything else is up to you what and how to do with this converted content.
Also I don't see reason to have an s3Channel
as a QueueChannel
, since the start of your flow is pollable anyway by the @InboundChannelAdapter
.
From big height I would say we have more questions to you, than vise versa...
UPDATE
Not clear what is your idea for InputStream
processing, but that is really a fact that after S3StreamingMessageSource
you are going to have exactly InputStream
as a payload in the next handler.
Also not sure what is your streamFile()
, but it must really expect InputStream
as an input from the payload of the request message.
You also can use the mentioned StreamTransformer
over there:
@Bean
IntegrationFlow fileStreamingFlow() {
return IntegrationFlows
.from(s3InboundStreamingMessageSource(),
e -> e.poller(p -> p.fixedDelay(30, TimeUnit.SECONDS)))
.transform(Transformers.fromStream("UTF-8"))
.get();
}
And the next .handle()
will be ready for String
as a payload.
Thanks a lot for pointing out the concerns with the code. My exact question is how do i get the input stream from remote S3 resource in the streamFile() method so that I can process it ? I am new to spring-integration that's why I am not getting the hang of it
– Aarish Ramesh
Jan 4 at 20:53
I know I will have to get the file from payload like below MessageSource<InputStream> msgSource; msgSource.receive().getPayload() . My doubt is from where do I get the msgSource ? I know it might sound naive but I very new to spring-integration
– Aarish Ramesh
Jan 4 at 20:58
1
I don't know how to explain your simple way, but you don't callmsgSource.receive()
yourself. The@InboundChannelAdapter
orntegrationFlows.from()
with the poller does the trick to poll thatMessageSource
and produce messages for the configured channel with theInputStream
as a payload for each remote file.
– Artem Bilan
Jan 4 at 20:59
See an UPDATE in my answer.
– Artem Bilan
Jan 4 at 21:00
1
First of all the code is not readable in the comment. Second, if you need exactlyInputStream
, you don't need that transformer at all, but just expectInputStream
in the arguments of yourprocessFile()
. There is just noFile
in case ofs3InboundStreamingMessageSource
. Please, read more in the reference manual: docs.spring.io/spring-integration/reference/html/…. You need to understand thats3InboundStreamingMessageSource
produces messages exactly with theInputStream
payloads and that is what you need exact in your POJO method for thehandle()
– Artem Bilan
Jan 4 at 21:10
|
show 3 more comments
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54044335%2fstreaming-objects-from-s3-object-using-spring-aws-integration%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Not sure what is your problem, but I see that you have a mix of concerns. If you use messaging annotations (see @InboundChannelAdapter
in your config), what is the point to use the same s3InboundStreamingMessageSource
in the IntegrationFlow
definition?
Anyway it looks like you have already explored for yourself a StreamTransformer
. This one has a charset
property to convert your InputStream
from the remote S3 resource to the String
. Otherwise it returns a byte
. Everything else is up to you what and how to do with this converted content.
Also I don't see reason to have an s3Channel
as a QueueChannel
, since the start of your flow is pollable anyway by the @InboundChannelAdapter
.
From big height I would say we have more questions to you, than vise versa...
UPDATE
Not clear what is your idea for InputStream
processing, but that is really a fact that after S3StreamingMessageSource
you are going to have exactly InputStream
as a payload in the next handler.
Also not sure what is your streamFile()
, but it must really expect InputStream
as an input from the payload of the request message.
You also can use the mentioned StreamTransformer
over there:
@Bean
IntegrationFlow fileStreamingFlow() {
return IntegrationFlows
.from(s3InboundStreamingMessageSource(),
e -> e.poller(p -> p.fixedDelay(30, TimeUnit.SECONDS)))
.transform(Transformers.fromStream("UTF-8"))
.get();
}
And the next .handle()
will be ready for String
as a payload.
Thanks a lot for pointing out the concerns with the code. My exact question is how do i get the input stream from remote S3 resource in the streamFile() method so that I can process it ? I am new to spring-integration that's why I am not getting the hang of it
– Aarish Ramesh
Jan 4 at 20:53
I know I will have to get the file from payload like below MessageSource<InputStream> msgSource; msgSource.receive().getPayload() . My doubt is from where do I get the msgSource ? I know it might sound naive but I very new to spring-integration
– Aarish Ramesh
Jan 4 at 20:58
1
I don't know how to explain your simple way, but you don't callmsgSource.receive()
yourself. The@InboundChannelAdapter
orntegrationFlows.from()
with the poller does the trick to poll thatMessageSource
and produce messages for the configured channel with theInputStream
as a payload for each remote file.
– Artem Bilan
Jan 4 at 20:59
See an UPDATE in my answer.
– Artem Bilan
Jan 4 at 21:00
1
First of all the code is not readable in the comment. Second, if you need exactlyInputStream
, you don't need that transformer at all, but just expectInputStream
in the arguments of yourprocessFile()
. There is just noFile
in case ofs3InboundStreamingMessageSource
. Please, read more in the reference manual: docs.spring.io/spring-integration/reference/html/…. You need to understand thats3InboundStreamingMessageSource
produces messages exactly with theInputStream
payloads and that is what you need exact in your POJO method for thehandle()
– Artem Bilan
Jan 4 at 21:10
|
show 3 more comments
Not sure what is your problem, but I see that you have a mix of concerns. If you use messaging annotations (see @InboundChannelAdapter
in your config), what is the point to use the same s3InboundStreamingMessageSource
in the IntegrationFlow
definition?
Anyway it looks like you have already explored for yourself a StreamTransformer
. This one has a charset
property to convert your InputStream
from the remote S3 resource to the String
. Otherwise it returns a byte
. Everything else is up to you what and how to do with this converted content.
Also I don't see reason to have an s3Channel
as a QueueChannel
, since the start of your flow is pollable anyway by the @InboundChannelAdapter
.
From big height I would say we have more questions to you, than vise versa...
UPDATE
Not clear what is your idea for InputStream
processing, but that is really a fact that after S3StreamingMessageSource
you are going to have exactly InputStream
as a payload in the next handler.
Also not sure what is your streamFile()
, but it must really expect InputStream
as an input from the payload of the request message.
You also can use the mentioned StreamTransformer
over there:
@Bean
IntegrationFlow fileStreamingFlow() {
return IntegrationFlows
.from(s3InboundStreamingMessageSource(),
e -> e.poller(p -> p.fixedDelay(30, TimeUnit.SECONDS)))
.transform(Transformers.fromStream("UTF-8"))
.get();
}
And the next .handle()
will be ready for String
as a payload.
Thanks a lot for pointing out the concerns with the code. My exact question is how do i get the input stream from remote S3 resource in the streamFile() method so that I can process it ? I am new to spring-integration that's why I am not getting the hang of it
– Aarish Ramesh
Jan 4 at 20:53
I know I will have to get the file from payload like below MessageSource<InputStream> msgSource; msgSource.receive().getPayload() . My doubt is from where do I get the msgSource ? I know it might sound naive but I very new to spring-integration
– Aarish Ramesh
Jan 4 at 20:58
1
I don't know how to explain your simple way, but you don't callmsgSource.receive()
yourself. The@InboundChannelAdapter
orntegrationFlows.from()
with the poller does the trick to poll thatMessageSource
and produce messages for the configured channel with theInputStream
as a payload for each remote file.
– Artem Bilan
Jan 4 at 20:59
See an UPDATE in my answer.
– Artem Bilan
Jan 4 at 21:00
1
First of all the code is not readable in the comment. Second, if you need exactlyInputStream
, you don't need that transformer at all, but just expectInputStream
in the arguments of yourprocessFile()
. There is just noFile
in case ofs3InboundStreamingMessageSource
. Please, read more in the reference manual: docs.spring.io/spring-integration/reference/html/…. You need to understand thats3InboundStreamingMessageSource
produces messages exactly with theInputStream
payloads and that is what you need exact in your POJO method for thehandle()
– Artem Bilan
Jan 4 at 21:10
|
show 3 more comments
Not sure what is your problem, but I see that you have a mix of concerns. If you use messaging annotations (see @InboundChannelAdapter
in your config), what is the point to use the same s3InboundStreamingMessageSource
in the IntegrationFlow
definition?
Anyway it looks like you have already explored for yourself a StreamTransformer
. This one has a charset
property to convert your InputStream
from the remote S3 resource to the String
. Otherwise it returns a byte
. Everything else is up to you what and how to do with this converted content.
Also I don't see reason to have an s3Channel
as a QueueChannel
, since the start of your flow is pollable anyway by the @InboundChannelAdapter
.
From big height I would say we have more questions to you, than vise versa...
UPDATE
Not clear what is your idea for InputStream
processing, but that is really a fact that after S3StreamingMessageSource
you are going to have exactly InputStream
as a payload in the next handler.
Also not sure what is your streamFile()
, but it must really expect InputStream
as an input from the payload of the request message.
You also can use the mentioned StreamTransformer
over there:
@Bean
IntegrationFlow fileStreamingFlow() {
return IntegrationFlows
.from(s3InboundStreamingMessageSource(),
e -> e.poller(p -> p.fixedDelay(30, TimeUnit.SECONDS)))
.transform(Transformers.fromStream("UTF-8"))
.get();
}
And the next .handle()
will be ready for String
as a payload.
Not sure what is your problem, but I see that you have a mix of concerns. If you use messaging annotations (see @InboundChannelAdapter
in your config), what is the point to use the same s3InboundStreamingMessageSource
in the IntegrationFlow
definition?
Anyway it looks like you have already explored for yourself a StreamTransformer
. This one has a charset
property to convert your InputStream
from the remote S3 resource to the String
. Otherwise it returns a byte
. Everything else is up to you what and how to do with this converted content.
Also I don't see reason to have an s3Channel
as a QueueChannel
, since the start of your flow is pollable anyway by the @InboundChannelAdapter
.
From big height I would say we have more questions to you, than vise versa...
UPDATE
Not clear what is your idea for InputStream
processing, but that is really a fact that after S3StreamingMessageSource
you are going to have exactly InputStream
as a payload in the next handler.
Also not sure what is your streamFile()
, but it must really expect InputStream
as an input from the payload of the request message.
You also can use the mentioned StreamTransformer
over there:
@Bean
IntegrationFlow fileStreamingFlow() {
return IntegrationFlows
.from(s3InboundStreamingMessageSource(),
e -> e.poller(p -> p.fixedDelay(30, TimeUnit.SECONDS)))
.transform(Transformers.fromStream("UTF-8"))
.get();
}
And the next .handle()
will be ready for String
as a payload.
edited Jan 4 at 20:58
answered Jan 4 at 19:44
Artem BilanArtem Bilan
68.5k84973
68.5k84973
Thanks a lot for pointing out the concerns with the code. My exact question is how do i get the input stream from remote S3 resource in the streamFile() method so that I can process it ? I am new to spring-integration that's why I am not getting the hang of it
– Aarish Ramesh
Jan 4 at 20:53
I know I will have to get the file from payload like below MessageSource<InputStream> msgSource; msgSource.receive().getPayload() . My doubt is from where do I get the msgSource ? I know it might sound naive but I very new to spring-integration
– Aarish Ramesh
Jan 4 at 20:58
1
I don't know how to explain your simple way, but you don't callmsgSource.receive()
yourself. The@InboundChannelAdapter
orntegrationFlows.from()
with the poller does the trick to poll thatMessageSource
and produce messages for the configured channel with theInputStream
as a payload for each remote file.
– Artem Bilan
Jan 4 at 20:59
See an UPDATE in my answer.
– Artem Bilan
Jan 4 at 21:00
1
First of all the code is not readable in the comment. Second, if you need exactlyInputStream
, you don't need that transformer at all, but just expectInputStream
in the arguments of yourprocessFile()
. There is just noFile
in case ofs3InboundStreamingMessageSource
. Please, read more in the reference manual: docs.spring.io/spring-integration/reference/html/…. You need to understand thats3InboundStreamingMessageSource
produces messages exactly with theInputStream
payloads and that is what you need exact in your POJO method for thehandle()
– Artem Bilan
Jan 4 at 21:10
|
show 3 more comments
Thanks a lot for pointing out the concerns with the code. My exact question is how do i get the input stream from remote S3 resource in the streamFile() method so that I can process it ? I am new to spring-integration that's why I am not getting the hang of it
– Aarish Ramesh
Jan 4 at 20:53
I know I will have to get the file from payload like below MessageSource<InputStream> msgSource; msgSource.receive().getPayload() . My doubt is from where do I get the msgSource ? I know it might sound naive but I very new to spring-integration
– Aarish Ramesh
Jan 4 at 20:58
1
I don't know how to explain your simple way, but you don't callmsgSource.receive()
yourself. The@InboundChannelAdapter
orntegrationFlows.from()
with the poller does the trick to poll thatMessageSource
and produce messages for the configured channel with theInputStream
as a payload for each remote file.
– Artem Bilan
Jan 4 at 20:59
See an UPDATE in my answer.
– Artem Bilan
Jan 4 at 21:00
1
First of all the code is not readable in the comment. Second, if you need exactlyInputStream
, you don't need that transformer at all, but just expectInputStream
in the arguments of yourprocessFile()
. There is just noFile
in case ofs3InboundStreamingMessageSource
. Please, read more in the reference manual: docs.spring.io/spring-integration/reference/html/…. You need to understand thats3InboundStreamingMessageSource
produces messages exactly with theInputStream
payloads and that is what you need exact in your POJO method for thehandle()
– Artem Bilan
Jan 4 at 21:10
Thanks a lot for pointing out the concerns with the code. My exact question is how do i get the input stream from remote S3 resource in the streamFile() method so that I can process it ? I am new to spring-integration that's why I am not getting the hang of it
– Aarish Ramesh
Jan 4 at 20:53
Thanks a lot for pointing out the concerns with the code. My exact question is how do i get the input stream from remote S3 resource in the streamFile() method so that I can process it ? I am new to spring-integration that's why I am not getting the hang of it
– Aarish Ramesh
Jan 4 at 20:53
I know I will have to get the file from payload like below MessageSource<InputStream> msgSource; msgSource.receive().getPayload() . My doubt is from where do I get the msgSource ? I know it might sound naive but I very new to spring-integration
– Aarish Ramesh
Jan 4 at 20:58
I know I will have to get the file from payload like below MessageSource<InputStream> msgSource; msgSource.receive().getPayload() . My doubt is from where do I get the msgSource ? I know it might sound naive but I very new to spring-integration
– Aarish Ramesh
Jan 4 at 20:58
1
1
I don't know how to explain your simple way, but you don't call
msgSource.receive()
yourself. The @InboundChannelAdapter
or ntegrationFlows.from()
with the poller does the trick to poll that MessageSource
and produce messages for the configured channel with the InputStream
as a payload for each remote file.– Artem Bilan
Jan 4 at 20:59
I don't know how to explain your simple way, but you don't call
msgSource.receive()
yourself. The @InboundChannelAdapter
or ntegrationFlows.from()
with the poller does the trick to poll that MessageSource
and produce messages for the configured channel with the InputStream
as a payload for each remote file.– Artem Bilan
Jan 4 at 20:59
See an UPDATE in my answer.
– Artem Bilan
Jan 4 at 21:00
See an UPDATE in my answer.
– Artem Bilan
Jan 4 at 21:00
1
1
First of all the code is not readable in the comment. Second, if you need exactly
InputStream
, you don't need that transformer at all, but just expect InputStream
in the arguments of your processFile()
. There is just no File
in case of s3InboundStreamingMessageSource
. Please, read more in the reference manual: docs.spring.io/spring-integration/reference/html/…. You need to understand that s3InboundStreamingMessageSource
produces messages exactly with the InputStream
payloads and that is what you need exact in your POJO method for the handle()
– Artem Bilan
Jan 4 at 21:10
First of all the code is not readable in the comment. Second, if you need exactly
InputStream
, you don't need that transformer at all, but just expect InputStream
in the arguments of your processFile()
. There is just no File
in case of s3InboundStreamingMessageSource
. Please, read more in the reference manual: docs.spring.io/spring-integration/reference/html/…. You need to understand that s3InboundStreamingMessageSource
produces messages exactly with the InputStream
payloads and that is what you need exact in your POJO method for the handle()
– Artem Bilan
Jan 4 at 21:10
|
show 3 more comments
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54044335%2fstreaming-objects-from-s3-object-using-spring-aws-integration%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown