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协议的队列。

最新文章

  1. 【菜鸟玩Linux开发】通过MySQL自动同步刷新Redis
  2. 10个CSS简写及优化技巧
  3. jsoup-处理html中的script数据
  4. sobel算子的一些细节
  5. html+css做的丝带标签
  6. Java 泛型约束
  7. [荐]javascript Date format(js日期格式化)
  8. UWP开发入门(二十)——键盘弹起时变更界面布局
  9. hadoop2 作业执行过程之作业提交
  10. eclipse(Version: Neon Release (4.6.0))安装hibernate tools
  11. JAAS LOGIN IN WEBLOGIC SERVER--reference
  12. Java---设计模式app小软件汇总应用
  13. PHP的一些天坑
  14. 开发过程中,ps要做的事情
  15. C++读取与保持图片
  16. 关于2-sat的建图方法及解决方案
  17. ThinkPHP getBy动态查询
  18. 55.storm 之 hello word(本地模式)
  19. P2167 [SDOI2009]Bill的挑战
  20. day 08 课后作业

热门文章

  1. Linux基础命令小技巧
  2. git删除中间某次提交
  3. 2019 ICPC上海网络赛 A 题 Lightning Routing I (动态维护树的直径)
  4. HDU-6114
  5. ARTS-S centos修改hostname
  6. Prometheus启动失败的问题
  7. 【全栈修炼】OAuth2 修炼宝典
  8. Laravel 中使用 swoole 项目实战开发案例二 (后端主动分场景给界面推送消息)
  9. Chrome浏览器字体设置低于12px无效
  10. Linux Bash之通配符