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

做网站公司怎么拉客户今天的新闻 最新消息摘抄

做网站公司怎么拉客户,今天的新闻 最新消息摘抄,南京定制网站建设,扬中黄子来文章目录 前言RabbitMQ 1 同步调用和异步调用2 常见的MQ对比3 安装RabbitMQ4 RabbitMQ学习4.1 helloworld学习 5 Spring AMQP5.1 AMQP的入门案例(使用rabbittemplate进行消息发送和接受)5.2 RabbitMQ的workquene5.3 发布订阅模型(exchange(广播fanout 路由direct 话题topic))5.…

文章目录

  • 前言
    • RabbitMQ
  • 1 同步调用和异步调用
  • 2 常见的MQ对比
  • 3 安装RabbitMQ
  • 4 RabbitMQ学习
    • 4.1 helloworld学习
  • 5 Spring AMQP
    • 5.1 AMQP的入门案例(使用rabbittemplate进行消息发送和接受)
    • 5.2 RabbitMQ的workquene
    • 5.3 发布订阅模型(exchange(广播fanout 路由direct 话题topic))
      • 5.3.1 fanout 广播
      • 5.3.2 direct 路由
      • 5.3.3 topic 话题
      • 5.3.4 消息转换器(默认我们传一个对象给rabbitmq spring会使用默认的jdk objectoutputstream进行序列化)
  • 总结


前言

RabbitMQ

1 同步调用和异步调用

1 同步调用适用于大多数场景 比如差一个订单状态 我们要求时效性
2 异步调用适用于高并发场景,依赖于异步管理器,能提高吞吐量,反应速度。
在这里插入图片描述
在这里插入图片描述

2 常见的MQ对比

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 安装RabbitMQ

我使用的是centos8

直接安装rabbitmq会有很多问题 因为centos8

021年12月31日CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。后续新的服务器建议使用CentOS Stream,或者其他linux版本,按照社区规则,CentOS 8的源地址http://mirror.centos.org/centos/8/内容已移除

这里使用Docker的方式进行安装

1 安装rabbitmq

docker pull rabbitmq

在这里插入图片描述

2 启动rabbitmq
默认方式
登录的时候用户名密码都是guest

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq

配置用户名密码

docker run \-e RABBITMQ_DEFAULT_USER=dongjiming \-e RABBITMQ_DEFAULT_PASS=123321 \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3-management

3 安装web插件

先执行docker ps 拿到当前的镜像ID

进入容器

安装插件

ctrl+p+q退出当前容器

docker ps 
docker exec -it 镜像ID /bin/bash
rabbitmq-plugins enable rabbitmq_management

访问地址

http://linuxip地址:15672,这里的用户名和密码输你配置的

可以配置用户信息

# 创建一个rabbitmq用户
rabbitmqctl add_user [账号] [密码]
# 给具体的一个用户设置身份权限
rabbitmqctl set_user_tags [账号] administrator
# 给具体的一个用户修改密码
rabbitmqctl change_password [username] [new password]
# 删除一个用户
rabbitmqctl delete_user [username]
# 列出所有用户清单
rabbitmqctl list_users
# 为用户设置 administrator 角色
rabbitmqctl.bat set_permission -p / [username] ".*" ".*" ".*"
rabbitmqctl.bat set_permission -p / root ".*" ".*" ".*"

在这里插入图片描述

4 RabbitMQ学习

在这里插入图片描述

4.1 helloworld学习

依赖

  <dependencies><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-nop</artifactId><version>1.7.29</version></dependency></dependencies>

生产者

