SpringBoot+RabbitMQ(官方案例)

  1. 在线文档
  2. 项目结构
    1.源码克隆:git clone https://github.com/spring-guides/gs-messaging-rabbitmq.git
    2.包含两个项目initial和complete,initial可以根据文档练习完善,complete是完整项目
    3.功能描述:构建应用程序,SpringBoot 与 RabbitMQ 服务器交互,实现消息的订阅与发布
    4.RabbitMQ:https://blog.csdn.net/tongxin_tongmeng/article/details/128418388

    SpringBoot+RabbitMQ(官方案例)_第1张图片

  3. 源码分析

    1.POM依赖
    
    	
    		org.springframework.boot
    		spring-boot-starter-amqp
    	
    	
    	
    		org.springframework.boot
    		spring-boot-starter-test
    		test
    	
    	
    		org.springframework.amqp
    		spring-rabbit-test
    		test
    	
    
    2.入口类
    // https://blog.csdn.net/tongxin_tongmeng/article/details/128401278
    @SpringBootApplication
    public class MessagingRabbitmqApplication {
    
    	static final String topicExchangeName = "spring-boot-exchange";
    
    	static final String queueName = "spring-boot";
    
    	@Bean
    	Queue queue() {
    		return new Queue(queueName, false);
    	}
    
    	@Bean
    	TopicExchange exchange() {
    		return new TopicExchange(topicExchangeName);
    	}
    
    	@Bean
    	Binding binding(Queue queue, TopicExchange exchange) {
    		return BindingBuilder.bind(queue).to(exchange).with("foo.bar.#");
    	}
    
    	@Bean
    	SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,
    			MessageListenerAdapter listenerAdapter) {
    		SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    		container.setConnectionFactory(connectionFactory);
    		container.setQueueNames(queueName);
    		container.setMessageListener(listenerAdapter);
    		return container;
    	}
    
    	@Bean
    	MessageListenerAdapter listenerAdapter(Receiver receiver) {
    		return new MessageListenerAdapter(receiver, "receiveMessage");
    	}
    
    	public static void main(String[] args) throws InterruptedException {
    		SpringApplication.run(MessagingRabbitmqApplication.class, args).close();
    	}
    
    }
    3.发送消息
    @Component
    public class Runner implements CommandLineRunner {
    
    	private final RabbitTemplate rabbitTemplate;
    	private final Receiver receiver;
    
    	public Runner(Receiver receiver, RabbitTemplate rabbitTemplate) {
    		this.receiver = receiver;
    		this.rabbitTemplate = rabbitTemplate;
    	}
    
    	@Override
    	public void run(String... args) throws Exception {
    		System.out.println("Sending message...");
    		rabbitTemplate.convertAndSend(MessagingRabbitmqApplication.topicExchangeName, "foo.bar.baz", "Hello from RabbitMQ!");
    		receiver.getLatch().await(10000, TimeUnit.MILLISECONDS);
    	}
    
    }
    4.接收消息
    @Component
    public class Receiver {
    
    	private CountDownLatch latch = new CountDownLatch(1);
    
    	public void receiveMessage(String message) {
    		System.out.println("Received <" + message + ">");
    		latch.countDown();
    	}
    
    	public CountDownLatch getLatch() {
    		return latch;
    	}
    
    }
  4. 项目演示
    SpringBoot+RabbitMQ(官方案例)_第2张图片

你可能感兴趣的:(SpringBoot,java,spring,spring,boot,rabbitmq,maven)