【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,具体完整代码可以参考:点这里

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值