热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

spring单元测试下模拟rabbitmq的实现

这篇文章主要介绍了spring单元测试下模拟rabbitmq的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

gradle添加引用

compile   'org.springframework.boot:spring-boot-starter-amqp'
testCompile 'com.github.fridujo:rabbitmq-mock:1.0.10'

添加bean对象

/**
 * 模拟rabbitmq.
 */
@ActiveProfiles("test")
@Component
public class RabbitMqMock {
 @Bean
 public ConnectionFactory connectionFactory() {
  return new CachingConnectionFactory(MockConnectionFactoryFactory.build());
 }
}

添加测试的队列

public static final String LIND_EXCHANGE = "test.basic.exchange";
 public static final String LIND_QUEUE_ROUTEKEY = "test.basic.*";
 public static final String LIND_QUEUE_ROUTEKEY1 = "test.basic.a1";
 public static final String LIND_QUEUE_ROUTEKEY2 = "test.basic.a2";
 
 /**
  * 创建普通交换机.
  */
 @Bean
 public TopicExchange lindExchange() {
  return (TopicExchange) ExchangeBuilder.topicExchange(LIND_EXCHANGE).durable(true)
    .build();
 }

 @Bean
 public Queue key1() {
  return new Queue(LIND_QUEUE_ROUTEKEY1);
 }

 @Bean
 public Queue key2() {
  return new Queue(LIND_QUEUE_ROUTEKEY2);
 }

 /**
  * 绑定了routekey,一个routekey可以被多个队列绑定,类似于广播.
  *
  * @return
  */
 @Bean
 public Binding bindBuildersRouteKey1() {
  return BindingBuilder.bind(key1())
    .to(lindExchange())
    .with(LIND_QUEUE_ROUTEKEY);
 }

 /**
  * bind.
  *
  * @return
  */
 @Bean
 public Binding bindBuildersRouteKey2() {
  return BindingBuilder.bind(key2())
    .to(lindExchange())
    .with(LIND_QUEUE_ROUTEKEY);
 }
 @Autowired
 private RabbitTemplate rabbitTemplate;

 /**
  * 发送拨打电话消息.
  */
 public void publish(String message) {
  try {
   rabbitTemplate
     .convertAndSend(MqConfig.LIND_EXCHANGE, MqConfig.LIND_QUEUE_ROUTEKEY,
       message);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
  /**
  * subscriber.
  *
  * @param data .
  */
 @RabbitListener(queues = MqConfig.LIND_DEAD_QUEUE)
 public void customerSign(String data) {
  try {

   logger.info("从队列拿到数据 :{}", data);

  } catch (Exception ex) {
   logger.error("签约同步异常", ex);
  }
 }

总结:通过上面的几行代码,我们可以对rabbitmq队列在测试环境中去模拟,方便了我们的测试,而这种方法比 org.apache.qpid:qpid-broker:6.1.2 这个包要方便的多,当然这个包也支持其它的qpid协议的队列。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.qpid.server.model.VirtualHost 类的 closeAsync() 方法,提供了具体的代码示例和应用场景。通过这些示例,读者可以更好地理解和使用该方法。 ... [详细]
  • 本文详细介绍了Java中org.apache.logging.log4j.spi.AbstractLogger类的logIfEnabled()方法,包括其功能、参数说明及实际代码示例。通过这些示例,读者可以更好地掌握如何在项目中使用该方法进行日志记录。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • This pull request introduces the ability to provide comprehensive paragraph configurations directly within the Create Note and Create Paragraph REST endpoints, reducing the need for additional configuration calls. ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • 在Java编程中,将字符串转换为整数类型时,必须确保该字符串表示的数值在int类型的取值范围内。如果超出范围,将会抛出异常。本文介绍如何安全地进行这种转换,并提供详细的代码示例。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
author-avatar
印大大
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有