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

需要服务器的网站seo网站关键词排名快速

需要服务器的网站,seo网站关键词排名快速,wordpress 中文附件,苏州网站设计SpringBoot整合RabbitMQ学习笔记 以下三种类型的消息#xff0c;生产者和消费者需各自启动一个服务#xff0c;模拟生产者服务发送消息#xff0c;消费者服务监听消息#xff0c;分布式开发。 一 Fanout类型信息 . RabbitMQ创建交换机和队列 在RabbitMQ控制台#xff0c;新…SpringBoot整合RabbitMQ学习笔记 以下三种类型的消息生产者和消费者需各自启动一个服务模拟生产者服务发送消息消费者服务监听消息分布式开发。 一 Fanout类型信息 . RabbitMQ创建交换机和队列 在RabbitMQ控制台新建交换机hmall.fanout新建两个队列fanout.queue1和fanout.queue2并将连个队列和交换机进行绑定即可。 操作如下图所示 一下操作可以通过代码实现具体参考配置类 1创建队列 2创建交换机 3绑定 2. 代码实现 1引入依赖 dependencygroupIdorg.springframework.book/groupIdartifactIdspring-boot-starter-amqp/artifactId /dependency2配置MQ配置信息 spring:rabbitmq:host: 192.168.150.101 #主机ipport: 5672 #端口virtual-host: /hmall #虚拟主机username: hmall #用户名password: 123 #密码exchange: hmall.fanoutproducer:queue1: fanout.queue1 3声明队列和交换机配置类 Component public class FanoutConfg{Value(${spring.rabbitmq.exchange})private String exchangeValue(${spring.rabbitmq.producer.queue1})private String queueName1// 声明fanout交换机Beanpublic FanoutExchange fanoutExchange(){return new FanoutExchange(exchanage);}// 声明队列Beanpublic Queue fanoutQueue1(){return new Queue(queueName1);}//绑定队列和交换机Beanpublic Binding bindingQueue1(Queue fanoutQueue1,FanoutExchange fanoutExchange){return BindingBuilder,build(fanoutQueue1).to(fanoutExchange);} }4生产者 Component public class RabbitMqProduce {Autowiredprivate RabbitTemplate rabbitTemplete;value(${spring.rabbitmq.producer.queue})private String queueName;/*** 入参说明* 第一个参数queueName队列名称* 第二个参数路由键fanout类型不需要路由键* 第三个参数msg 消息题内容*/public void send(String msg){rabbitTemplete.covertAndSend(queueName,null,msg);}}4消费者 Component public class RabbitMqListener {RabbitListener(queues${spring.rabbitmq.producer.queue})public void counsume(String msg){System.out.pringln(消费者收到 fanout.queue队列发的消息,msg);} }5测试类 SpringBootTest public class SpringBootTest{AUtowiredprivate RabbitMqProduce producer;Testpublic void testSendFanoutMsg(){producer.send(fanout类型发送消息);} }二 direct类型发送消息 控制台操作 1交换机和队列的创建参考fanout的操作 2绑定与fanout不同的是 给交换机绑定队列的同时需要指定路由键如下图所示 代码实现 1依赖引入参考fanout类型的消息 2mq消息配置 spring:rabbitmq:host: 192.168.150.101 #主机ipport: 5672 #端口virtual-host: /hmall #虚拟主机username: hmall #用户名password: 123 #密码exchange: hmall.directproducer:queue1: direct.queue1queue2: direct.queue2routingKey1: redroutingKey2: red2 3MQ配置类 以下配置可以在消费者注解上实现 Component public class RabbitMqConfig {Autowiredprivate RabbitTemplate rabbitTemplete;value(${spring.rabbitmq.producer.exchange})private String exchange;value(${spring.rabbitmq.producer.queue1})private String queueName1;value(${spring.rabbitmq.producer.queue2})private String queueName2;value(${spring.rabbitmq.producer.routingKey1})private String routingKey1;value(${spring.rabbitmq.producer.routingKey2})private String routingKey2;// 创建交换机Bean(directExchange)public Exchange getExchange(){return ExchangeBuilder.topicExchange(exchange) // 交换机类型交换机名称.durable(true) //ture为持久化存到磁盘false存到内存.build();}// 创建队列Bean(directQueue1)public Queue getDirectQueue1(){retuen new Queue(queueName1);}// 交换机绑定队列beanpublic Binging bindDirectQueue1(Qualifier(directExchange) Exchange exchange,Qualifier(directQueue1) Queue queue){return BindingBuilder.bind(queue).to(exchange).with(routingKey1).noargs(); }// 创建队列Bean(directQueue2)public Queue getDirectQueue2(){retuen new Queue(queueName2);}// 交换机绑定队列beanpublic Binging bindDirectQueue2(Qualifier(directExchange) Exchange exchange,Qualifier(directQueue2) Queue queue){return BindingBuilder.bind(queue).to(exchange).with(routingKey2).noargs(); }}4生产者发送消息 Component public class RabbitMqProduce {Autowiredprivate RabbitTemplate rabbitTemplete;value(${spring.rabbitmq.producer.queue1})private String queueName1;value(${spring.rabbitmq.producer.queue2})private String queueName2;value(${spring.rabbitmq.producer.routingKey2})private String routingKey1;value(${spring.rabbitmq.producer.routingKey1})private String routingKey2;/*** 入参说明* 第一个参数queueName队列名称* 第二个参数路由键fanout类型不需要路由键* 第三个参数msg 消息题内容*/public void sendQueue1(String msg){rabbitTemplete.covertAndSend(queueName1,routingKey1,msg);}public void sendQueue2(String msg){rabbitTemplete.covertAndSend(queueName2,routingKey2,msg);}}5消费者监听消息 第一种已经编写了配置类 Component public class RabbitMqListener {RabbitListener(queues${spring.rabbitmq.producer.queue1})public void counsume(String msg){System.out.pringln(消费者收到 direct.queue1队列发的消息,msg);}RabbitListener(queues${spring.rabbitmq.producer.queue2})public void counsume(String msg){System.out.pringln(消费者收到 direct.queue2队列发的消息,msg);} }第二种在注解上配置交换机和队列以及路由键 Component public class RabbitMqListener {RabbitListener(bindings QueueBinding(value Queue(name${spring.rabbitmq.producer.queue1},durabletrue),exchange Exchange(name${spring.rabbitmq.producer.exchange),typeExchangeType.DIRECT),key {${spring.rabbitmq.producer.routingKey1},${spring.rabbitmq.producer.routingKey2}} ))public void counsume(String msg){System.out.pringln(消费者收到 direct.queue1队列发的消息,msg);}RabbitListener(bindings QueueBinding(value Queue(name${spring.rabbitmq.producer.queue2},durabletrue),exchange Exchange(name${spring.rabbitmq.producer.exchange),typeExchangeType.DIRECT),key {${spring.rabbitmq.producer.routingKey1},${spring.rabbitmq.producer.routingKey2}} ))public void counsume(String msg){System.out.pringln(消费者收到 direct.queue2队列发的消息,msg);} }6测试类 SpringBootTest public class SpringBootTest{AUtowiredprivate RabbitMqProduce producer;Testpublic void testSendDirectMsg(){producer.send(direct类型发送消息);} }三 Topic类型消息 控制台操作 参考前面的创建交换机队列以及绑定关系操作代码实现 1依赖引入参考fanout类型的消息 2mq消息配置 路由键使用通配符进行匹配,#代表多个*代表一个 spring:rabbitmq:host: 192.168.150.101 #主机ipport: 5672 #端口virtual-host: /hmall #虚拟主机username: hmall #用户名password: 123 #密码exchange: hmall.topicproducer:queue1: topic.queue1queue2: topic.queue2routingKey1: china.#routingKey2: #.news 3MQ配置类 Component public class RabbitMqConfig {Autowiredprivate RabbitTemplate rabbitTemplete;value(${spring.rabbitmq.producer.exchange})private String exchange;value(${spring.rabbitmq.producer.queue1})private String queueName1;value(${spring.rabbitmq.producer.queue2})private String queueName2;value(${spring.rabbitmq.producer.routingKey1})private String routingKey1;value(${spring.rabbitmq.producer.routingKey2})private String routingKey2;// 创建交换机Bean(topicExchange)public Exchange getExchange(){return ExchangeBuilder.topicExchange(exchange) // 交换机类型交换机名称.durable(true) //ture为持久化存到磁盘false存到内存.build();}// 创建队列Bean(topicQueue1)public Queue getDirectQueue1(){retuen new Queue(queueName1);}// 交换机绑定队列beanpublic Binging bindDirectQueue1(Qualifier(topicExchange) Exchange exchange,Qualifier(topicQueue1) Queue queue){return BindingBuilder.bind(queue).to(exchange).with(routingKey1).noargs(); }// 创建队列Bean(topicQueue2)public Queue getDirectQueue2(){retuen new Queue(queueName2);}// 交换机绑定队列beanpublic Binging bindDirectQueue2(Qualifier(topicExchange) Exchange exchange,Qualifier(topicQueue2) Queue queue){return BindingBuilder.bind(queue).to(exchange).with(routingKey2).noargs(); }}4生产者发送消息 Component public class RabbitMqProduce {Autowiredprivate RabbitTemplate rabbitTemplete;value(${spring.rabbitmq.producer.queue1})private String queueName1;value(${spring.rabbitmq.producer.queue2})private String queueName2;value(${spring.rabbitmq.producer.routingKey2})private String routingKey1;value(${spring.rabbitmq.producer.routingKey1})private String routingKey2;/*** 入参说明* 第一个参数queueName队列名称* 第二个参数路由键fanout类型不需要路由键* 第三个参数msg 消息题内容*/public void sendQueue1(String msg){rabbitTemplete.covertAndSend(queueName1,routingKey1,msg);}public void sendQueue2(String msg){rabbitTemplete.covertAndSend(queueName2,routingKey2,msg);}}5消费者监听消息 Component public class RabbitMqListener {RabbitListener(queues${spring.rabbitmq.producer.queue1})public void counsume(String msg){System.out.pringln(消费者收到 topic.queue1队列发的消息,msg);}RabbitListener(queues${spring.rabbitmq.producer.queue2})public void counsume(String msg){System.out.pringln(消费者收到 topic.queue2队列发的消息,msg);} }6测试类 SpringBootTest public class SpringBootTest{AUtowiredprivate RabbitMqProduce producer;Testpublic void testSendDirectMsg(){producer.send(direct类型发送消息);} }四 消息转换器 MQ会把消息体变成字节码 解决办法使用消息转换器实现如下 在生产者和消费者两个服务引入依赖 dependencygroupIdcom.fasterxml.jackson/groupIdartifactIdjasckson-databind/artifactId /dependency在生产者和消费者两个服务编写消息转换器配置 Component public class JacksonMessageConvertor{Beanpublic MessageCoverter jacksonMessageConvertor(){return new Jackson2JsonMessageConverter();} }消息体 对于生产者来说是map类型的则生成者接收的时候也是map类型 例如 Component public class RabbitMqListener {RabbitListener(queues${spring.rabbitmq.producer.queue1})public void counsume(MapString,Objecct msg){System.out.pringln(消费者收到 topic.queue1队列发的消息,msg);}}五 案例演示 支付服务支付成功后通知交易服务进行后续操作 生产者和消费者两个服务都需要进行1,23步骤 添加依赖 !--mq依赖-- dependencygroupIdorg.springframework.book/groupIdartifactIdspring-boot-starter-amqp/artifactId /dependency !--消息转换器依赖-- dependencygroupIdcom.fasterxml.jackson/groupIdartifactIdjasckson-databind/artifactId /dependency添加MQ配置信息 spring:rabbitmq:host: 192.168.150.101 #主机ipport: 5672 #端口virtual-host: /hmall #虚拟主机username: hmall #用户名password: 123 #密码exchange: pay.topicqueue: mark.order.pay.queueroutKingKey: pay.success 消息转换器配置类 Component public class JacksonMessageConvertor{Beanpublic MessageCoverter jacksonMessageConvertor(){return new Jackson2JsonMessageConverter();} }生产者 1生产者的配置 Component public class Rabbitroducer {Autowiredprivate RabbitTemplate rabbitTemplete;value(${spring.rabbitmq.queue})private String queueName;value(${spring.rabbitmq.routingKey})private String routingKey;/*** 入参说明* 第一个参数queueName队列名称* 第二个参数路由键fanout类型不需要路由键* 第三个参数msg 消息题内容*/public void sendMsg(String msg){// 发送消息rabbitTemplete.covertAndSend(queueName,routingKey, msg);} }2业务代码支付成功发送消息 public class payOrderServiceImpl impletement PayOrderService{Autowridprivate RabbitProducer payProducer;OveriridTransactional(rollback Exception.class)public void payOrder(PayOrderDto payOrder){// 一些列操作最终交易成功// 发送消息通知try{payProducer.send(payOrder.getId());}catch(AmqpException e){log.error(交易成功发送消息异常{},e.getMessages(););}} }消费者 Component public class PaySatusListener {Autowiredprivate OrderService orderService;RabbitListener(bindings QueueBinding(value Queue(name${spring.rabbitmq.queue},durabletrue),exchange Exchange(name${spring.rabbitmq.exchange),typeExchangeType.TOPIC),key {${spring.rabbitmq.routingKey}} ))public void listenOrderPay(Long orderId){//标记订单为已支付orderService.markOrderPaySuccess(orderId);}}
http://www.sadfv.cn/news/68132/

