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

石家庄今日重大新闻事件教程推广优化网站排名

石家庄今日重大新闻事件,教程推广优化网站排名,茌平网站建设费用,图片制作器app背景 这里后补直接上代码 最佳实践 主要从两个方面保证消息不丢失 RabbitMQ方面 创建队列时开启持久化创建交换器时开启持久化创建镜像队列(可选)开启延迟队列(可选) 代码层面 开启生产者到交换器回调参数开启交换器到队列…

背景

这里后补直接上代码

最佳实践

主要从两个方面保证消息不丢失

RabbitMQ方面

  1. 创建队列时开启持久化
  2. 创建交换器时开启持久化
  3. 创建镜像队列(可选)
  4. 开启延迟队列(可选)

代码层面

  1. 开启生产者到交换器回调参数
  2. 开启交换器到队列回调参数
  3. 开启消费者手动ack
  4. 注意消费端打印日志,考虑手动补偿(可选)

实现代码

RabbitMQ配置文件

package com.jndj.core.config;import com.rabbitmq.client.ConnectionFactory;
import org.springframework.amqp.core.AcknowledgeMode;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;@Configuration
@EnableAutoConfiguration
public class RabbitMQAutoConfiguration {@Value("${spring.rabbitmq.host}")public String rmHost;@Value("${spring.rabbitmq.port}")public int rmPort;@Value("${spring.rabbitmq.username}")public String rmUsername;@Value("${spring.rabbitmq.password}")public String rmPassword;@Value("${spring.rabbitmq.virtual-host}")public String virtualHost;@Beanpublic CachingConnectionFactory connectionFactory() throws NoSuchAlgorithmException, KeyManagementException {ConnectionFactory rabbitConnectionFactory = new ConnectionFactory();rabbitConnectionFactory.setHost(rmHost);rabbitConnectionFactory.setPort(rmPort);rabbitConnectionFactory.setUsername(rmUsername);rabbitConnectionFactory.setPassword(rmPassword);rabbitConnectionFactory.setVirtualHost(virtualHost);rabbitConnectionFactory.useSslProtocol();CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(rabbitConnectionFactory);cachingConnectionFactory.setPublisherReturns(true);cachingConnectionFactory.setPublisherConfirms(true);return cachingConnectionFactory;}@Beanpublic RabbitTemplate rabbitTemplate(CachingConnectionFactory connectionFactory) {RabbitTemplate rabbitTemplate = new RabbitTemplate();rabbitTemplate.setConnectionFactory(connectionFactory);rabbitTemplate.setMandatory(true);rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {@Overridepublic void confirm(CorrelationData correlationData, boolean ack, String cause) {System.out.println("ConfirmCallback:     " + "相关数据:" + correlationData);System.out.println("ConfirmCallback:     " + "确认情况:" + ack);System.out.println("ConfirmCallback:     " + "原因:" + cause);}});rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() {@Overridepublic void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {System.out.println("ReturnCallback:     " + "消息:" + message);System.out.println("ReturnCallback:     " + "回应码:" + replyCode);System.out.println("ReturnCallback:     " + "回应信息:" + replyText);System.out.println("ReturnCallback:     " + "交换机:" + exchange);System.out.println("ReturnCallback:     " + "路由键:" + routingKey);}});rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());return rabbitTemplate;}@Beanpublic SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(CachingConnectionFactory connectionFactory) {SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);return factory;}}

生产者

    public AjaxResult insertStuResults(@RequestBody MyoResults model) {try {rabbitTemplate.convertAndSend(RabbitMQConstant.EX_STU_RESULTS_MANUAL, RabbitMQConstant.Q_STU_RESULTS_MANUAL, model);return AjaxResult.success("上送成功");} catch (Exception e) {return AjaxResult.error(e.getMessage());}}

消费者

    @RabbitListener(queues = RabbitMQConstant.Q_STU_RESULTS_MANUAL)@RabbitHandlerpublic void getManualMsg(Message message, Channel channel) throws IOException {String jsonString = new String(message.getBody(), StandardCharsets.UTF_8);ObjectMapper objectMapper = new ObjectMapper();MyoResults model = objectMapper.readValue(jsonString, MyoResults.class);iStuResultsService.insertMongodb(model);channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);}
http://www.dtcms.com/wzjs/449581.html

相关文章:

  • 网站制作需要什么资料2345导航网址
  • WordPress设置登录后搜索北京网站优化外包
  • 青岛seoseo优化网络推广
  • 网站访问加速器东莞做网站优化
  • 设计头条app官方网站合肥seo优化公司
  • 日本网站配色优化网站界面的工具
  • seo推广用什么做网站好长沙网站推广 下拉通推广
  • 上海专业网站建设公短视频seo
  • 手机网站开发 视频已备案域名购买平台
  • 百度推广需要自己做网站吗域名解析查询
  • 用ae做模板下载网站seo网站排名优化教程
  • 武汉市硚口区建设局网站代哥seo
  • 宜昌教育培训网站建设企业网站管理系统怎么操作
  • 网站建设趋势优化设计六年级上册语文答案
  • 建设官方网站的作用seo是指什么意思
  • wordpress建网站详细教程关键词查询工具免费
  • zencart 网站怎么营销自己的产品
  • 高端网站建设 飞沐免费s站推广网站
  • android studio安卓版免费seo网站推荐一下
  • 网站建设的论文小红书推广引流
  • 颜色搭配的网站网站视频
  • 网站怎么做本地测试seo关键字优化
  • 网站开发都是用什么框架昆明百度推广优化
  • 换网站后台seo优化专员编辑
  • 免费的网站建设口碑营销的定义
  • 精品网站开发游戏网站交换友情链接
  • 上海材料网站建设全国病毒感染最新消息
  • 姚孟信通网站开发中心搜索引擎的工作原理有哪些
  • u网站建设2024年的新闻
  • 厦门建设局网站百度网址大全