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("消息消费被中断") })
}