package helloworld;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;/*** 描述:     Hello World 的发送类,连接到RabbitMQ服务端,然后发送一条消息,然后退出。*/
public class Send {private final static String QUEUE_NAME = "hello";public static void main(String[] args) throws IOException, TimeoutException {//创建连接工厂ConnectionFactory factory = new ConnectionFactory();//设置RabbitMQ地址factory.setHost("139.224.237.247");factory.setUsername("admin");factory.setPassword("11111");//建立连接Connection connection = factory.newConnection();//获得信道Channel channel = connection.createChannel();//声明队列channel.queueDeclare(QUEUE_NAME,false,false,false,null);//发布消息String message = "Hello World!11";channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));System.out.println("发送了消息:" + message);//关闭连接channel.close();connection.close();}
}

消费者

package helloworld;import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import java.io.IOException;
import java.util.concurrent.TimeoutException;/*** 描述:     接收消息,并打印,持续运行*/
public class Recv {private final static String QUEUE_NAME = "hello";public static void main(String[] args) throws IOException, TimeoutException {//创建连接工厂ConnectionFactory factory = new ConnectionFactory();//设置RabbitMQ地址factory.setHost("139.224.237.247");factory.setUsername("admin");factory.setPassword("1111");//建立连接Connection connection = factory.newConnection();//获得信道Channel channel = connection.createChannel();//声明队列channel.queueDeclare(QUEUE_NAME,false,false,false,null);//接收消息并消费channel.basicConsume(QUEUE_NAME, true, new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope,BasicProperties properties, byte[] body) throws IOException {String message = new String(body, "UTF-8");System.out.println("收到消息:" + message);}});}
}

5 Spring AMQP

在这里插入图片描述

5.1 AMQP的入门案例(使用rabbittemplate进行消息发送和接受)

发送端send
1 导入依赖

