首页 > 其他分享 >RabbitMQ六大核心(六大模式)-- 4. Routing(路由模式)直接交换机

RabbitMQ六大核心(六大模式)-- 4. Routing(路由模式)直接交换机

时间:2023-11-10 18:08:04浏览次数:38  
标签:六大 NAME val EXCHANGE -- 模式 import message channel

交换机绑定的RoutingKey不同,只给某个队列发消息

多重绑定:绑定同一个队列的RoutingKey不同

// 生产者
import cn.soldat.utils.RabbitMqUtils
import com.rabbitmq.client.BuiltinExchangeType
import java.util.*

object DirectLogs {
    const val EXCHANGE_NAME = "direct_logs"
}

fun main() {
    val channel = RabbitMqUtils.getChannel()
    channel.exchangeDeclare(DirectLogs.EXCHANGE_NAME, BuiltinExchangeType.DIRECT)


    val scanner = Scanner(System.`in`)
    while (scanner.hasNext()){
        val message = scanner.next()
        channel.basicPublish(DirectLogs.EXCHANGE_NAME, "error", null, message.toByteArray())
        println("生产者发出消息: $message")
    }
}
//消费者1
import cn.soldat.utils.RabbitMqUtils
import com.rabbitmq.client.BuiltinExchangeType
import com.rabbitmq.client.CancelCallback
import com.rabbitmq.client.DeliverCallback

object ReceiveLogsDirect01 {
    const val EXCHANGE_NAME = "direct_logs"
}

fun main() {
    val channel = RabbitMqUtils.getChannel()
    // 声明交换机 Direct
    channel.exchangeDeclare(ReceiveLogsDirect01.EXCHANGE_NAME, BuiltinExchangeType.DIRECT)
    // 声明队列
    channel.queueDeclare("console", false, false, false, null)
    //绑定交换机与队列
    channel.queueBind("console", ReceiveLogsDirect01.EXCHANGE_NAME, "info")
    channel.queueBind("console", ReceiveLogsDirect01.EXCHANGE_NAME, "warning")

    // 接收消息
    val deliverCallback = DeliverCallback{ _,message ->
        println("ReceiveLogsDirect01 控制台打印接收到的消息: ${String(message.body)}")
    }
    // 消费者取消消息时
    channel.basicConsume("console", true, deliverCallback, CancelCallback {})
}
// 消费者2
import cn.soldat.utils.RabbitMqUtils
import com.rabbitmq.client.BuiltinExchangeType
import com.rabbitmq.client.CancelCallback
import com.rabbitmq.client.DeliverCallback

object ReceiveLogsDirect02 {
    const val EXCHANGE_NAME = "direct_logs"
}

fun main() {
    val channel = RabbitMqUtils.getChannel()
    // 声明交换机 Direct
    channel.exchangeDeclare(ReceiveLogsDirect02.EXCHANGE_NAME, BuiltinExchangeType.DIRECT)
    // 声明队列
    channel.queueDeclare("disk", false, false, false, null)
    //绑定交换机与队列
    channel.queueBind("disk", ReceiveLogsDirect02.EXCHANGE_NAME, "error")

    // 接收消息
    val deliverCallback = DeliverCallback{ _,message ->
        println("ReceiveLogsDirect02 控制台打印接收到的消息: ${String(message.body)}")
    }
    // 消费者取消消息时
    channel.basicConsume("disk", true, deliverCallback, CancelCallback {})
}

标签:六大,NAME,val,EXCHANGE,--,模式,import,message,channel
From: https://blog.51cto.com/soldatyxd/8305294

