【RabbitMQ】——Hello World Demo

Hello World Demo

首先 RabbitMQ 分为3部分,生产端,消费者,RabbitMQ端。其中又有4个重要的概念:_虚拟机,交换机,队列 和绑定_。

所以我们需要写 :

  1. 生产端:即生产者到RabbitMQ的连接,以及消息的发送。
  2. 消费端:即消费者对RabbitMQ的监听以及消息的接受。
  3. RabbitMQ部分:即定义队列,定义交换机,以及定义队列和交换机的绑定。

如下代码:

定义队列

@Bean
Queue queue() {
    return new Queue(queueName, false);
}

定义交换机

@Bean
TopicExchange exchange() {
    return new TopicExchange("spring-boot-exchange");
}

这里定义了 Topic 类型的交换机,同样的也可以定义其他类型。

定义绑定

@Bean
Binding binding(Queue queue, TopicExchange exchange) {
    return BindingBuilder.bind(queue).to(exchange).with(queueName);
}

由下图可以知,交换机与队列之间是有一个绑定关系,根据绑定的关系,我们才能把消息准确的通过交换机发送到队列中。

bindingkey

定义 ConnectionFactory

ConnectionFactory 的意义在于,我们可以在这里设置 Rabbitmq的地址,端口,用户名,密码,虚拟机等等基本信息,然后再把该 ConnectionFactory 注入到 生产者和消费者中,_这样就完成了 消费者和生产者到 RabbitMQ的连接_。如下代码:

@Bean
ConnectionFactory connectionFactory() {
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory("127.0.0.1", 5672);
    connectionFactory.setUsername("guest");
    connectionFactory.setPassword("guest");
    connectionFactory.setPublisherConfirms(true); // enable confirm mode
    return connectionFactory;
}

定义消费者监听RabbitMQ队列

@Bean
SimpleMessageListenerContainer container(ConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {

    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    container.setQueueNames(queueName);
    container.setMessageListener(listenerAdapter);
    return container;
}

@Bean
Receiver receiver() {
    return new Receiver();
}

@Bean
MessageListenerAdapter listenerAdapter(Receiver receiver) {
    return new MessageListenerAdapter(receiver, "receiveMessage");
}
public class Receiver {
    public void receiveMessage(String message) {
        System.out.println("Received <" + message + ">");
    }
}

MessageListenerAdapter 作用,参考:点这里

定义生产者

@RestController
public class Producer {

    @Autowired
    RabbitTemplate rabbitTemplate;

    @RequestMapping(value = "/test/{abc}",method = RequestMethod.GET)
    public String test(@PathVariable(value = "abc") String abc){

        rabbitTemplate.convertAndSend("spring-boot-exchange","spring-boot", abc + " from RabbitMQ!");
        return  "abc";
    }
}

RabbitTemplate 是 spring 帮我们的一个封装,我们使用该对象提供的方法即可发送消息。默认情况下 RabbitTemplate 连接本机的 5672 端口的 rabbitmq,如果需要连接其他地方,那么我们可以自己重写 RabbitTemplate 的生成,再注入使用即可。

以上便是 RabbitMQ 的 Hello World Demo,具体完整代码可以参考:点这里

猜你喜欢

转载自blog.csdn.net/u012654963/article/details/77417138