kotlin使用rabbitmq(二)

原创
2019/01/14 15:22
阅读数 150

发送消息对象 1.创建一个队列,来承载一个消息对象

  @Bean
    fun  helloQueue1(): Queue {
        return Queue("hello1")
    }

2.创建一个转换器,将对象转换成json

   @Bean
    fun jackson2JsonMessageConverter(): MessageConverter {
        return Jackson2JsonMessageConverter(mapper)
    }

mapper的代码如下

fun initObjectMapper(): ObjectMapper {
    val mapper = jacksonObjectMapper()
    mapper.registerModules(Jdk8Module(), JavaTimeModule(), KotlinModule())
	//禁用时间戳,序列化为标准格式
	//如2019-01-14T15:13:46.411
    mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
    return mapper
}

val mapper = initObjectMapper()



fun Any.toJson(): String {

    return mapper.writeValueAsString(this)
}

inline fun <reified T : Any> String.fromJson(): T {
    return mapper.readValue(this)
}

3.创建一个action,用来发送消息

    @GetMapping("/sendEntity")
    fun sendEntity(): User {
        val u = User(1, "ss", birthday = LocalDateTime.now())
        rabbitTemplate.convertAndSend("hello1",u)
        return u
    }
	
	data class User(var id:Int = 0,var name:String="",var birthday:LocalDateTime? = null)

请求一下/sendEntity,查看hello1队列中的消息

4.创建一个订阅

@Component
@RabbitListener(queues = ["hello1"],concurrency = "1")
class Receiver2 {

    @RabbitHandler
    fun process(user: User) {
        println(Thread.currentThread().id)
        println("Receiver2 : [$user]")
    }
}

接收到消息

49
Receiver2 : [User(id=1, name=ss, birthday=2019-01-14T15:24:53.335)]
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部