Skip to content

Instantly share code, notes, and snippets.

@Bean
fun jsonDirectBinding(): Binding {
return BindingBuilder
.bind(jsonQueue)
.to(directExchange())
.with("TO-JSON-QUEUE")
.noargs()
}
@iundarigun
iundarigun / Config.kt
Created January 7, 2020 21:16
MessageConverter
@Bean
fun messageConverter(objectMapper: ObjectMapper): MessageConverter {
return Jackson2JsonMessageConverter(objectMapper)
}
@iundarigun
iundarigun / Person.kt
Created January 7, 2020 21:13
Person
data class Person(
val name: String,
val collageCompletedYear: Int?,
val bornAt: LocalDate,
val active: Boolean
)
@iundarigun
iundarigun / BasicListener.kt
Created January 7, 2020 20:31
BasicListener
@Service
class BasicListener : MessageListener {
private val log = LoggerFactory.getLogger(javaClass)
override fun onMessage(message: Message?) {
log.info("receive message from ${message?.messageProperties?.consumerQueue}")
val bodyAsString = message?.body?.let { String(it) } ?: ""
log.info("body $bodyAsString")
}
@iundarigun
iundarigun / ConsumerConfig.kt
Created January 7, 2020 20:26
ConsumerConfig
@Bean
fun queueBasic(): Queue {
return QueueBuilder
.durable("FIRST-QUEUE-BASIC")
.build()
}
@Bean
fun listenerContainer(): MessageListenerContainer {
val container = SimpleMessageListenerContainer()
@PostMapping("{exchange}/{routingKey}")
fun postOnExchange(
@PathVariable exchange: String,
@PathVariable routingKey: String,
@RequestBody message: String
): HttpEntity<Any?> {
log.info("sending message $message")
rabbitTemplate.convertAndSend(exchange, routingKey, message)
return ResponseEntity.ok().build()
}
@iundarigun
iundarigun / DirectConfig.kt
Created January 7, 2020 11:27
ExchangeConfig
@Configuration
class DirectConfig(
private val firstQueue: Queue,
private val secondQueue: Queue
) {
@Bean
fun directExchange(): Exchange {
return ExchangeBuilder
.directExchange("DIRECT-EXCHANGE-BASIC")
.durable(true)
@iundarigun
iundarigun / QueueConfig.kt
Created January 7, 2020 11:23
QueueConfig
@Configuration
class QueueConfig {
@Bean
fun firstQueue(): Queue {
return QueueBuilder
.durable("FIRST-QUEUE-BASIC")
.build()
}
@Bean
@iundarigun
iundarigun / FeignConfiguration.kt
Last active December 11, 2019 17:07
FeignConfiguration
@Configuration
class FeignConfiguration(
private val messageConverters: ObjectFactory<HttpMessageConverters>,
@Value("\${feign-builder.client.readTimeout:10000}")
private val readTimeout: Int,
@Value("\${feign-builder.client.connectionTimeout:10000}")
private val connectionTimeout: Int
) {
fun feignDecoder(): Decoder {
@iundarigun
iundarigun / ClientService.kt
Created December 11, 2019 16:32
ClientService
@Service
class ClientService(private val feignBuilder: Feign.Builder) {
private val log = LoggerFactory.getLogger(javaClass)
@Cacheable("someHttpClient")
fun getClient(url: String): SomeHttpClient {
log.info("M=QueueBalancer, without cache")
return feignBuilder.target(SomeHttpClient::class.java, url)
}