kotlin使用rabbitmq(二)

本文介绍如何使用RabbitMQ进行消息发送和接收,包括队列创建、JSON消息转换、消息发送Action及消息接收监听的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发送消息对象 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)]

转载于:https://my.oschina.net/weidedong/blog/3001230

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值