java 模拟实现mq,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协议的队列。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值