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

天津网站建设电话广州优化防控措施

天津网站建设电话,广州优化防控措施,中文网页开发工具,wordpress网页设计价格设计rabbitmq官网地址&#xff1a;https://www.rabbitmq.com/tutorials 下面介绍rabbitmq官网中七种使用方式在spring boot中如何使用 下面是基于 Spring Boot 使用 RabbitMQ 实现这七种模式的示例代码。假设已经引入了以下依赖&#xff1a; Maven 依赖 <dependency><g…

rabbitmq官网地址:https://www.rabbitmq.com/tutorials

下面介绍rabbitmq官网中七种使用方式在spring boot中如何使用

下面是基于 Spring Boot 使用 RabbitMQ 实现这七种模式的示例代码。假设已经引入了以下依赖:

Maven 依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

 

1. Hello World! 模式

生产者和消费者直接发送和接收消息。

配置类

@Configuration
public class RabbitConfig {public static final String QUEUE_NAME = "hello";@Beanpublic Queue helloQueue() {return new Queue(QUEUE_NAME);}
}

生产者

@RestController
@RequestMapping("/hello")
public class HelloProducer {@Autowiredprivate AmqpTemplate rabbitTemplate;@GetMapping("/send")public String send() {rabbitTemplate.convertAndSend(RabbitConfig.QUEUE_NAME, "Hello RabbitMQ!");return "Message sent!";}
}

消费者

@Component
public class HelloConsumer {@RabbitListener(queues = RabbitConfig.QUEUE_NAME)public void receive(String message) {System.out.println("Received: " + message);}
}

2. Work Queues(工作队列)

多个消费者从同一个队列中获取任务,进行任务分发。

配置类

@Configuration
public class WorkQueueConfig {public static final String WORK_QUEUE = "work_queue";@Beanpublic Queue workQueue() {return new Queue(WORK_QUEUE);}
}

生产者

@RestController
@RequestMapping("/work")
public class WorkQueueProducer {@Autowiredprivate AmqpTemplate rabbitTemplate;@GetMapping("/send/{msg}")public String send(@PathVariable String msg) {rabbitTemplate.convertAndSend(WorkQueueConfig.WORK_QUEUE, msg);return "Work message sent!";}
}

消费者(多个)

