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

windows搭建网站网站搭建好了怎么上到服务器

windows搭建网站,网站搭建好了怎么上到服务器,大连建设网水电煤气费查询网,如何建设一个查询网站前言 昨天写了一篇关于Java和RabbitMQ使用插件实现延迟队列功能的文章,今天来讲下另外一种方式,不需要RabbitMQ的插件。 前期准备,需要安装好docker、docker-compose的运行环境。 需要安装RabbitMQ的可以看下面这篇文章。 如何使用PHP和R…

前言

昨天写了一篇关于Java和RabbitMQ使用插件实现延迟队列功能的文章,今天来讲下另外一种方式,不需要RabbitMQ的插件。

前期准备,需要安装好docker、docker-compose的运行环境。

需要安装RabbitMQ的可以看下面这篇文章。

如何使用PHP和RabbitMQ实现消息队列?-CSDN博客

使用RabbitMQ插件实现延迟队列功能的文章,可以查看下面的文章。

如何使用Java和RabbitMQ实现延迟队列?-CSDN博客

一、编写代码

1、使用springboot框架快速搭建一个项目。

2、在 pom.xml 中添加 Spring Boot AMQP 的依赖,内容如下。


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

3、在 application.yml 中配置 RabbitMQ 的连接信息,内容如下。

spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest

4、在配置类中定义交换机、队列和绑定,内容如下。

package com.ayzen.hello;import java.util.HashMap;
import java.util.Map;import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMqConfig {@Bean  public Queue delayQueue() {  Map<String, Object> args = new HashMap<>();  args.put("x-dead-letter-exchange", "dlx_exchange"); // 设置死信交换机 args.put("x-dead-letter-routing-key", "dlx_key"); // 设置死信路由  args.put("x-message-ttl", 5000); // 设置默认 TTL(毫秒),也可以动态设置  return new Queue("delay_queue", true, false, false, args);  }  @Bean  public Queue dlxQueue() {  return new Queue("dlx_queue", true);  }  @Bean  public DirectExchange delayExchange() {  return new DirectExchange("delay_exchange");  }  @Bean  public DirectExchange dlxExchange() {  return new DirectExchange("dlx_exchange");  }   @Bean  public Binding binding(Queue delayQueue, DirectExchange delayExchange) {  return BindingBuilder.bind(delayQueue).to(delayExchange).with("dlx_key");  }  @Bean  public Binding dlxBinding(Queue dlxQueue, DirectExchange dlxExchange) {  return BindingBuilder.bind(dlxQueue).to(dlxExchange).with("dlx_key");  }}

5、创建一个生产者,发送一个带有延迟属性的消息,内容如下。

package com.ayzen.hello;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {final Logger logger = LoggerFactory.getLogger(getClass());@AutowiredRabbitTemplate rabbitTemplate;@GetMapping("/send")public ResponseEntity<Object> send() {this.sendDelayMessage("sendDelayMessage", 5000);return ResponseEntity.ok(ResponseDto.success("ok"));}private void sendDelayMessage(String message, long ttlInMilliseconds) {MessageProperties messageProperties = new MessageProperties();messageProperties.setExpiration(Long.toString(ttlInMilliseconds));Message msg = MessageBuilder.withBody(message.getBytes()).andProperties(messageProperties).build();rabbitTemplate.send("delay_exchange", "dlx_key", msg);logger.info("send message to rabbitmq.");}
}

6、创建一个消息者,监听接收队列中的消息,内容如下。

package com.ayzen.learnjava.hello.service;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class TestService {final Logger logger = LoggerFactory.getLogger(getClass());@RabbitListener(queues = "dlx_queue")public void process(String message) {logger.info("process message from rabbitmq,message={}", message);}
}

7、至此,测试项目代码已完成,下一步将进行验证。

二、测试验证

1、启动服务。

2、调用生产者,执行如下代码。

curl http://127.0.0.1:8080/test/send

3、查看日志,正常情况会返回如下内容。

如上图所示,在2024-04-08T10:23:40.478+08:00接收到生产者的请求,然后在2024-04-08T10:23:45.587+08:00执行消费动作,延迟5秒。

4、至此,使用Java和RabbitMQ实现延迟队列的功能已验证完毕。

总结

用Java和RabbitMQ实现消息队列的延迟功能的另外一种方式,其实依靠的是死信交换机,主要有以下几个步骤。

1、配置死信交换机(Dead-Letter-Exchange)。

2、编写Java测试项目。

3、进行测试验证。

上面的代码只是做个简单的示例,如果运用到实际的项目当中需要做进一步的优化。

最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,多多包含,谢谢大家。

http://www.yayakq.cn/news/804921/

相关文章:

  • 浙江融兴建设有限公司网站南京建筑信息平台
  • 网站推广排名收费标准云霄县建设局网站投诉
  • 对个人做swot分析的网站做搜狗手机网站优化快
  • 湘潭响应式网站建设 速来磐石网络网站视频制作
  • 专业网站建设定制wordpress轮播
  • 网页制作网站受众群体分析优化型网站是模板
  • 寻找网站建设员江苏省昆山市网站制作
  • wordpress建网站的优点软件营销网站
  • 天津城市建设管理职业学院网站免费工作总结ppt模板下载
  • 兰州网站seo收费标准广州seo优化外包服务
  • 洛阳洛龙区网站建设做商城网站应该用什么程序
  • 青岛市黄岛区网站建设oa管理系统软件
  • aspnet网站开发实例教程课件企业专业网站设计公
  • 潮州建设网站中信建设有限责任公司招标
  • 网站打不开是为什么wordpress官方安装主题
  • 网站宣传的劣势红色网站 推荐
  • 分类信息网站如何做优化宁波seo搜索引擎优化公司
  • 上海免费推广网站有哪些wordpress挂下载链接
  • 义乌企业网站搭建首选南宁做网站在哪了
  • 口碑营销理论网络网站推广首荐乐云seo
  • 做管理信息的网站数据系统网站建设必要性
  • 企业网站营销的优缺点移动商城网站建设
  • 门户网站采用较多的模式是微信网站搭建价格
  • 我要做网站做网站临泉连锁门店管理系统
  • 嘉兴网站优化联系方式传媒公司运营是干嘛的
  • 网站建设需要的网络技术wordpress按时间获取文章列表
  • 网站必须要实名认证么qq推广功能在哪开
  • 想学做网站报班wordpress前台后台都空白
  • 网站域名服务器查询云南网站建设公司前十名
  • 不备案网站北京营销型网站开发