相关文章:

  • 山西电力建设三公司网站h5网站开发培训机构
  • 怎么做火短视频网站建设旅游网站的目的和意义
  • 相册网站源码php网页设计职位
  • 网站内的地图导航怎么做的吉林长春
  • gudao网站建设centos 7.3 wordpress
  • 建设网站答辩情况wordpress栏目
  • 赞叹天河网站建设公司想要建设一个网站都需要注意什么
  • wordpress网站如何引流六安网站关键词排名优化地址
  • 开展网站建设服务做简单网站用什么软件
  • 怎么做网站里的悬浮窗口网站的稳定性
  • 企业网站开源网站开发的实验心德
  • 网站建设专业就业前景长沙正规竞价优化服务
  • 网站logo也叫做网站的房地产新闻app哪个好
  • 消防有哪些网站合适做沙田镇做网站
  • 什么创网站北京网络法庭
  • 秦皇岛抚宁区建设局网站wordpress添加原创说明
  • 网站建设空标记牛商网做网站要多少钱
  • html 网站添加悬浮二维码免费公司网址怎么注册
  • 旅游村庄网站建设方案做网站别人输账号代码
  • 网站添加搜索活动策划网站有哪些
  • 晋城网站seo做优惠券网站要多少钱
  • 建瓯市建设局网站专业网站开发开发
  • lamp网站开发黄金组合适合大型网站的流量套餐
  • muse cc 做网站Linux主机设置网站首页
  • 微信企业微网站设计师经常用的网站
  • 孝感网站开发优搏快互联网道路运输便民政务服务系统
  • 爱站网seo查询三明做网站
  • iis建设个人网站网站建立吸引人的策划活动
  • 怎么做投资网站不违法河南工程项目信息
  • 想招代理去什么网站开发网站步骤是