@Component
public class WorkConsumer {@RabbitListener(queues = WorkQueueConfig.WORK_QUEUE)public void receive(String message) throws InterruptedException {System.out.println("Worker received: " + message);Thread.sleep(1000);  // 模拟任务耗时}
}

3. Publish/Subscribe(发布/订阅)

使用 Fanout Exchange 实现广播。

配置类

@Configuration
public class FanoutConfig {public static final String FANOUT_EXCHANGE = "fanout_exchange";@Beanpublic FanoutExchange fanoutExchange() {return new FanoutExchange(FANOUT_EXCHANGE);}@Beanpublic Queue queue1() {return new Queue("fanout.queue1");}@Beanpublic Queue queue2() {return new Queue("fanout.queue2");}@Beanpublic Binding binding1() {return BindingBuilder.bind(queue1()).to(fanoutExchange());}@Beanpublic Binding binding2() {return BindingBuilder.bind(queue2()).to(fanoutExchange());}
}

生产者

@RestController
@RequestMapping("/fanout")
public class FanoutProducer {@Autowiredprivate AmqpTemplate rabbitTemplate;@GetMapping("/send")public String send() {rabbitTemplate.convertAndSend(FanoutConfig.FANOUT_EXCHANGE, "", "Fanout message!");return "Fanout message sent!";}
}

4. Routing(路由模式)

使用 Direct Exchange 和路由键实现定向投递。

配置类

@Configuration
public class DirectConfig {public static final String DIRECT_EXCHANGE = "direct_exchange";@Beanpublic DirectExchange directExchange() {return new DirectExchange(DIRECT_EXCHANGE);}@Beanpublic Queue errorQueue() {return new Queue("direct.error");}@Beanpublic Queue infoQueue() {return new Queue("direct.info");}@Beanpublic Binding errorBinding() {return BindingBuilder.bind(errorQueue()).to(directExchange()).with("error");}@Beanpublic Binding infoBinding() {return BindingBuilder.bind(infoQueue()).to(directExchange()).with("info");}
}

5. Topics(主题模式)

使用 Topic Exchange 实现多级路由。

配置类

@Configuration
public class TopicConfig {public static final String TOPIC_EXCHANGE = "topic_exchange";@Beanpublic TopicExchange topicExchange() {return new TopicExchange(TOPIC_EXCHANGE);}@Beanpublic Queue topicQueue1() {return new Queue("topic.queue1");}@Beanpublic Queue topicQueue2() {return new Queue("topic.queue2");}@Beanpublic Binding binding1() {return BindingBuilder.bind(topicQueue1()).to(topicExchange()).with("*.error");}@Beanpublic Binding binding2() {return BindingBuilder.bind(topicQueue2()).to(topicExchange()).with("log.#");}
}

6. RPC(远程过程调用)

生产者发送请求,消费者处理后返回响应。

RPC 服务端

@Component
public class RpcServer {@RabbitListener(queues = "rpc_queue")public String process(String message) {return "Processed: " + message;}
}

RPC 客户端

@RestController
@RequestMapping("/rpc")
public class RpcClient {@Autowiredprivate AmqpTemplate rabbitTemplate;@GetMapping("/send/{msg}")public String send(@PathVariable String msg) {Object response = rabbitTemplate.convertSendAndReceive("rpc_queue", msg);return "RPC response: " + response;}
}

7. Publisher Confirms(发布者确认)

确保消息成功发送到 RabbitMQ 服务器。

配置类

@Configuration
public class ConfirmConfig {@Beanpublic CachingConnectionFactory connectionFactory() {CachingConnectionFactory factory = new CachingConnectionFactory("localhost");factory.setPublisherConfirms(true);return factory;}@Beanpublic RabbitTemplate rabbitTemplate(CachingConnectionFactory connectionFactory) {RabbitTemplate template = new RabbitTemplate(connectionFactory);template.setConfirmCallback((correlationData, ack, cause) -> {if (ack) {System.out.println("Message confirmed");} else {System.err.println("Message failed: " + cause);}});return template;}
}

http://www.dtcms.com/wzjs/279895.html

相关文章:

  • 苏州网站开发的企业网络营销都有哪些方法
  • 深圳做网站公司 南山专业seo站长工具
  • 短网址服务平台seo点击工具帮你火21星热情
  • 做网站设置时间国内时事新闻
  • 陕西住房建设部网站中国seo
  • 网站开发的软件环境有哪些网站推广策划书模板
  • 香河做网站shijuewang电商推广联盟
  • 招聘网站怎么做介绍苏州首页排名关键词优化
  • 网站建设自己能做吗网站排名分析
  • 开发软件的网站百度免费安装
  • 网站建设如何增加流量自建站平台
  • 个人网站备案麻烦福州百度推广电话
  • 域名注册网站建设百度快速排名提升
  • 建设企业网站服务360推广登陆入口
  • 河北商城网站搭建多少钱湖北百度推广电话
  • 没有网站可以做域名解析吗站长号
  • 外面网站怎么做百度seo排名培训
  • ui设计培训排名磐石网站seo
  • 美食网站开发详细设计绍兴seo公司
  • 科网站建设如何优化关键词的排名
  • 怎样做免费的网站推广深圳优化公司哪家好
  • 我国基层政府网站建设情况东莞关键词优化软件
  • 网站诊断从哪里开始营销推广外包公司
  • 做网站卖赚钱吗安卓系统最好优化软件
  • 网站制作的主要流程百度识图软件
  • 机械网站建设中心seo是什么意思为什么要做seo
  • 建设银行网站理财产品为何不让买百度网址大全旧版安装
  • 用KEGG网站做KEGG富集分析微信指数查询入口
  • 海外 国内网站建设广州seo推广优化
  • 安徽元鼎建设公司网站软文广告经典案例100字