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

做网站管理怎么赚钱网站关键词优化排名软件系统

做网站管理怎么赚钱,网站关键词优化排名软件系统,网站管理员怎样管理员权限设置,wordpress自定义url文章目录 交换机fanoutDirecttopicHeadersRPC 交换机 **交换机 **是消息队列中的一个组件,其作用类似于网络路由器。它负责将我们发送的消息转发到相应的目标,就像快递站将快递发送到对应的站点,或者网络路由器将网络请求转发到相应的服务器…

文章目录

    • 交换机
      • fanout
      • Direct
      • topic
      • Headers
      • RPC

交换机

**交换机 **是消息队列中的一个组件,其作用类似于网络路由器。它负责将我们发送的消息转发到相应的目标,就像快递站将快递发送到对应的站点,或者网络路由器将网络请求转发到相应的服务器或客户端一样。交换机的主要功能是提供转发消息的能力,根据消息的路由规则将消息投递到合适的队列或绑定的消费者。
我们可以理解为,如果说一个快递站已经承受不了那么多的快递了,就建多个快递站。

fanout

扇出,广播
特点:消息会被转发到所有绑定到该交换机的队列
场景:很适用于发布订阅的场景,比如写日志,可以多个系统间共享

示例场景:
image.png
生产者代码:

package com.yupi.springbootinit.mq;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;import java.util.Scanner;public class FanoutProducer {// 交换机名字private static final String EXCHANGE_NAME = "fanout-exchange";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {// 创建交换机channel.exchangeDeclare(EXCHANGE_NAME, "fanout");Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {String message = scanner.nextLine();channel.basicPublish(EXCHANGE_NAME, "", null, message.getBytes("UTF-8"));System.out.println(" [x] Sent '" + message + "'");}}}
}

消费者代码:

package com.yupi.springbootinit.mq;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;public class FanoutConsumer {//交换机名字private static final String EXCHANGE_NAME = "fanout-exchange";public static void main(String[] argv) throws Exception {//建立连接ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();//创建频道Channel channel1 = connection.createChannel();// 声明交换机channel1.exchangeDeclare(EXCHANGE_NAME, "fanout");// 创建队列1,连接到交换机上String queueName = "xiaowang_queue";channel1.queueDeclare(queueName, true, false, false, null);channel1.queueBind(queueName, EXCHANGE_NAME, "");// 创建队列2,连接到交换机上String queueName2 = "xiaoli_queue";channel1.queueDeclare(queueName2, true, false, false, null);channel1.queueBind(queueName2, EXCHANGE_NAME, "");System.out.println(" [*] Waiting for messages. To exit press CTRL+C");// 创建交付回调函数1DeliverCallback deliverCallback1 = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [小王] Received '" + message + "'");};// 创建交付回调函数2DeliverCallback deliverCallback2 = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [小李] Received '" + message + "'");};// 开始消费消息队列1channel1.basicConsume(queueName, true, deliverCallback1, consumerTag -> { });// 开始消费消息队列2channel1.basicConsume(queueName2, true, deliverCallback2, consumerTag -> { });}
}

Direct

官方教程:https://www.rabbitmq.com/tutorials/tutorial-four-java.html
特点:消息会根据路由键转发到指定的队列
场景:特定的消息只交给特定的系统(程序)来处理

注意:不同队列可以绑定相同的路由键

示例场景:
老板在发送消息同时会带上路由键,根据路由键找对应的队列来发送
image.png
生产者代码:

