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

自己做公司网站成本东莞做购物网站

自己做公司网站成本,东莞做购物网站,网站建设怎样容易,手机金融界网站前置文章 消息队列——RabbitMQ基本概念容器化部署和简单工作模式程序_北岭山脚鼠鼠的博客-CSDN博客 消息队列——rabbitmq的不同工作模式_北岭山脚鼠鼠的博客-CSDN博客 消息队列——spring和springboot整合rabbitmq_北岭山脚鼠鼠的博客-CSDN博客 目录 Work queues 工作队列… 前置文章 消息队列——RabbitMQ基本概念容器化部署和简单工作模式程序_北岭山脚鼠鼠的博客-CSDN博客 消息队列——rabbitmq的不同工作模式_北岭山脚鼠鼠的博客-CSDN博客 消息队列——spring和springboot整合rabbitmq_北岭山脚鼠鼠的博客-CSDN博客 目录 Work queues 工作队列模式  案例: 在生产者端 在消费者端 结果如下 消费预取限制 发布订阅模型 Fanout Exchange配置文件实现 案例 消费者代码 生产者代码 Direct Exchange 注解实现 案例 消费者代码 生产者代码 Topic Exchange 案例  消费者代码 生产者代码 消息转换器 生产者代码 JSON方式序列化 生产者代码 jackson 消费者代码jackson 总结 Work queues 工作队列模式  这里用的不是上面第三篇文章里面的定义配置类的形式。 案例: 在生产者端 队列要存在才可以上传。不然代码运行不会报错但是消息也会不知道发到哪里去。 Testpublic void testSendMessage2() throws InterruptedException {String queue_Name simple.queue;String messagehello 鼠鼠;for(int i1;i50;i)rabbitTemplate.convertAndSend(queue_Name,messagei);Thread.sleep(20);} 在消费者端 定义了两个消费者监听上面的队列本来想三个的但是不知道默认的交换机名字所以弄了两个。并且根据注解的不同第一个是可以直接创建一个队列第二个需要队列已存在才行。 Component public class RabbitMQListener {//自动创建队列RabbitListener(queuesToDeclareQueue(simple.queue))public void ListenerWorkQueue1(Message message) throws InterruptedException {System.out.println(11111message.getBody());Thread.sleep(20);}//需要在rabbit_mq上手动创建队列不然会报错RabbitListener(queuessimple.queue)public void ListenerWorkQueue2(Message message) throws InterruptedException {System.out.println(22222message.getBody());Thread.sleep(200);}//3. 自动创建队列Exchange 与 Queue绑定 // RabbitListener(bindings QueueBinding( // value Queue(simple.queue), // exchange Exchange(/) //绑定默认交换机 // )) // public void ListenerWorkQueue3(Message message) throws InterruptedException { // System.out.println(33333message.getBody()); // Thread.sleep(200); // } } 结果如下 两个队列轮流取消息导致反而变慢了。 消费预取限制 要指定队列才有效果。 这里就相当于指定了在simple前缀的队列上每次只能获取一条消息。 运行结果如下大多数都交给了快的队列执行。 发布订阅模型 Fanout Exchange配置文件实现 消息路由到每个绑定的消息队列。 案例 消费者代码 spring读取到这个Bean之后就会向RabbitMq发请求创建交换机绑定队列了。  Configuration public class FanoutConfig {//itcast.fanoutBeanpublic FanoutExchange fanoutExchange(){return new FanoutExchange(itcast.fanout);}//fanout.queue1Beanpublic Queue fanoutQueue1(){return new Queue(fannout.queue1);}//绑定队列1到交换机Beanpublic Binding fanoutBinding1(Queue fanoutQueue1, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue1).to(fanoutExchange);}//fanout.queue1Beanpublic Queue fanoutQueue2(){return new Queue(fannout.queue2);}//绑定队列2到交换机Beanpublic Binding fanoutBinding2(Queue fanoutQueue2, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue2).to(fanoutExchange);} } 定义两个监听用的方法 Component public class RabbitMQListener { // RabbitListener(queuesboot_queue) // public void ListenerQueue(Message message){ // System.out.println(message); // }//自动创建队列// RabbitListener(queuesToDeclareQueue(simple.queue)) // public void ListenerWorkQueue1(Message message) throws InterruptedException { // System.out.println(11111message.getBody() LocalDateTime.now()); // Thread.sleep(20); // } // // //需要在rabbit_mq上手动创建队列不然会报错 // RabbitListener(queuessimple.queue) // public void ListenerWorkQueue2(Message message) throws InterruptedException { // System.out.println(22222message.getBody() LocalDateTime.now()); // Thread.sleep(200); // }//3. 自动创建队列Exchange 与 Queue绑定 // RabbitListener(bindings QueueBinding( // value Queue(simple.queue), // exchange Exchange(/) //绑定默认交换机 // )) // public void ListenerWorkQueue3(Message message) throws InterruptedException { // System.out.println(33333message.getBody()); // Thread.sleep(200); // }RabbitListener(queuesToDeclareQueue(fanout.queue1))public void ListenerFanoutQueue1(Message message) throws InterruptedException {System.out.println(11111message.getBody());}RabbitListener(queuesToDeclareQueue(fanout.queue2))public void ListenerFanoutQueue2(Message message) throws InterruptedException {System.out.println(22222message.getBody());} } 生产者代码 SpringBootTest RunWith(SpringRunner.class) public class ProducerTest {//1.注入RabbitTemplateAutowiredprivate RabbitTemplate rabbitTemplate;// Test // public void testSend(){ // rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE_NAME,boot.haha,hello 鼠鼠); // }// Test // public void testSendMessage2() throws InterruptedException { // String queue_Name simple.queue; // String messagehello 鼠鼠; // // for(int i1;i50;i) // rabbitTemplate.convertAndSend(queue_Name,messagei); // Thread.sleep(20); // }Testpublic void testSendFanoutExchange(){//交换机名称String exchangeNameitcast.fanout;//消息String messagehello 鼠鼠;//发送消息rabbitTemplate.convertAndSend(exchangeName,,message);} } Direct Exchange 注解实现 案例 消费者代码 Component public class RabbitMQListener { RabbitListener(bindings QueueBinding(value Queue(name direct.queue1),exchange Exchange(nameitcast.direct , type ExchangeTypes.DIRECT),key{red,blue}))public void listenDirectQueue1(String msg){System.out.println(消费者接收到msg);}RabbitListener(bindings QueueBinding(value Queue(name direct.queue2),exchange Exchange(nameitcast.direct , type ExchangeTypes.DIRECT),key{red,yellow}))public void listenDirectQueue2(String msg){System.out.println(消费者接收到msg);} } 生产者代码 Testpublic void testSendDirectExchange(){//交换机名称String exchangeNameitcast.direct;//消息String messagehello 鼠鼠;//发送消息rabbitTemplate.convertAndSend(exchangeName,blue,message);} 此条代码只有绑定了blue这个key的队列才可以收到。 换成red就是两个队列都可以收到了。 Topic Exchange 案例  消费者代码 RabbitListener(bindings QueueBinding(valueQueue(nametopic.queue1),exchangeExchange(nameitcast.topic,type ExchangeTypes.TOPIC),keyjapan.#))public void listenTopicQueue1(String msg){System.out.println(消费者接收到:msg);}RabbitListener(bindings QueueBinding(valueQueue(nametopic.queue2),exchangeExchange(nameitcast.topic,type ExchangeTypes.TOPIC),key#.news))public void listenTopicQueue2(String msg){System.out.println(消费者接收到:msg);} 生产者代码 Testpublic void testSendTopicExchange(){//交换机名称String exchangeNameitcast.topic;//消息String message北岭山脚鼠鼠横死街头究竟是人性的沦丧还是道德的....;//发送消息rabbitTemplate.convertAndSend(exchangeName,japan.news,message);} 两个都符合所以都能收到。 消息转换器 定义一个队列 Beanpublic Queue objectQueue(){return new Queue(object.queue);} 生产者代码 Testpublic void testSendObjectQueue(){//消息MapString,Object msgnew HashMap();msg.put(name,北岭山脚鼠鼠);msg.put(age,22);//发送消息rabbitTemplate.convertAndSend(object.queue,msg);} 可以看见消息被转换成了一长串字符content_type写着java的序列化。 效率差安全性也差。  JSON方式序列化 声明好MessageConveter之后就可以自动覆盖默认序列化方式了。 导入一个核心依赖 dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactId/dependency 生产者代码 jackson 修改生产者的启动类代码加上一个Bean SpringBootApplication public class ProducerApplication {public static void main(String[] args) {SpringApplication.run(ProducerApplication.class);}Beanpublic Jackson2JsonMessageConverter messageConverter(){return new Jackson2JsonMessageConverter();} } 启动测试类之后可以看见新的消息出现了。 消费者代码jackson 然后可以正常接受到消息 如果消费者不使用对应jackson解析的话代码会报错 总结 推荐使用jackson的方式
http://www.w-s-a.com/news/151530/

相关文章:

  • 询广西南宁网站运营礼品定制
  • 建筑公司网站作用免费查看招标信息的网站
  • 建筑设计公司名字起名大全html网站 怎么做seo
  • 网站群建设模板迁移原站迁移pc巩义网站建设案例课堂
  • 烟台高端网站开发wordpress 设置权限
  • 中小企业网站制作流程网站开发和设计人员的岗位要求
  • 公司网站建设多少费用河北城乡建设官网站
  • 国科联创网站建设广告传媒公司招聘信息
  • 网站后台文章删了 怎么前台还有一级做爰片软件网站
  • 辽宁省建设注册中心网站wordpress 博客插件
  • 做电商看的网站有哪些网站建设需求策划书
  • 关于网站建设交易流程的描述一句话哪些网站用户体验好
  • 男女做暖暖的网站大全深圳平台网站建设外包
  • 凯里展示型网站设计抖音代运营收费详细价格
  • 外包网站会自己做原型吗网站制作怎样盈利
  • 为什么在百度搜不到我的网站电商网站开发过程
  • 什么是网站反链网页设计页面链接
  • 佛山企业网站制作韩国seocaso
  • 微信公司网站vue做社区网站
  • 蒙阴网站优化五核网站建设
  • 企业微商城网站建设wordpress新闻是哪个表
  • 重庆网站开发培训机构电商网站创办过程
  • 企业建网站得多少钱长沙财优化公司
  • 网站开发api平台扒完网站代码之后怎么做模板
  • PHP网站建设选择哪家好动画设计师月薪多少
  • 网站如何做市场推广网站开发主要步骤
  • 浏览器正能量网站网页文章导入wordpress
  • 江西中国建设银行网站首页永久免费自助建网站
  • 创建自己网站的步骤吸引人的微信软文
  • 网站建设与网页设计论述题软件开发公司在哪里