您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何在spring單元測試中模擬rabbitmq,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
gradle添加引用
compile 'org.springframework.boot:spring-boot-starter-amqp' testCompile 'com.github.fridujo:rabbitmq-mock:1.0.10'
添加bean對(duì)象
/** * 模擬rabbitmq. */ @ActiveProfiles("test") @Component public class RabbitMqMock { @Bean public ConnectionFactory connectionFactory() { return new CachingConnectionFactory(MockConnectionFactoryFactory.build()); } }
添加測試的隊(duì)列
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"; /** * 創(chuàng)建普通交換機(jī). */ @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,一個(gè)routekey可以被多個(gè)隊(duì)列綁定,類似于廣播. * * @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; /** * 發(fā)送撥打電話消息. */ 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("從隊(duì)列拿到數(shù)據(jù) :{}", data); } catch (Exception ex) { logger.error("簽約同步異常", ex); } }
關(guān)于如何在spring單元測試中模擬rabbitmq就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。