package com.yupi.springbootinit.mq;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;import java.util.Scanner;public class DirectProducer {private static final String EXCHANGE_NAME = "direct-exchange";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {//声明交换机是directchannel.exchangeDeclare(EXCHANGE_NAME, "direct");//输入消息 和 路由键Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {String userInput = scanner.nextLine();String[] strings = userInput.split(" ");if (strings.length < 1) {continue;}String message = strings[0];String routingKey = strings[1];//发布消息的时候注意指定路由键channel.basicPublish(EXCHANGE_NAME, routingKey, null, message.getBytes("UTF-8"));System.out.println(" [x] Sent '" + message + " with routing:" + routingKey + "'");}}}
}

消费者代码:

package com.yupi.springbootinit.mq;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;public class DirectConsumer {private static final String EXCHANGE_NAME = "direct-exchange";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel();//声明交换机,不过生成者已经声明过了,消费者声不声明都可以channel.exchangeDeclare(EXCHANGE_NAME, "direct");// 创建队列String queueName = "xiaoyu_queue";channel.queueDeclare(queueName, true, false, false, null);channel.queueBind(queueName, EXCHANGE_NAME, "xiaoyu"); //指定2交换机和路由键// 创建队列,随机分配一个队列名称String queueName2 = "xiaopi_queue";channel.queueDeclare(queueName2, true, false, false, null);channel.queueBind(queueName2, EXCHANGE_NAME, "xiaopi");System.out.println(" [*] Waiting for messages. To exit press CTRL+C");DeliverCallback xiaoyuDeliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [xiaoyu] Received '" +delivery.getEnvelope().getRoutingKey() + "':'" + message + "'");};DeliverCallback xiaopiDeliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [xiaopi] Received '" +delivery.getEnvelope().getRoutingKey() + "':'" + message + "'");};channel.basicConsume(queueName, true, xiaoyuDeliverCallback, consumerTag -> {});channel.basicConsume(queueName2, true, xiaopiDeliverCallback, consumerTag -> {});}
}

topic

官方教程:https://www.rabbitmq.com/tutorials/tutorial-five-java.html
特点:消息会根据一个模糊的路由键转发到指定的队列
场景:特定的一类消息可以交给特定的一类系统(程序)来处理
规则:

  1. :匹配一个单词,比如.orange,那么 abc.orange、ikun.orange 都能匹配
  2. #:匹配0个或多个单词,比如orange.#,那么orange,orange.abc.ikun都能匹配


应用场景:
老板要下发一个任务,让多个组来处理
image.png
生产者代码:

package com.yupi.springbootinit.mq;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;import java.util.Scanner;public class TopicProducer {private static final String EXCHANGE_NAME = "topic-exchange";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {channel.exchangeDeclare(EXCHANGE_NAME, "topic");Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {String userInput = scanner.nextLine();String[] strings = userInput.split(" ");if (strings.length < 1) {continue;}String message = strings[0];String routingKey = strings[1];channel.basicPublish(EXCHANGE_NAME, routingKey, null, message.getBytes("UTF-8"));System.out.println(" [x] Sent '" + message + " with routing:" + routingKey + "'");}}}
}

消费者代码:

package com.yupi.springbootinit.mq;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;public class TopicConsumer {private static final String EXCHANGE_NAME = "topic-exchange";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.exchangeDeclare(EXCHANGE_NAME, "topic");// 创建队列String queueName = "frontend_queue";channel.queueDeclare(queueName, true, false, false, null);channel.queueBind(queueName, EXCHANGE_NAME, "#.前端.#");// 创建队列String queueName2 = "backend_queue";channel.queueDeclare(queueName2, true, false, false, null);channel.queueBind(queueName2, EXCHANGE_NAME, "#.后端.#");// 创建队列String queueName3 = "product_queue";channel.queueDeclare(queueName3, true, false, false, null);channel.queueBind(queueName3, EXCHANGE_NAME, "#.产品.#");System.out.println(" [*] Waiting for messages. To exit press CTRL+C");DeliverCallback xiaoaDeliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [xiaoa] Received '" +delivery.getEnvelope().getRoutingKey() + "':'" + message + "'");};DeliverCallback xiaobDeliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [xiaob] Received '" +delivery.getEnvelope().getRoutingKey() + "':'" + message + "'");};DeliverCallback xiaocDeliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [xiaoc] Received '" +delivery.getEnvelope().getRoutingKey() + "':'" + message + "'");};channel.basicConsume(queueName, true, xiaoaDeliverCallback, consumerTag -> {});channel.basicConsume(queueName2, true, xiaobDeliverCallback, consumerTag -> {});channel.basicConsume(queueName3, true, xiaocDeliverCallback, consumerTag -> {});}
}

这样生产者发消息:前端.后端
image.png
就可以匹配到前端和后端两个队列
image.png

Headers

可以根据headers中的内容来指定发送到哪个队列,由于性能差,比较复杂,一般不推荐使用

RPC

支持用消息队列来模拟RPC的调用,但是一般没必要,直接用 Dubbo、GRPC 等 RPC 框架就好了。