相关文章

  • 智慧工地源码:建筑管理的新型方式
    智慧工地是利用物联网、云计算、大数据等技术,实现对建筑工地实时监测、管理和控制的一种新型建筑管理方式,其中,数据分析功能起着至关重要的作用。1、数据采集智慧工地中的数据采集主要通过传感器、监控摄像头等设备进行。这些设备可以实时采集到工地的环境数据、施工人员和设备信息......
  • 无涯教程-批处理 - Listing Folder Contents函数
    列出文件夹内容可以使用dir命令完成,此命令使您可以查看当前目录中的可用文件和目录,dir命令还显示上次修改的日期和时间,以及文件大小DIR[drive:][path][filename][/A[[:]attributes]][/B][/C][/D][/L][/N][/O[[:]sortorder]][/P][/Q][/R][/S][/T[[:]timefield]][......
  • Wazuh开源入侵检测和威胁预防的部署和应用案例
    基本介绍Wazuh是一个免费的开源平台,用于威胁预防、检测和响应。它能够跨本地、虚拟化、容器化和基于云的环境保护工作负载。Wazuh解决方案由部署到受监控系统的端点安全代理和管理服务器组成,该服务器收集和分析代理收集的数据。此外,Wazuh已与ElasticStack完全集成,提供搜索引......
  • 无线通信的核心技术有哪些?
    无线通信的核心技术有哪些?无线通信的核心技术包括调制与解调技术、编码与解码技术、非正交多址接入技术等。1、调制与解调技术:调制是将数字信号转换成适合在无线信道上传输的模拟信号的过程,解调则是将接收到的模拟信号转换回数字信号的过程。调制与解调技术包括各种调制方案,如调幅(......
  • 指针首汽聚合平台开启招募
    目前,我们将首汽约车代驾项目向全社会公开招募,如果您正在运营一家代驾企业、如果您有资源正在找投资项目、如果您愿意从事代驾行业,我们将与您分享首汽约车品牌价值及流量红利所带来的丰厚收益。品牌优势通过中心化品牌赋能,联合首汽约车品牌,全国范围线上线下齐推广,标准化......
  • 计算机基础学习
    计算机的组成计算机的核心部件CPU和内存和一些外部设备其中ALU---做计算、registers---做存储、PC---存指令计算机语言计算机识别的语言0、1,我们用一个字段交流的时候只能表示两种信息,两个字段表示四中信息、三种九......最后我们发现并得出规律信息=2的字段的字段数量次方这就是我......
  • pcb电路板常见的用途有哪些?
    PCB电路板是一种重要的电子部件,广泛应用于各种领域。以下是PCB电路板的一些常见用途:通信设备:PCB电路板在通信设备中扮演着至关重要的角色。它们被用于电话、手机、无线电、通信系统和其他数据传输设备中。PCB电路板可以提供可靠的信号传输路径,并确保数据的准确传输。医疗设备:医疗设......
  • 以 Kubernetes 原生方式实现多集群告警
    作者:向军涛、雷万钧来源:2023上海KubeCon分享可观测性来源在Kubernetes集群上,各个维度的可观测性数据,可以让我们及时了解集群上应用的状态,以及集群本身的状态。Metrics指标:监控对象状态的量化信息,通常会以时序数据的形式采集和存储。Events:这里特指的是Kubernetes集群上所......
  • 亚数受邀参加“长三角G60科创走廊量子密码应用创新联盟(中心)”启动仪式
    11月8日,在第六届中国国际进口博览会2023长三角G60科创走廊高质量发展要素对接大会上,亚数信息科技(上海)有限公司CEO翟新元作为密码企业代表之一受邀参加“长三角G60科创走廊量子密码应用创新联盟(中心)”启动仪式。会上,“一廊九城”携手亚数等代表企业共同成立启动了“长三角G60科创走......
  • 一文带你玩转SQL中的DML(数据操作)语言:从概念到常见操作大解析!数据操作不再难!
    前面我们介绍了SQL语句中数据定义语言(DDL)的概念以及它的常用语句,那么DML又是什么呢?二者有什么区别呢?本篇文章将为你讲述。一、DML简介DML是指数据操作语言,英文全称是DataManipulationLanguage,用来对数据库中表的数据记录进行更新。它创建的模式(表)使用数据操作语言来填充。DDL......