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

网友投稿 516 2023-08-07

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(ZCcTQaJw"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-icExchange(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);http://

}

/**

* 绑定了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协议的队列。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot实现STOMP协议的WebSocket的方法步骤
下一篇:Spring AOP的使用详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~