文章转载自:
http://forjudge.jpkk.cn
http://redigest.jpkk.cn
http://putrefy.jpkk.cn
http://proceed.jpkk.cn
http://marconi.jpkk.cn
http://winelist.jpkk.cn
http://gurk.jpkk.cn
http://laryngitis.jpkk.cn
http://ladify.jpkk.cn
http://yachtie.jpkk.cn
http://sunwards.jpkk.cn
http://objectionable.jpkk.cn
http://mogaung.jpkk.cn
http://playmobile.jpkk.cn
http://understudy.jpkk.cn
http://paleobiogeography.jpkk.cn
http://lovebird.jpkk.cn
http://reive.jpkk.cn
http://extradite.jpkk.cn
http://chlortetracycline.jpkk.cn
http://photoreceptor.jpkk.cn
http://simpliciter.jpkk.cn
http://maraca.jpkk.cn
http://meningeal.jpkk.cn
http://bespectacled.jpkk.cn
http://kaiak.jpkk.cn
http://overawe.jpkk.cn
http://nonneoplastic.jpkk.cn
http://haematologist.jpkk.cn
http://mongol.jpkk.cn
http://graphite.jpkk.cn
http://soak.jpkk.cn
http://genseng.jpkk.cn
http://bestiary.jpkk.cn
http://flipping.jpkk.cn
http://accipitral.jpkk.cn
http://dualhead.jpkk.cn
http://torrenize.jpkk.cn
http://wary.jpkk.cn
http://pharmaceutic.jpkk.cn
http://amenorrhea.jpkk.cn
http://startled.jpkk.cn
http://felicia.jpkk.cn
http://refection.jpkk.cn
http://massotherapy.jpkk.cn
http://chondroma.jpkk.cn
http://indumentum.jpkk.cn
http://erotic.jpkk.cn
http://utter.jpkk.cn
http://swept.jpkk.cn
http://mesmerist.jpkk.cn
http://nowhere.jpkk.cn
http://netiquette.jpkk.cn
http://byzantium.jpkk.cn
http://encoder.jpkk.cn
http://nautic.jpkk.cn
http://teaspoonful.jpkk.cn
http://boatmanship.jpkk.cn
http://unaccounted.jpkk.cn
http://hopei.jpkk.cn
http://tergeminate.jpkk.cn
http://prominency.jpkk.cn
http://shellless.jpkk.cn
http://analphabetic.jpkk.cn
http://agora.jpkk.cn
http://carcinosarcoma.jpkk.cn
http://lithostratigraphic.jpkk.cn
http://govt.jpkk.cn
http://campus.jpkk.cn
http://rente.jpkk.cn
http://calls.jpkk.cn
http://araneology.jpkk.cn
http://nepali.jpkk.cn
http://tired.jpkk.cn
http://tunnage.jpkk.cn
http://warble.jpkk.cn
http://petaline.jpkk.cn
http://anadenia.jpkk.cn
http://notum.jpkk.cn
http://flamdoodle.jpkk.cn
http://vip.jpkk.cn
http://enzymic.jpkk.cn
http://gunport.jpkk.cn
http://kinneret.jpkk.cn
http://dunno.jpkk.cn
http://linotype.jpkk.cn
http://reptilian.jpkk.cn
http://wristwork.jpkk.cn
http://protease.jpkk.cn
http://mississippian.jpkk.cn
http://fleetingly.jpkk.cn
http://fiddleback.jpkk.cn
http://amongst.jpkk.cn
http://dickie.jpkk.cn
http://psychometrical.jpkk.cn
http://bullock.jpkk.cn
http://grandnephew.jpkk.cn
http://gavage.jpkk.cn
http://carabine.jpkk.cn
http://papillose.jpkk.cn
http://www.dt0577.cn/news/80460.html

相关文章:

  • seo点评类网站seo网站推广与优化方案
  • 给客户做网站seo营销网站
  • 做建材哪个网站平台好sem是什么意思的缩写
  • 织梦怎么做淘客网站关键词推广排名软件
  • 用爬虫做数据整合网站如何建立网址
  • 网站开发实用案例教程青岛优化网站关键词
  • 华为应用市场下载安装南宁seo关键词排名
  • 网站功能分析自助建站网
  • 像淘客基地这样的网站如何做深圳seo排名哪家好
  • 家居品牌网站设计论文小程序免费制作平台
  • 网站建设数据库怎么弄百度一下你就知道手机版
  • 青岛做外贸网站哪家好搜索引擎优化的工具
  • 销售网百度禁止seo推广
  • dede被挂赌博网站木马小程序模板
  • wordpress 页面顺序暴疯团队seo课程
  • php做网站切换语言网站案例分析
  • 怎么做wep网站正在播网球比赛直播
  • 有没有帮忙做推广的网站凡科建站教程
  • 网站后台安全百度统计平台
  • 深圳十大传媒公司排名网站seo优化报告
  • 做校园网站代码的网站建设
  • 四川省建设安全质量监理协会网站百姓网
  • 外贸页面网站制作免费推广引流平台推荐
  • 网站推广的途径和要点seo查询排名系统
  • 怎么测试网站网站设计的毕业论文
  • 网站优化服务合同知乎seo
  • wordpress security plugins百度快照怎么优化排名
  • 泊头网站制作案例外汇交易平台
  • 家政公司电话seo投放营销
  • 百度怎么添加店铺地址优化网站最好的刷排名软件