当前位置: 首页 > 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://www.sadfv.cn/news/220264/

相关文章:

  • 网站开发设置用户企业网络营销推广方案策划范文
  • 如何查看网站的服务器位置达建网站
  • 企业做网站的泉州模板做网站
  • 网站开发系统的可行性研究报告4399全部网页游戏大全
  • 手机设计房子的软件天津网站建设优化企业
  • 网站首页是动态的视频怎么做二手交易网站开发系统
  • 网站宣传的传统方式有哪些网站开发项目报告
  • 建设银行造价咨询中心网站创建一个网站的创业计划书
  • 自己电脑做网站主机网站制作文章标签
  • 怎么查网站的关键词排名熊掌号网站怎么做
  • 电子商务网站建设中应注意哪些问题做哪类视频网站需要视频牌照
  • 公司建设网站的费用吗网站建设书案例
  • 更适合企业网站建设的cms系统网站建设的完整流程图
  • 网站开发与应用课程讨论qq互联网站备案号
  • 西安网站优化维护摄影师网站
  • 专业建设金融行业网站的公司网站建设的实验原理
  • 做外贸网站企业怎样做网站seo
  • wordpress企业网站模板建网站的公司不肯签合同
  • 武昌便宜做网站兼职网站建设推广人才
  • 药品网站订单源码北京建设网站活动图片
  • 上海建设银行网站查询余额如何查看一个网站用什么程序做的
  • 个人网页上传网站怎么做招标网站有哪些
  • html手机网站开发定制物品的app有哪些
  • 宜城网站开发怎么做网站网站
  • 做图书馆网站湖南seo优化排名
  • 做网站地图网络规划
  • 毕业设计网站可以做什么网站不备案打不开
  • iis7搭建网站织梦培训班有哪些
  • 网站制作的基本流程电子商务有限公司名字大全
  • python3 网站建设如何做网站站内搜索功能