SpringBoot+RabbitMQ整合+简单实例

SpringBoot+RabbitMQ+简单实例


pom.xml 加入依赖。

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>

application.yml RabbitMQ配置

  rabbitmq:
    host: 127.0.0.1 //RabbitServer ip
    port: 8088 //RabbitServer port
    username: guest 
    password: guest
    publisher-confirms: true
    publisher-returns: true
    template.mandatory: true
    exchangeName: hvp_topic_default //自定义exchangeName

RabbitMQConfig 配置类

/**
 * @ClassName RabbitConfig
 * @Description RabbitMQ 配置类
 * @Author FlyingBird
 * @Date 2018/8/2 16:26
 * @Version 1.0
 **/
@Configuration
public class RabbitMQConfig {

    @Value("${spring.rabbitmq.exchangeName}")//读取yml文件配置
    private String exchangeName;

    @Bean(name = "queuePush")//声明一个Queue
    public Queue queuePush() {
        return new Queue("topic.push");
    }

    @Bean(name = "queueEmail")
    public Queue queueEmail() {
        return new Queue("topic.email");
    }

    @Bean
    public TopicExchange exchange() {
        return new TopicExchange(exchangeName);//声明一个topic类型的exchange
    }

    @Bean //绑定
    Binding bindingExchangePush(@Qualifier("queuePush") Queue queuePush, TopicExchange exchange) {
        return BindingBuilder.bind(queuePush).to(exchange).with("topic.push");
    }

    @Bean
    Binding bindingExchangeEmail(@Qualifier("queueEmail") Queue queueEmail, TopicExchange exchange) {
        return BindingBuilder.bind(queueEmail).to(exchange).with("topic.email");// *表示一个词,#表示零个或多个词
    }
}

生产者:

 /**
 * @ClassName Sender
 * @Description 邮件相关生产者
 * @Author FlyingBird
 * @Date 2018/8/3 14:13
 * @Version 1.0
 **/

@Component
@Slf4j
public class EmailSender {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Value("${spring.rabbitmq.exchangeName}")
    private String exchangeName;

    public void sendMessage(String msg) {
        log.info("开始发送消息 sendMessage: " + msg.toLowerCase());
        rabbitTemplate.convertAndSend(exchangeName, "topic.email", msg);
        log.info("结束发送消息 sendMessage: " + msg.toLowerCase());
    }

}

消费者:

/**
 * @ClassName EmailReceiver
 * @Description 邮件相关消费者
 * @Author FlyingBird
 * @Date 2018/8/3 16:27
 * @Version 1.0
 **/

@Component
@Slf4j
public class EmailReceiver {

    @Autowired
    EmailService service;

    @RabbitListener(queues = "topic.email")
    public void process(String message) {
        try {
            log.info("邮件消费者接收到信息:" + message);
            EmailEntity email = JsonUtils.parseObject(message, EmailEntity.class);
            service.sendSimpleMessage(email);
        } catch (RuntimeException e) {
            log.error("Send Email Failed....", e);
            // TODO 邮件发送失败,异常处理
        }
    }
}

就这样一个简单的Springboot+RabbitMQ的简单实现就完成了。

如果有问题,欢迎小伙伴们一起交流讨论,批评指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值