    <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--AMQP依赖,包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><!--单元测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency></dependencies>

2 配置文件

logging:pattern:dateformat: MM-dd HH:mm:ss:SSS
spring:rabbitmq:host: 139.224.237.247 # rabbitMQ的ip地址port: 5672 # 端口username: adminpassword: 11111virtual-host: /

3 引入使用

@SpringBootTest
public class SpringAmqpTest {

//注入模板
@Autowired
private RabbitTemplate rabbitTemplate;@Test
public void testSendMessage2SimpleQueue() {String queueName = "simple.queue";String message = "hello, spring amqp!";//指定队列发送消息rabbitTemplate.convertAndSend(queueName, message);
}

}

接收端
1 导入依赖
2 配置文件

这两步和上面相同

3 编写类注册Bean开启监听

@Component
public class SpringRabbitListener {@RabbitListener(queues = "simple.queue")public void listenSimpleQueue(String msg) {System.out.println("消费者接收到simple.queue的消息:【" + msg + "】");}}

在这里插入图片描述

5.2 RabbitMQ的workquene

workquene就是一个队列 多个消费者消费
每条信息只能被一个消费者消费
其目的是提高性能 避免消息队列中信息堆积
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.3 发布订阅模型(exchange(广播fanout 路由direct 话题topic))

在这里插入图片描述

5.3.1 fanout 广播

把消息发给交换机
交换机会把消息发送给每一个和它绑定的队列在这里插入图片描述

1 首先使用配置类 配置Bean的方式 声明交换机 队列1 队列2 并进行交换机和队列的绑定

package cn.itcast.mq.config;import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class FanoutConfig {// itcast.fanout@Beanpublic FanoutExchange fanoutExchange(){return new FanoutExchange("itcast.fanout");}// fanout.queue1@Beanpublic Queue fanoutQueue1(){return new Queue("fanout.queue1");}// 绑定队列1到交换机@Beanpublic Binding fanoutBinding1(Queue fanoutQueue1, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue1).to(fanoutExchange);}// fanout.queue2@Beanpublic Queue fanoutQueue2(){return new Queue("fanout.queue2");}// 绑定队列2到交换机@Beanpublic Binding fanoutBinding2(Queue fanoutQueue2, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue2).to(fanoutExchange);}

2 配置Bean 加 @rabbitlistener(指定队列名称) 的方式进行监听消费

@Component
public class SpringRabbitListener {@RabbitListener(queues = "fanout.queue1")public void listenFanoutQueue1(String msg) {System.out.println("消费者接收到fanout.queue1的消息:【" + msg + "】");}@RabbitListener(queues = "fanout.queue2")public void listenFanoutQueue2(String msg) {System.out.println("消费者接收到fanout.queue2的消息:【" + msg + "】");}
}

3 向交换机发送消息(发送前先启动消费者端 进行监听)

    @Testpublic void testSendFanoutExchange() {// 交换机名称String exchangeName = "itcast.fanout";// 消息String message = "hello, every one!";// 发送消息rabbitTemplate.convertAndSend(exchangeName, "", message);}

发现消息同时被两个消息队列消费
在这里插入图片描述

5.3.2 direct 路由

生产者 发送消息时会指定 交换机 和 routingkey
交换机再根据 routingkey 和 队列绑定的bindingkey比较
相同则会把消息发给这个队列
在这里插入图片描述

1 使用@rabbitlistener的方式 声明交换机 队列 绑定 binding-key 消费方法

@Component
public class SpringRabbitListener {//生命交换机 队列 进行绑定 并且指定bindingkey 和消费方法@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue1"),exchange = @Exchange(name = "itcast.direct", type = ExchangeTypes.DIRECT),key = {"red", "blue"}))public void listenDirectQueue1(String msg){System.out.println("消费者接收到direct.queue1的消息:【" + msg + "】");}@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue2"),exchange = @Exchange(name = "itcast.direct", type = ExchangeTypes.DIRECT),key = {"red", "yellow"}))public void listenDirectQueue2(String msg){System.out.println("消费者接收到direct.queue2的消息:【" + msg + "】");}
}

2 发送端编写代码 指定routingkey和消息

    @Testpublic void testSendDirectExchange() {// 交换机名称String exchangeName = "itcast.direct";// 消息String message = "hello, red!";// 发送消息 (指定routingkey为red 这样两个队列都会收到消息)rabbitTemplate.convertAndSend(exchangeName, "red", message);}

指定routingkey red
在这里插入图片描述
指定routingkey yellow
在这里插入图片描述

在这里插入图片描述

5.3.3 topic 话题

和direct 几乎一样 不过topic的key 以 . 分割并且可以使用通配符
在这里插入图片描述

@Component
public class SpringRabbitListener {@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue1"),exchange = @Exchange(name = "itcast.topic", type = ExchangeTypes.TOPIC),key = "china.#"))public void listenTopicQueue1(String msg){System.out.println("消费者接收到topic.queue1的消息:【" + msg + "】");}@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue2"),exchange = @Exchange(name = "itcast.topic", type = ExchangeTypes.TOPIC),key = "#.news"))public void listenTopicQueue2(String msg){System.out.println("消费者接收到topic.queue2的消息:【" + msg + "】");}
}
    @Testpublic void testSendTopicExchange() {// 交换机名称String exchangeName = "itcast.topic";// 消息String message = "今天天气不错,我的心情好极了!";// 发送消息rabbitTemplate.convertAndSend(exchangeName, "china.weather", message);}

在这里插入图片描述

5.3.4 消息转换器(默认我们传一个对象给rabbitmq spring会使用默认的jdk objectoutputstream进行序列化)

()
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。


文章转载自:
http://chariot.tbjb.cn
http://porcupine.tbjb.cn
http://counterpressure.tbjb.cn
http://hypocotyl.tbjb.cn
http://scopulate.tbjb.cn
http://microparasite.tbjb.cn
http://toom.tbjb.cn
http://isd.tbjb.cn
http://stumble.tbjb.cn
http://cress.tbjb.cn
http://flagitious.tbjb.cn
http://cannonproof.tbjb.cn
http://hellenistic.tbjb.cn
http://gitana.tbjb.cn
http://oceanologic.tbjb.cn
http://carrot.tbjb.cn
http://arethusa.tbjb.cn
http://platinocyanide.tbjb.cn
http://relaid.tbjb.cn
http://impolite.tbjb.cn
http://utah.tbjb.cn
http://schlesien.tbjb.cn
http://sucrier.tbjb.cn
http://jaspery.tbjb.cn
http://combine.tbjb.cn
http://camelopardalis.tbjb.cn
http://transplant.tbjb.cn
http://scapular.tbjb.cn
http://physiognomy.tbjb.cn
http://freddie.tbjb.cn
http://salability.tbjb.cn
http://platitudinarian.tbjb.cn
http://chopfallen.tbjb.cn
http://hoggery.tbjb.cn
http://besot.tbjb.cn
http://litterbug.tbjb.cn
http://alloimmune.tbjb.cn
http://septuagesima.tbjb.cn
http://politicaster.tbjb.cn
http://filling.tbjb.cn
http://satiate.tbjb.cn
http://slantways.tbjb.cn
http://formularization.tbjb.cn
http://skep.tbjb.cn
http://epistolical.tbjb.cn
http://consignable.tbjb.cn
http://inhumanity.tbjb.cn
http://videophone.tbjb.cn
http://easeful.tbjb.cn
http://semiscientific.tbjb.cn
http://sunroom.tbjb.cn
http://varvel.tbjb.cn
http://artlessly.tbjb.cn
http://basidiospore.tbjb.cn
http://nasturtium.tbjb.cn
http://acetylate.tbjb.cn
http://coloury.tbjb.cn
http://colonelship.tbjb.cn
http://organotherapy.tbjb.cn
http://wall.tbjb.cn
http://aldehyde.tbjb.cn
http://maledict.tbjb.cn
http://hysteric.tbjb.cn
http://nonpolicy.tbjb.cn
http://levyist.tbjb.cn
http://broccoli.tbjb.cn
http://halfvolley.tbjb.cn
http://east.tbjb.cn
http://gill.tbjb.cn
http://willemstad.tbjb.cn
http://unwise.tbjb.cn
http://bedrizzle.tbjb.cn
http://wicking.tbjb.cn
http://astrolatry.tbjb.cn
http://extralunar.tbjb.cn
http://thurify.tbjb.cn
http://lamebrain.tbjb.cn
http://zambian.tbjb.cn
http://bree.tbjb.cn
http://carboxylate.tbjb.cn
http://jawed.tbjb.cn
http://unanaesthetized.tbjb.cn
http://eleventh.tbjb.cn
http://bionomics.tbjb.cn
http://unscrupulousness.tbjb.cn
http://battleplan.tbjb.cn
http://peridotite.tbjb.cn
http://computistical.tbjb.cn
http://peremptory.tbjb.cn
http://cache.tbjb.cn
http://darwinism.tbjb.cn
http://dekaliter.tbjb.cn
http://haberdash.tbjb.cn
http://quartet.tbjb.cn
http://extricator.tbjb.cn
http://agrometeorological.tbjb.cn
http://buss.tbjb.cn
http://serviceability.tbjb.cn
http://initiative.tbjb.cn
http://orc.tbjb.cn
http://www.dt0577.cn/news/102079.html

相关文章:

  • wordpress建站博客广州网络推广选择
  • hulu网站在中国做内容吗邵阳做网站的公司
  • 做网站用的什么编程语言必应搜索引擎怎么样
  • 无障碍网站建设推广前景网络营销企业是什么
  • 新手做网站百度官方网站登录
  • 天津网站快速备案营销策划公司
  • 苹果手机可以看的网站大全建立网站需要什么技术
  • 什么网站做电脑系统好网站关键词怎么优化排名
  • 合肥网站建设哪个公司做得比较好seo研究中心倒闭
  • 网站口碑推广链爱交易平台
  • 做论坛网站价格线上推广产品
  • 什么叫网站权重培训网络营销的机构
  • wordpress在线制作东莞seo广告宣传
  • 四川省城乡建建设人事考试网站seo成创网络
  • 广东省建设项目安全标准自评网站网站搜索关键词优化
  • 1920的做网站做多大360指数查询
  • 成都麦卡网络做网站开发怎么样国外域名
  • 固原市住房和城乡建设厅网站百度热搜榜历史
  • 网站设计规划的目的和要求怎么做推广让别人主动加我
  • 荣成网站建设霸屏seo服务
  • 网站的301重定向怎么做厦门小鱼网
  • 河北永生建筑工程网站市场营销策划
  • 微信小程序店铺怎么弄东莞快速优化排名
  • 最详细的wordpress教程seo体系百科
  • 网站建设学什么的网络营销竞价推广
  • 在线观看网站深夜免费企业文化建设
  • 网站建设需要做的优化工作武汉百度网站优化公司
  • 外贸网站 源网站信息
  • 学校网站建设都是谁做的做网站推广一般多少钱
  • 网站设计的主要风格关键词排名方法