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

网站升级每天自动更新海南省海口市网站建设

网站升级每天自动更新,海南省海口市网站建设,海曙seo关键词优化方案,网站策划运营方案topic交换器#xff08;主题交换器#xff09; 发送到topic交换器的消息不能具有随意的routing_key——它必须是单词列表#xff0c;以点分隔。这些词可以是任何东西#xff0c;但通常它们指定与消息相关的某些功能。一些有效的routing_key示例#xff1a;“stock.usd.ny…topic交换器主题交换器 发送到topic交换器的消息不能具有随意的routing_key——它必须是单词列表以点分隔。这些词可以是任何东西但通常它们指定与消息相关的某些功能。一些有效的routing_key示例“stock.usd.nyse”“nyse.vmw”“quick.orange.rabbit”。routing_key中可以包含任意多个单词最多255个字节。 绑定键也必须采用相同的形式。topic交换器背后的逻辑类似于direct交换器——用特定路由键发送的消息将传递到所有匹配绑定键绑定的队列。但是绑定键有两个重要的特殊情况 - *星号可以代替一个单词。 - 井号可以替代零个或多个单词。 通过下面这个示例可以很容易看明白这一点 在这个例子中我们将发送一些都是描述动物的信息。将使用包含三个词两个点的路由密钥发送消息。路由键中的第一个单词将描述速度第二个是颜色第三个是种类“speed.colour.species”。 我们创建了三个绑定关系Q1与绑定键“ * .orange. * ”绑定Q2与“* .* .rabbit”和“lazy.”绑定。 这些绑定可以总结为 Q1对所有橙色动物都感兴趣Q2想接收有关兔子rabbit的一切消息以及有关懒惰lazy动物的一切消息。 路由键设置为“quick.orange.rabbit”的消息将传递到两个队列。消息“lazy.orange.elephant”也将发送给他们两个。另一方面“quick.orange.fox”将仅进入第一个队列而“lazy.brown.fox”将仅进入第二个队列。即使“lazy.pink.rabbit”与两个绑定匹配匹配Q2的两个绑定也只会传递到第二个队列一次。 “quick.brown.fox”与任何绑定都不匹配因此将被丢弃。 如果我们打破约定并发送一个或四个单词的消息例如“orange”或“quick.orange.male.rabbit”会发生什么好吧这些消息将不匹配任何绑定并且将会丢失。 另外“lazy.orange.male.rabbit”即使有四个单词也将匹配最后一个绑定并将其传送到第二个队列。 topic交换器 topic交换器功能强大可以像其他交换器一样运行。 当队列用“#”井号绑定键绑定时它将接收所有消息而与路由键无关就像在fanout交换器中一样。 当在绑定中不使用特殊字符“*”星号和“#”井号时topic交换器的行为就像direct交换器一样。 完整示例 我们将在日志记录系统中使用topic交换器。我们将从一个可行的假设开始即日志的路由键将包含两个词“facility.severity”。 emit_log_topic.go的代码 package mainimport (logosstringsgithub.com/streadway/amqp )func failOnError(err error, msg string) {if err ! nil {log.Fatalf(%s: %s, msg, err)} }func main() {conn, err : amqp.Dial(amqp://guest:guestlocalhost:5672/)failOnError(err, Failed to connect to RabbitMQ)defer conn.Close()ch, err : conn.Channel()failOnError(err, Failed to open a channel)defer ch.Close()err ch.ExchangeDeclare(logs_topic, // nametopic, // typetrue, // durablefalse, // auto-deletedfalse, // internalfalse, // no-waitnil, // arguments)failOnError(err, Failed to declare an exchange)body : bodyFrom(os.Args)err ch.Publish(logs_topic, // exchangeseverityFrom(os.Args), // routing keyfalse, // mandatoryfalse, // immediateamqp.Publishing{ContentType: text/plain,Body: []byte(body),})failOnError(err, Failed to publish a message)log.Printf( [x] Sent %s, body) }func bodyFrom(args []string) string {var s stringif (len(args) 3) || os.Args[2] {s hello} else {s strings.Join(args[2:], )}return s }func severityFrom(args []string) string {var s stringif (len(args) 2) || os.Args[1] {s anonymous.info} else {s os.Args[1]}return s }receive_logs_topic.go 的代码 package mainimport (logosgithub.com/streadway/amqp )func failOnError(err error, msg string) {if err ! nil {log.Fatalf(%s: %s, msg, err)} }func main() {conn, err : amqp.Dial(amqp://guest:guestlocalhost:5672/)failOnError(err, Failed to connect to RabbitMQ)defer conn.Close()ch, err : conn.Channel()failOnError(err, Failed to open a channel)defer ch.Close()err ch.ExchangeDeclare(logs_topic, // nametopic, // typetrue, // durablefalse, // auto-deletedfalse, // internalfalse, // no-waitnil, // arguments)failOnError(err, Failed to declare an exchange)q, err : ch.QueueDeclare(, // namefalse, // durablefalse, // delete when unusedtrue, // exclusivefalse, // no-waitnil, // arguments)failOnError(err, Failed to declare a queue)if len(os.Args) 2 {log.Printf(Usage: %s [binding_key]..., os.Args[0])os.Exit(0)}// 绑定topicfor _, s : range os.Args[1:] {log.Printf(Binding queue %s to exchange %s with routing key %s,q.Name, logs_topic, s)err ch.QueueBind(q.Name, // queue names, // routing keylogs_topic, // exchangefalse,nil)failOnError(err, Failed to bind a queue)}msgs, err : ch.Consume(q.Name, // queue, // consumertrue, // auto ackfalse, // exclusivefalse, // no localfalse, // no waitnil, // args)failOnError(err, Failed to register a consumer)forever : make(chan bool)go func() {for d : range msgs {log.Printf( [x] %s, d.Body)}}()log.Printf( [*] Waiting for logs. To exit press CTRLC)-forever }想要接收所有的日志 go run receive_logs_topic.go #要从“kern”接收所有日志 go run receive_logs_topic.go kern.*或者如果你只想接收“critical”日志 go run receive_logs_topic.go *.critical你可以创建多个绑定 go run receive_logs_topic.go kern.* *.critical并发出带有路由键“kern.critical”的日志 go run emit_log_topic.go kern.critical A critical kernel error你可以自己尝试玩一下这个程序。请注意代码没有对路由键或绑定键进行任何假设你可能希望使用两个以上的路由键参数。 源自https://www.rabbitmq.com/getstarted.html
http://www.w-s-a.com/news/336622/

