栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring中使用RabbitMQ

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring中使用RabbitMQ

问题

最近项目中需要在Spring中使用RabbitMQ进行消息的推送和监听。

概念

在RabbitMQ中,主要有Exchange,Routing Key,Queue,这3个概念。
消息生产者将消息给Exchange,Exchange根据Routing Key与Queue的路由绑定规则来,判定哪些消息去哪些Queue。消息消费者监听Queue就阔以了。

步骤 Maven

    org.springframework.boot
    spring-boot-starter-amqp

properties

单机版配置如下:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

托管版配置如下:

spring:
  rabbitmq:
    virtual-host: feature1
    addresses: xxx.com
    username: guest
    password: guest
Java
import org.springframework.amqp.support.converter.MessageConverter;

@SpringBootApplication
public class Application {
    ...

    @Bean
    MessageConverter createMessageConverter() {
        return new Jackson2JsonMessageConverter();
    }
}
推送消息

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;

@Slf4j
@Service
public class MessagingServiceImpl implements MessagingService {
 ...
    @Value("${exchange.xxx.xxx:xxx.exchange}")
    private String exchange;

    @Value("${routing.key.xxx.xxx:xxx.routing.key}")
  private String routingKey;

  @Resource private RabbitTemplate rabbitTemplate;
  

  @Override
  public void sendMessage(String message) {
    rabbitTemplate.convertAndSend(exchange, routingKey, message);
  }

  ...
}

推送消息的时候,主要使用RabbitTemplate,只要知道Exchange,Routing Key就可以进行消息推送了,并不需要了解是推送到那个队列。

监听消息
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;

@Slf4j
@Service
public class MessagingServiceImpl implements MessagingService {
  
  private final String QUEUE = "xxxx.queue";

    ....

  @Override
  @RabbitListener(queues = QUEUE)
  public void receiveQueue(String message) {
    log.info("queue {} received registration message: {}", QUEUE, message);
    ....
  }

  
}

监听消息的时候,只需要使用@RabbitListener(queues = xxx)进行消息队列监听就阔以了,并不需要了解Exchange,Routing Key。

总结

Spring amqp中使用RabbitMQ的消息发送和监听,主要就是使用RabbitTemplate和@RabbitListener注解。

参考:
  • RabbitMQ 组件和架构
  • Logging Subsystem AMQP Appenders
  • 集成RabbitMQ
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号