marzelwidmer
02/07/2021, 8:34 AMFunction,Supplier,Consumer
do I need maybe also the spring-cloud-function-kotlin
for this ? I try to migrate my sample application to the new API
@SpringBootApplication
class ProducerApplication
fun main(args: Array<String>) {
runApplication<ProducerApplication>(*args)
}
@RestController
@RequestMapping(value = ["/producer"])
class ProducerController(private val producerMessagingService: ProducerMessagingService) {
private val log = LoggerFactory.getLogger(javaClass)
@PostMapping(value = ["{message}"])
fun message(@PathVariable message: String) {
<http://log.info|log.info>("------------> Receive message {} <-------------", message)
producerMessagingService.sendMessage(message)
}
}
@Service
class ProducerMessagingService(private val producerSource: ProducerSource) {
fun sendMessage(message: String) = producerSource.producerChannel().send(MessageBuilder.withPayload(message).build())
}
interface ProducerSource {
@Output(value = "producerOutput")
fun producerChannel(): MessageChannel
}
@Configuration
@EnableBinding(value = [ProducerSource::class])
class MessagingConfig
sdeleuze
02/09/2021, 5:10 PMsdeleuze
02/09/2021, 5:17 PMspring-cloud-function
tag and our team will answer you.sdeleuze
02/09/2021, 5:17 PMmarzelwidmer
02/09/2021, 5:20 PMmarzelwidmer
02/09/2021, 5:22 PM@Bean
fun kotlinConsumer(): Consumer<String> = Consumer {
val message = it.toUpperCase()
println(message)
streamBridge.send("producerOutput", MessageBuilder.withPayload(message).build())
}
I was confused about Consumer
etc. my brain was on message side.. an not on Java Function Side 🙂