相关文章:

  • 一家只做特卖的网站wordpress修改模板教程
  • 与恶魔做交易的网站成都到西安高铁票价
  • 太原网站制作哪家便宜长春昆仑建设股份有限公司网站
  • 优质做网站价格设计手机商城网站建设
  • 高校网站建设制度无锡网站建设排名
  • 做网站的软件wd的叫啥无锡公司网站建设服务
  • 网站建设一般需要多久网站服务器基本要素有哪些
  • 大连开发区网站开发公司免费网站建设哪个好?
  • 关于建设门户网站的通知海曙区建设局网站
  • 韩国建设部网站温州企业网站制作
  • 苏州网站建设优化贵州网站建设lonwone
  • 网站建设与推广方案模板网站建设教程搭建浊贝湖南岚鸿给力
  • 网站建设内部下单流程图昆明网站制作公司
  • 手机网站焦点图在线外链推广
  • 做静态页面的网站中国建设银行河南省分行网站
  • 镇平县两学一做专题网站佛山家居网站全网营销
  • 做网站的需求wordpress图片怎么居中
  • 网站开发的技术流程图抖音seo排名优化软件
  • dedecms做电商网站得物app官方下载安装
  • python做网站教程微网站 举例
  • 百度喜欢什么样的网站如何引用网站上的资料做文献
  • 如何给网站添加网站地图军刀seo
  • 模板网站开发推广陈村大良网站建设
  • 建设工程网站单位名单广州微信网站建设效果
  • 网站开发选择框代码字节小程序开发教程
  • 杭州网站设计精选柚v米科技免费的简历制作
  • 网站域名 没有续费做外贸怎样上外国网站
  • 购物网站功能模块设计电子工程网站有哪些
  • 网站营销公司哪家好wordpress主题 破解主题
  • 做网站就是做服务中国效能建设网站