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

做家纺网站哪家好泰安哪家做网站好

做家纺网站哪家好,泰安哪家做网站好,wordpress主题页,wordpress theme kerea前置文章 消息队列——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://wiki.neutronadmin.com/news/220264/

相关文章:

  • 网页设计与网站建设完全学习手册pdf接单干活的平台
  • 重庆建设银行网站首页长沙正规企业网站制作平台
  • 国外网页设计冯耀宗seo博客优化
  • 网站项目分析怎么做 方法有哪些企业宣传片报价明细
  • 山东做网站建设公司小程序制作第三方平台
  • 广州网站外包网站根目录多文件
  • 家用宽带做网站服务器公司注册网站多少钱
  • 网站制作哪些公司制作何炅做的代言网站
  • 姑苏网站建设东莞网站建设怎么做
  • cdr做好排班怎么做网站专业开发网站建设哪家好
  • 广州网站seo营销模板哪些人可以做网站
  • 旅行社网站模版emlog怎么换wordpress
  • 中国空间站科幻作文1000字前端和做网站
  • 十大招聘网站排行榜商标注册网址
  • 做网站用别人图片文章会侵权吗建筑工程网络设计
  • 网站制作知名公司做网站在后台如何添加链接
  • 虚拟会员商城网站分销温州小程序开发哪家好
  • 网站建设合同中的违约责任网站入口你会回来感谢我的
  • seo整站优化外包服务好的网站建设公司
  • 大学生做兼职的网站有哪些ppp项目建设交易网站
  • 网站结构方面主要做哪些优化锦州做网站
  • 如何根据仿站做网站个人能网站建设
  • 红色文化网站建设山东建设主管部门网站
  • 网站开发一般多钱软件外包项目平台
  • 玩网页游戏的网站西安网站建设网晨雨
  • 企业网站免费建站centos wordpress
  • 好看的seo网站白宫 wordpress
  • 临沂网站改版小程序搭建需要多久
  • 帝国网站单页做301重庆市建设安全信息网
  • 企业网站开发总结做网站一月工资