RabbitMQ之 邮件处理

RabbitMQ 的邮件处理,本篇这里 就是RabbitMQ的异步处理。

主要三个类, Business , Mail , MailMessageListener 和一个 配置文件 async-context.xml

 

Mail 类是一个 javaBean,不用管:

public class Mail{
    private String from;//发件人
    private String to;//收件人
    private String subject;//邮件标题
    private String content;//邮件内容

类Business 是一个执行类,开始读代码:

  //用户注册
    public void userRegister(){
        //校验用户填写的信息是否完整

        //将用户及相关信息保存到数据库

        //注册成功后发送一条消息表示要发送邮件
        AbstractApplicationContext ctx =
                new ClassPathXmlApplicationContext("async-context.xml");
        RabbitTemplate template = ctx.getBean(RabbitTemplate.class);
        Mail mail = new Mail();
        mail.setTo("12345678@qq.com");
        mail.setSubject("我的一封邮件");
        mail.setContent("我的邮件内容");
        template.convertAndSend(mail);
        ctx.close();
    }
AbstractApplicationContext ctx =
        new ClassPathXmlApplicationContext("async-context.xml"); 是读取async-context.xml"文件
RabbitTemplate template = ctx.getBean(RabbitTemplate.class);是获取对应的发送消息的bean实现

根据xml文件,

<!--配置 RabbitTemplate -->
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory"
                 exchange="mailExchange" routing-key="mail.test" message-converter="jsonMessageConverter"/>

template 得到的是 beanName为amqpTemplate的对象。

使用

template.convertAndSend(mail); 对数据格式做转换 并发送消息, 此时核心的来了:该动作触发了监听类的操作,触发了实际发送邮件的操作。
<!--配置 RabbitTemplate -->
    <rabbit:template id="amqpTemplate" connection-factory="connectionFactory"
                     exchange="mailExchange" routing-key="mail.test" message-converter="jsonMessageConverter"/>

    <!--配置 RabbitAdmin -->
    <rabbit:admin connection-factory="connectionFactory"/>

    <!--配置队列名-->
    <rabbit:queue name="mailQueue"/>

    <!--配置 Exchange -->
    <rabbit:topic-exchange name="mailExchange">
        <rabbit:bindings>
            <rabbit:binding queue="mailQueue" pattern="mail.*"/>
        </rabbit:bindings>
    </rabbit:topic-exchange>

    <!--配置监听-->
    <rabbit:listener-container connection-factory="connectionFactory">
        <rabbit:listener ref="mailMessageListener" queue-names="mailQueue" />
    </rabbit:listener-container>

可以看到 amqpTemplate关联mailExchange , mailExchange关联mailQueue, mailMessageListener监听的是mailQueue队列,

类MailMessageListener 实现的是 MessageListener接口,所以执行的 最后结果是

 

 

 

代码:

git@github.com:tuyf/rabbitMQ.git

目录结构问题,麻烦自行处理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值