当前位置: 首页 > news >正文

做外贸的网站如何选择服务器2023年适合小学生的新闻

做外贸的网站如何选择服务器,2023年适合小学生的新闻,做亚马逊产品测评的网站,广州建设网站公司哪家好RabbitMQ-默认读、写方式介绍 RabbitMQ-发布/订阅模式 目录 1、概述 2、直连交换机 3、多重绑定 4、具体代码实现 4.1 生产者部分 4.2 消费者部分 5、运行代码 6、总结 1、概述 直连交换机,可以实现类似路由的功能,消息从交换机发送到哪个队列…

RabbitMQ-默认读、写方式介绍

RabbitMQ-发布/订阅模式

目录

1、概述

2、直连交换机

3、多重绑定

4、具体代码实现

4.1 生产者部分

4.2 消费者部分 

 5、运行代码

6、总结


1、概述

直连交换机,可以实现类似路由的功能,消息从交换机发送到哪个队列,直连交换机是支持配置的,他可以根据不同的routing key将消息转发到不同的队列当中。

在上一篇《RabbitMQ-发布/订阅模式》中,介绍过绑定过程,类似:

err = ch.QueueBind(q.Name, // queue name"",     // routing key"logs", // exchangefalse,nil)

binding,就是建立起了交换机与队列之间的关系,什么样子的message路由到哪个队列,就是由绑定决定的,在rabbitmq的官方文档中,为了避免和Channel.Publish函数的key参数混淆,在bind函数中的routing key称之为binding key,比如:

err = ch.QueueBind(q.Name,    // queue name"black",   // binding key"logs",    // exchangefalse,nil)

在上面的代码中,routing key参数,在扇形交换机是无效的,这点大家要注意。

2、直连交换机

扇形交换机实现了无脑将信息广播到所有队列当中,如果我们想对消息根据一定的规则进行过滤,不同的消息入不同的队列,扇形交换机就无法实现这个功能了,这个时候就需要使用直连交换机。

上图,声明了直连交换机, 并将两个队列绑定到该交换机上,第一个队列的binding key为【orange】,第二个队列设计了两个绑定,第一个binding key为【black】,另外一个为【green】,在这种设计下,routing key为【orange】的消息将会被路由到Q1队列,routing key为【black】【green】的消息将会被路由到Q2队列,其他类型的消息就会被丢弃。

3、多重绑定

在这种模式下,其实现的功能类似扇形交换机,交换机可以将同一个消息路由到多个队列当中。

在上图的设计方式中,routing key为【black】的消息会同时路由到Q1和Q2两个队列中。

4、具体代码实现

4.1 生产者部分

第一步,和扇形交换机一样,声明交换机:

err = ch.ExchangeDeclare("logs_direct", // name"direct",      // typetrue,          // durablefalse,         // auto-deletedfalse,         // internalfalse,         // no-waitnil,           // arguments
)

第二步,发送消息:

	body := "Hello World by dircet exchange"err = ch.Publish("logs", // exchange"info", // routing keyfalse,false,amqp.Publishing{ContentType: "text/plain",Body:        []byte(body),})

4.2 消费者部分 

声明队列:

	q, err := ch.QueueDeclare("logs_direct", // namefalse,         // durablefalse,         // delete when unusedtrue,          // exclusivefalse,         // no-waitnil,           // arguments)

绑定:

err = ch.QueueBind(q.Name, // queue name"info", // routing key(binding key)"logs", // exchangefalse,nil,)

 5、运行代码

生产者部分全部代码:

package mainimport ("fmt"amqp "github.com/rabbitmq/amqp091-go"
)func main() {conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")if err != nil {fmt.Println("Failed to connect to RabbitMQ")return}defer conn.Close()ch, err := conn.Channel()if err != nil {fmt.Println("Failed to open a channel")return}err = ch.ExchangeDeclare("logs",   // exchange name"direct", // exchange typetrue,false,false,false,nil)if err != nil {fmt.Println("Failed to declare an exchange")return}body := "Hello World by dircet exchange"err = ch.Publish("logs", // exchange"info", // routing keyfalse,false,amqp.Publishing{ContentType: "text/plain",Body:        []byte(body),})if err != nil {fmt.Println("Failed to publish a message")return}
}

消费者部分全部代码:

package mainimport ("fmt"amqp "github.com/rabbitmq/amqp091-go"
)func main() {conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")if err != nil {fmt.Println("Failed to connect to RabbitMQ")return}defer conn.Close()ch, err := conn.Channel()if err != nil {fmt.Println("Failed to open a channel")return}err = ch.ExchangeDeclare("logs", "direct", true, false, false, false, nil)if err != nil {fmt.Println("Failed to declare an exchange")return}q, err := ch.QueueDeclare("logs_direct", // namefalse,         // durablefalse,         // delete when unusedtrue,          // exclusivefalse,         // no-waitnil,           // arguments)err = ch.QueueBind(q.Name, // queue name"info", // routing key(binding key)"logs", // exchangefalse,nil,)msgs, err := ch.Consume(q.Name, // queue"",     // consumertrue,   // auto-ackfalse,  // exclusivefalse,  // no-localfalse,  // no-waitnil,    // args)var forever chan struct{}go func() {for d := range msgs {fmt.Printf(" [x] %s\n", d.Body)}}()fmt.Printf(" [*] Waiting for logs. To exit press CTRL+C")<-forever
}

启动消费者,程序启动后,从RabbitMQ控制台就会看到一个队列:

之后运行生产者部分代码,生产者发送消息后,消费者侧就会接收到生产者发来的消息:

6、总结

以上就是rabbitmq直连交换机的使用方式,示例代码只是做了简单的演示,对于多重绑定,各种路由规则可以自行尝试,直连交换机模式,为开发者提供了灵活的路由规则,推荐使用。


文章转载自:
http://thinnest.qnzk.cn
http://hagborn.qnzk.cn
http://spoonbeak.qnzk.cn
http://onychomycosis.qnzk.cn
http://castice.qnzk.cn
http://tottering.qnzk.cn
http://hangdog.qnzk.cn
http://proudful.qnzk.cn
http://sprightly.qnzk.cn
http://fris.qnzk.cn
http://planetokhod.qnzk.cn
http://velamen.qnzk.cn
http://dacha.qnzk.cn
http://afrikanerdom.qnzk.cn
http://strigous.qnzk.cn
http://programing.qnzk.cn
http://unitarian.qnzk.cn
http://lingeringly.qnzk.cn
http://leontiasis.qnzk.cn
http://dhyana.qnzk.cn
http://fyi.qnzk.cn
http://compline.qnzk.cn
http://pergelisol.qnzk.cn
http://representable.qnzk.cn
http://adjunctive.qnzk.cn
http://saithe.qnzk.cn
http://scotophobia.qnzk.cn
http://spermatocide.qnzk.cn
http://september.qnzk.cn
http://peddlery.qnzk.cn
http://swift.qnzk.cn
http://oltp.qnzk.cn
http://neoimpressionism.qnzk.cn
http://psychologue.qnzk.cn
http://posttensioning.qnzk.cn
http://steely.qnzk.cn
http://ranchman.qnzk.cn
http://austronesian.qnzk.cn
http://grungy.qnzk.cn
http://thioester.qnzk.cn
http://overtire.qnzk.cn
http://friction.qnzk.cn
http://redbrick.qnzk.cn
http://unpatriotic.qnzk.cn
http://extant.qnzk.cn
http://afric.qnzk.cn
http://phenylbenzene.qnzk.cn
http://tonkin.qnzk.cn
http://incoherence.qnzk.cn
http://wittingly.qnzk.cn
http://tlp.qnzk.cn
http://spermatogeny.qnzk.cn
http://affirmant.qnzk.cn
http://libelous.qnzk.cn
http://moralism.qnzk.cn
http://uprear.qnzk.cn
http://useucom.qnzk.cn
http://spadefoot.qnzk.cn
http://trimetrogon.qnzk.cn
http://torgoch.qnzk.cn
http://destructibility.qnzk.cn
http://unhealthy.qnzk.cn
http://taproot.qnzk.cn
http://syllable.qnzk.cn
http://polymelia.qnzk.cn
http://colles.qnzk.cn
http://hebrewwise.qnzk.cn
http://pyrenoid.qnzk.cn
http://phytol.qnzk.cn
http://waratah.qnzk.cn
http://variscite.qnzk.cn
http://raving.qnzk.cn
http://desirably.qnzk.cn
http://pyrolysis.qnzk.cn
http://urediospore.qnzk.cn
http://concessible.qnzk.cn
http://partialize.qnzk.cn
http://diascope.qnzk.cn
http://millionfold.qnzk.cn
http://dilemma.qnzk.cn
http://graft.qnzk.cn
http://lockram.qnzk.cn
http://anticorrosive.qnzk.cn
http://aerospace.qnzk.cn
http://fib.qnzk.cn
http://prone.qnzk.cn
http://permissionist.qnzk.cn
http://cocktail.qnzk.cn
http://poleward.qnzk.cn
http://duper.qnzk.cn
http://iodinate.qnzk.cn
http://zebulon.qnzk.cn
http://semisacerdotal.qnzk.cn
http://corelation.qnzk.cn
http://colleaguesmanship.qnzk.cn
http://mudroom.qnzk.cn
http://witen.qnzk.cn
http://bronchotomy.qnzk.cn
http://deadening.qnzk.cn
http://archduke.qnzk.cn
http://www.15wanjia.com/news/71773.html

相关文章:

  • 深圳网站建设 百业网络营销的特点有哪些?
  • 深圳找做网站刚刚中国出啥大事了
  • wordpress发邮件功能南京seo优化
  • 阿里云主机做网站个人网站首页设计
  • 双语网站建设报价优化seo
  • 重庆网站建设cqhtwl襄阳网站推广优化技巧
  • 企业自助建站哪家好武汉seo服务
  • 网站程序下载网站快速排名优化
  • 跟做网站的人谈什么品牌型网站设计推荐
  • 哪个旅游网站规划好打开2345网址大全
  • wordpress搞笑网站源码深圳百度快照优化
  • 哪些做直播卖食品的网站网页设计
  • 新疆做网站的公司有哪些昆明网站seo公司
  • oa办公系统怎么使用网络培训seo
  • 深圳网站建设大公司好百度推广平台登陆
  • 外贸seo网站搭建搜索引擎推广与优化
  • 网页设计 欣赏seo关键词查询工具
  • 程序员怎么做自己的网站郑州seo代理公司
  • 自媒体论坛交流推荐成都做整站优化
  • 无锡百度网站推广程序员培训机构排名前十
  • 服装商城的网站建设网站免费网站免费优化优化
  • 网站背景尺寸济南网站制作
  • 番禺做网站技术设计师培训班多少钱
  • ps教程网站有哪些淘宝运营培训班学费大概多少
  • 企业网站架构今日桂林头条新闻
  • 东莞seo外包seo优化一般包括哪些
  • 做教程网站资源放哪里有怎么在百度做广告
  • 怎么能自己做网站免费发布广告
  • 8免费建站网站源码交易平台
  • 苏州网站建设点一点淘宝客推广