HelloWorld(简单模式)

开发配置:kotlin 1.6.20 + gradle 7.4.1

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.6.20'
}

group 'cn.soldat'
version '1.0'

repositories {
    maven {
        url 'https://maven.aliyun.com/repository/public/'
    }
    mavenLocal()
    mavenCentral()
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib"
    // amqp-client
    implementation("com.rabbitmq:amqp-client:5.14.2")
    // commons-io
    implementation("commons-io:commons-io:2.11.0")
}

生产者:发消息给队列

import com.rabbitmq.client.ConnectionFactory

object Producer {
    // 队列名称
    const val QUEUE_NAME = "hello"
}

fun main() {
    // 创建一个连接工厂
    val factory = ConnectionFactory()
    // 工厂IP 连接RabbitMQ的队列
    factory.host = "166.166.166.92"

    factory.username = "admin"
    factory.password = "123456"

    // 创建连接
    val connection = factory.newConnection()
    // 获取信道
    val channel = connection.createChannel()
    /**
     * 生成一个队列
     * 1. name 队列名称
     * 2. 是否持久化 -- 存储的磁盘 (默认false)
     * 3. 该队列是否只供一个消费者消费,是否进行消息共享
     * 4. 是否自动删除,最后一个消费者断开连接后,该队列是否自动删除
     * 5. 其他参数
     */
    channel.queueDeclare(Producer.QUEUE_NAME, false, false, false, null)

    // 发送消息
    val message = "Hello World!"
    /**
     * 1. 交换机: 发送到哪个交换机
     * 2. 路由Key:队列名
     * 3. 参数:其他参数
     * 4. 发送的消息体
     */
    channel.basicPublish("",Producer.QUEUE_NAME, null, message.toByteArray())
    println("消息发送完毕")
}

消费者:接收消息

import com.rabbitmq.client.CancelCallback
import com.rabbitmq.client.ConnectionFactory
import com.rabbitmq.client.DeliverCallback

object Consumer {
    // 队列名称
    const val QUEUE_NAME = "hello"
}

fun main() {
    // 创建连接工厂
    val factory = ConnectionFactory()
    factory.host = "166.166.166.92"
    factory.username = "admin"
    factory.password = "Soldat0504"

    // 创建连接
    val connection = factory.newConnection()

    // 创建信道
    val channel = connection.createChannel()

    /**
     * 接收消息
     * 1. 消费哪个队列
     * 2. 消费成功之后是否要自动应答
     * 3. 消费者未成功消费的回调
     * 4. 消费者取消消费的回调
     */
    channel.basicConsume(Consumer.QUEUE_NAME, true,
        DeliverCallback { _, message -> message?.let { println(String(it.body)) } },
        CancelCallback { println("消息消费被中断") })
}