基于两个项目 之间的RabbitMQ 发送和接收,并调用邮件接口,发送邮件

RabbitMQ 消息队列 目录1. 消息队列的作用:解耦;削峰;异步1.1 解耦:不需要考虑消费者的问题。1.2 异步:更节省时间。1.3 削峰:减轻数据库压力。2. RabbitMQ的安装:2.1 下载RabbitMQ2.2 下载Erlang 1. 消息队列的作用:解耦;削峰;异步 1.1 解耦:不需要考虑消费者的问题。 1.2 异步:更节省时间。 1.3 削峰:减轻数据库压力。 2. RabbitMQ的安装: 2.1 下载RabbitMQ https://www.rabbitmq.com/install-windows.h 阅读详情

项目源码 下载
第一个项目:qucik4j 下载地址:https://github.com/ZhangHLong/quick4j
作用: 定时监控指定服务端口是否异常,发生异常,会发送MQ消息 通知email-server服务。

第二个项目:email-server 下载地址:https://github.com/ZhangHLong/email-server
作用:监听消息,发送邮件通知。

参考资料:
1.http://blog.youkuaiyun.com/heyutao007/article/details/50131089
2.http://mp.weixin.qq.com/s?__biz=MzIxMjAzMDA1MQ==&mid=2648945635&idx=1&sn=966633eeba2567e7759b597e43568054&chksm=8f5b54efb82cddf9678821ad9708fc404c087034471f3385ccac09dae0392a146b3673e3ccbd#rd
重要环节步骤

1.rabbitMQ 的下载安装

注意,启动项目之前一定要先开启该服务。

这里写图片描述

确认开启后,访问:http://127.0.0.1:15672/ 会进入

这里写图片描述

2. qucik4j 项目准备

qucik4j 是一个快速搭建基础项目的 种子项目,新手可以快速搭建项目,这里不在多说,有兴趣的可以搜索一下。

项目结构:

这里写图片描述

2.1 rabbitmq 连接服务配置

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:rabbit="http://www.springframework.org/schema/rabbit"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/rabbit
    http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">

    <description>rabbitmq 连接服务配置</description>

    <!-- 连接配置 -->
    <rabbit:connection-factory id="connectionFactory" host="127.0.0.1" username="guest" password="guest" port="5672"
                               virtual-host="/"/>

    <rabbit:admin connection-factory="connectionFactory"/>
    <!--消息对象json转换类  -->
    <bean id="jsonMessageConverter" class="com.eliteams.quick4j.web.utils.FastJsonMessageConverter"/>
    <!-- spring template声明-->
    <rabbit:template exchange="test-mq-exchange" id="amqpTemplate" connection-factory="connectionFactory"
                     reply-timeout="30000" message-converter="jsonMessageConverter"/>

    <!-- 声明一个Que -->
    <rabbit:queue id="test_queue" name="test_queue" durable="true" auto-delete="false" exclusive="false"/>
    <!--声明2个发布订阅的队列-->
    <rabbit:queue id="test_fanout_queue" name="test_fanout_queue" durable="true" auto-delete="false" exclusive="false"/>
    <rabbit:queue id="test_fanout_queue_other" name="test_fanout_queue_other" durable="true" auto-delete="false" exclusive="false"/>
    <!--
        durable:是否持久化
        exclusive: 仅创建者可以使用的私有队列,断开后自动删除
        auto_delete: 当所有消费客户端连接断开后,是否自动删除队列
     -->
    <!-- 声明一个Exchange direct 点对点方式 -->
    <rabbit:direct-exchange name="test-mq-exchange" durable="true" auto-delete="false" id="test-mq-exchange">
        <rabbit:bindings>
            <rabbit:binding queue="test_queue" key="test_queue"/>
        </rabbit:bindings>
    </rabbit:direct-exchange>
    <!-- 声明一个Exchange 广播发布订阅 方式 ,与该交换机绑定的队列均会收到消息,绑定队列 test_fanout_queue 和 test_fanout_queue_other -->
    <rabbit:fanout-exchange name="test-fanoutmq-exchange" durable="true" auto-delete="false" id="test-fanoutmq-exchange">
       <rabbit:bindings>
           <rabbit:binding queue="test_fanout_queue" ></rabbit:binding>
           <rabbit:binding queue="test_fanout_queue_other"></rabbit:binding>
       </rabbit:bindings>
    </rabbit:fanout-exchange>

</beans>

2.2 核心监控代码

package com.eliteams.quick4j.web.listenner;

import com.eliteams.quick4j.web.notifyauthor.EmailUtil;
import com.eliteams.quick4j.web.notifyauthor.MailEntity;
import com.eliteams.quick4j.web.service.RabbitMQSendService;
import com.eliteams.quick4j.web.service.impl.RabbitMQSendServiceImpl;
import com.eliteams.quick4j.web.utils.BaseinfoMessage;
import com.eliteams.quick4j.web.utils.JsonUtils;
import com.eliteams.quick4j.web.utils.SpringContext;
import org.apache.commons.net.telnet.TelnetClient;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.integration.Message;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.annotation.Resource;
import javax.servlet.ServletContext;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;
public class ListennerTask extends TimerTask{
//    @Resource
//    private RabbitMQSendService rabbitMQSendService;
    //引入spring bean
    RabbitMQSendService rabbitMQSendService = (RabbitMQSendService) SpringContext.getContext().getBean("rabbitMQSendService");

    private static  final int SERVER_PORT = 8092;
    private static  final String SERVER_IP = "222.185.124.100";
    private int count = -1;
    TelnetClient telnet ;
    @Override
    public void run() {
        count++;
        RequestHospServerListenner requestHospServerListenner = null;
        if (count > 0 ){
            telnet = new TelnetClient();
            try {
                telnet.connect(SERVER_IP,SERVER_PORT);
                System.out.println("时间:"+ timeConvent(System.currentTimeMillis()) +"请求开始执行,第"+ (count)+"次,服务端口正常开启");
            } catch (IOException e) {
                Date time = new Date();
                String msgtext = time + "\n" + SERVER_IP + ":" + SERVER_PORT + " is not reachable!";
                System.out.println("时间:"+ timeConvent(System.currentTimeMillis()) +"请求开始执行,第"+ (count)+"次,服务端口开启异常,"+msgtext);

                //发送mq消息
                //包装消息
                BaseinfoMessage baseinfoMessage = new BaseinfoMessage();
                baseinfoMessage.setEmailAddress("18358110561@163.com");

                // 指定 routingkey
                rabbitMQSendService.sendData("test_queue",baseinfoMessage);
                //fanout 广播发布订阅 指定发布消息到 该交换机上,与该交换机绑定的队列均会收到消息
                rabbitMQSendService.sendData("test-fanoutmq-exchange",null,baseinfoMessage);
            }


            requestHospServerListenner = new RequestHospServerListenner();
        }
    }

    public String timeConvent(long str){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        long ltime = new Long(str);
        Date date = new Date(ltime);
        String s = simpleDateFormat.format(date);

        return s;
    }
}

2.3 发送完消息可以到 web端查看
2.3.1 queues

这里写图片描述

2.3.2 队列内部详细信息
这里写图片描述
这里写图片描述
2.3.3 查看发送的消息内容
这里写图片描述

3.消息接收服务应用 email-server

项目结构目录:

这里写图片描述

3.1 消息接收端的配置 springrabbit.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/rabbit
     http://www.springframework.org/schema/rabbit/spring-rabbit-1.2.xsd">
    <!--配置connection-factory,指定连接rabbit server参数 -->
    <rabbit:connection-factory id="connectionFactory" username="guest" password="guest" host="127.0.0.1" port="5672" />
    <!--定义rabbit template用于数据的接收和发送 -->
    <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="exchangeTest"/>

    <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->
    <rabbit:admin id="connectAdmin" connection-factory="connectionFactory"/>
    <!-- 消息对象json转换类 -->
    <bean id="jsonMessageConverter" class="com.huilong.emailserver.util.FastJsonMessageConverter" />

    <!--定义queue -->
    <rabbit:queue name="test_queue" durable="true" auto-delete="false" exclusive="false" declared-by="connectAdmin"/>

    <!-- 定义direct exchange,绑定test_queue 其实这里没有必要做绑定,消费者 只关心监听的队列即可,消息由上游服务决定发送与否 ,不过这里也添加了绑定,为的是清晰点-->
    <rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false" declared-by="connectAdmin">
        <rabbit:bindings>
            <rabbit:binding queue="test_queue" key="test_queue"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:direct-exchange>
    <!-- 消息接收者 -->
    <bean id="messageReceiver" class="com.huilong.emailserver.consumer.MessageDirectConsumer" ></bean>

    <!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象;注意这里监听的队列 应该保持和 消息发送者端定义的一样-->
    <rabbit:listener-container connection-factory="connectionFactory" message-converter="jsonMessageConverter" >
        <rabbit:listener queues="test_queue" ref="messageReceiver"/>
    </rabbit:listener-container>



    <!--定义 发布订阅 queue -->
    <rabbit:queue name="test_fanout_queue" durable="true" auto-delete="false" exclusive="false" declared-by="connectAdmin"/>

    <!-- 消息接收者 -->
    <bean id="receiverFanout" class="com.huilong.emailserver.consumer.MessageFanoutConsumer"></bean>

    <!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
    <rabbit:listener-container connection-factory="connectionFactory">
        <rabbit:listener queues="test_fanout_queue" ref="receiverFanout"/>
    </rabbit:listener-container>



    <!-- ###############################################################分割线关于模糊匹配 暂时没有写代码 后续 再搞,最近比较忙 ########################################################## -->


    <!--配置connection-factory,指定连接rabbit server参数 -->
    <rabbit:connection-factory id="connectionFactory2"
                               username="guest" password="guest" host="127.0.0.1" port="5672"/>

    <!--定义rabbit template用于数据的接收和发送 -->
    <rabbit:template id="amqpTemplate2" connection-factory="connectionFactory2"
                     exchange="exchangeTest2"/>

    <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->
    <rabbit:admin id="connectAdmin2" connection-factory="connectionFactory2"/>

    <!--定义queue -->
    <rabbit:queue name="direct_test_queue" durable="true" auto-delete="false" exclusive="false" declared-by="connectAdmin2"/>

    <!-- 定义direct exchange,绑定queueTest -->
    <rabbit:topic-exchange name="exchangeTest2" durable="true" auto-delete="false" declared-by="connectAdmin2">
        <rabbit:bindings>
            <rabbit:binding queue="direct_test_queue" pattern="direct.*"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:topic-exchange>

    <!-- 消息接收者 -->
    <bean id="recieverDirectQueue" class="com.huilong.emailserver.consumer.MessageTopicConsumer"></bean>

    <!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
    <rabbit:listener-container connection-factory="connectionFactory2" >
        <rabbit:listener queues="direct_test_queue" ref="recieverDirectQueue"/>
    </rabbit:listener-container>
</beans>

3.2核心监听处理代码

package com.huilong.emailserver.consumer;

import com.huilong.emailserver.server.email.EmailListennerService;
import com.huilong.emailserver.util.BaseinfoMessage;
import com.huilong.emailserver.util.FastJsonMessageConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * Desc:监听 发布订阅方式的q
 * Author: zhanghl2
 * Date: 2016/11/28
 * Time: 15:48
 * Version:
 */
public class MessageFanoutConsumer implements MessageListener{
    private Logger logger = LoggerFactory.getLogger(MessageFanoutConsumer.class);
    // 邮件服务
    @Autowired
    private  EmailListennerService emailListennerService;
    @Override
    public void onMessage(Message message) {
        logger.info("consumer receive message------->:{}", message);
        BaseinfoMessage messageObject = new BaseinfoMessage();
        // 转换为java对象
        FastJsonMessageConverter jsonMessageConverter = new FastJsonMessageConverter();
        messageObject= jsonMessageConverter.fromMessage(message,messageObject);
        // 发送 邮件 ,发送方式 fanout 
        emailListennerService.send(messageObject.getEmailAddress(),"fanout");
    }
}

1.问题点:
消息的接收 处理过程,之前在网上看到很多使用的是

 <!--消息对象json转换类  org.springframework.amqp.support.converter.Jackson2JsonMessageConverter-->
<bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" />

**具体实现代码:**
/**
 * direct
 * 监听mq消息
 */
public class MessageDirectConsumer implements MessageListener {
    private Logger logger = LoggerFactory.getLogger(MessageDirectConsumer.class);
    @Autowired
    private EmailListennerService emailListennerService;
    @Autowired
    private Jackson2JsonMessageConverter jsonMessageConverter;
    @Override
    public void onMessage(Message message) {
        logger.info("consumer receive message------->:{}", message);

        BaseinfoMessage messageObject = new BaseinfoMessage();
        // 这一步发生了异常
        messageObject = (BaseinfoMessage) jsonMessageConverter.fromMessage(message);

        emailListennerService.send(messageObject.getEmailAddress());
    }
}

这种配置 适合在同一个项目中接收消息。不同项目引用的对象不能共用(有其他方法可以解决,这里不多说了),导致了我这个异常。我在使用这个方法的时候遇到的问题是 消息发送端发送的消息解析的时候,会发生Class not Found 异常。源码我看了下:
这里写图片描述

如有 错误或不恰当之处,还请广大 T 才指出,帮助你我共同成长!!

Python之Rabbitmq发送消息 欢迎关注【无量测试之道】公众号,回复【领取资源】, Python编程学习资源干货、 Python+Appium框架APP的UI自动化、 Python+Selenium框架Web的UI自动化、 Python+Unittest框架API自动化、 资源和代码 免费送啦~ 文章下方有公众号二维码,可直接微信扫一扫关注即可。 1、什么是Rabbitmq? Rabbitmq是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。 MQ全称为Messag. 阅读详情

相关推荐

Springboot 整合RabbitMq ,用心看完这一篇就够了

该篇文章内容较多,包括有rabbitMq相关的一些简单理论介绍,provider消息推送实例,consumer消息消费实例,Direct、Topic、Fanout的使用,消息回调、手动确认等。 (但是关于rabbitMq的安装,就不介绍了) 在安装完rabbitMq后,输入http://ip:15672/,是可以看到一个简单后台管理界面的。 在这个界面里面我们可以做些什么? 可以手动创建............

默默不代表沉默 50万+

springboot中rabbitmq集成——多项目

这里以两个项目为例,一个消息的生产者,一个消息的消费者,接着上篇单项目的讲。目录结构: rabbitmq作为消息生产者,发送消息。rabbitmqreceiver消息的接收者,消费消息。 发送字符串的时候在两个项目之间是没问题的,大家可以自己测试。发送端代码: public void run(String... args) throws Exception { User us

坤哥的博客 4603

Android开发者必看:5分钟搞定DeepSeek API接入(附完整代码示例)

本文为Android开发者提供快速接入DeepSeek API的完整指南,包含环境配置、网络层设计、请求体构建等关键步骤,并附有详细代码示例。通过工程化实践,帮助开发者高效集成AI对话、代码生成等高级功能,提升移动应用竞争力。

bush的博客 541

SpringCloud-Alibaba之Nacos多环境多项目管理,rabbitmq分布式事务实现原理

继续创建配置文件Data ID为:goods-consumer.yml, Group为:TEST_GROUP, 其配置如下: 这里的两个配置文件他们的DataID相同但是Group不同 修改项目中的配置文件bootstrap.yml 在config下增加一条group的配置,指定配置文件所在的group,可配置为DEV_GROUP或TEST_GROUP 启动测试 启动参数将group配置为DEV_GROUP或TEST_GROUP启动进行测试,请求URL,得到不同Group配置的值 Namespace

m0_54852680的博客 1761

医学图像分割实战:基于TransUNet训练自己的眼底硬渗出物数据集(附完整代码)

本文详细介绍了基于TransUNet的眼底硬渗出物分割实战指南,涵盖数据预处理、模型调优、训练策略及性能优化等关键环节。通过代码复现和实验对比,展示了TransUNet在医学图像分割中的优势,为糖尿病视网膜病变的早期诊断提供技术支持。

weixin_42524708的博客 364

ROS探索篇(一)在Gazebo中实现移动机器人仿真与环境搭建

$x+y=z$

weixin_52029211的博客 4623

RabbitMQ | SpringBoot集成多个RabbitMQ

在开发过程中需要对接多个系统的RabbitMQ连接,所以需要自己创建RabbitMQ连接,以下demo项目中用两个RabbitMQ做了演示,项目中包含了五种模式的消息发送以及消息接收代码有点多如果看不下去可以直接将项目拉下来参考RabbitMQ简介httpsDemo项目gitee地址https/***默认MQip/***默认MQ端口/***默认MQ用户名/***默认MQ密码/***MQ2ip/***MQ2端口/**https。.........

苏老师的博客 2361

logisim实验六:MIPS运算器设计

实验目的 学生理解算术逻辑运算单元(ALU)的基本构成,掌握 Logisim 中各种运算组件的使用方法,熟悉多路选择器的使用,能利用前述实验完成的 32 位加法器、 Logisim 中的运算组件构造指定规格的 ALU 单元。 设计要求 利用前面实验封装好的 32 位加法器以及 logisim 平台中现有运算部件构建一个 32 位算术逻辑运算单元(禁用 Logisim 系统自带的加法器,减法器),可支持算术加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移、算术右移运算,支持常用程序状态标志(有符号

gyp0205的博客 2万+

springboot+rabbitMq 实现邮件发送

一、准备工作 1、作者使用的是163邮箱进行邮件发送,以下是截图步骤获取邮件发送需要的参数 进入到设置选项 选择邮件协议选项 选择任意一种协议开启 继续下一步 然后用手机发送 信息到指定账号 最后163邮箱会提供一个16位大写的字符串作为密码。 接着查找163邮箱开启协议的端口 和服务器名称,这里直接贴出来吧 服务器地址: POP3服务器: pop.163.com SMTP服务器: smtp.163.com IMAP服务器: imap.1...

qq_36715887的博客 1859

Dify DSL文件分享 Dify讨论群 大模型token资源等(持续收集更新)

基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。

同名公众号:dify实验室 3718

osgEarth加载大疆数据

【代码】osgEarth加载大疆数据。

weixin_44769745的博客 308

rabbitmq发送邮件demo

导入jar包 <!--rabbitMq--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!--邮件系统-->

qq_42358647的博客 4660

Python爬虫实战:研究Pandas,构建车质网各车型数据采集和分析系统

研究结果表明,通过网络爬虫技术可以有效地获取公开的汽车投诉数据,这些数据经过适当的清洗和处理后,可以揭示出丰富的汽车质量信息。)作为国内专业的汽车质量投诉受理平台,自 2010 年成立以来,已累计接收消费者投诉信息超过 200 万条,这些数据包含了车型、投诉时间、投诉问题、处理状态等多维度信息,具有极高的分析价值。:通过对车质网数据的分析,能够挖掘出有价值的汽车质量信息,为消费者购车提供参考,为汽车厂商改进产品质量和服务提供依据,同时也能为相关监管部门提供数据支持。

ylfhpy的博客 939

在C#中使用RabbitMQ做个简单的发送邮件小项目 _

本文通过使用RabiitMQ点对点模式来完成一个发送邮件的小项目,通过队列去处理邮件发送。通过RabbitMQ.Client库去连接RabbitMQ服务器。使用MailKit库发送邮件。通过使用RabbitMQ来避免邮件发送请求时间长的问题,同时能在消费者中重试、记录发送失败的邮件,来统一发送、统一处理。不足点就是被退回的邮件不知道该如何处理。可优化点:可以使用WorkQueues工作队列队列模式将消息分发给多个消费者,适用于消息量较大的情况。可以使用死信队列处理发送失败的邮件妙妙屋(zy)

sdgfafg_25的博客 1118

Dify平台隐患url:/console/api/remote-files/upload暴露高危漏洞,配置nginx htpasswd模块认证机制屏蔽解决

内部网络探测: 攻击者可通过SSRF扫描内网服务云元数据访问: 可能访问AWS/Aliyun/腾讯云等元数据服务服务端请求伪造: 以服务器身份发起任意HTTP请求。

CN_Eden 1325

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

RabbitMQ 消息队列 优化发送邮件

所以,对于非常简单的功能,你确实可以不写await来达到异步的目的。但对于大型程序来说,为了有更好的性能,增加并发处理能力,提高错误处理的可靠性,使用消息队列是一个更好的选择。我要告诉大家,你想的一点也没错,这样做 100% 可以的。因为不等待异步执行的结果,如果发送邮件出现错误了,会。在实际开发之前,不妨先思考下,我们最终的目的是为了让邮件异步发送。你去访问其他接口,也是完全不受影响的。那么现在,我们就用非常简单的方式,实现了异步发送邮件了。的时候,相关的信息,就可以从环境变量读取。

IT_iosers的博客 1292

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SpringBoot整合RabbitMq实现邮件发送

环境说明: Centos7, Docker1.13.1 准备 本篇以qq邮件为例 邮箱配置 开启SMTP服务(Simple Mail Transfer Protocol 简单邮件传输协议) 获取授权码 依赖配置 核心依赖 <!--amqb 通信--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte

beeworkshop的博客 3981

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于SpringBoot整合RabbitMQ发送邮件通知

1.使用docker 下载rabbitmq: docker pull rabbitmq:management 2.使用 docker images命令来查看下载的镜像: $ docker images 3.使用 docker start命令来启动rabbitmq: docker start 9822b13b4f75 4.构建项目 5. umz-messa...

qq_31987649的博客 1440

SpringBoot +RabbitMQ实现邮件发送

SpringBoot +RabbitMQ实现邮件发送 新建一个模块mail(与服务端分开来) 导入依赖 <!--rabbitmq 依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId>

weixin_46883635的博客 3080

利用SpringBoot+rabbitmq 实现邮件异步发送,保证100%投递成功

在之前的文章中,我们详细介绍了 SpringBoot 整合 mail 实现各类邮件的自动推送服务。但是这类服务通常不稳定,当出现网络异常的时候,会导致邮件推送失败。

程序员志哥的博客 1531

springboot项目集成rabbitmq发送邮件功能,缓解服务器访问压力!

背景: 最近公司有个项目需要使用rabbitmq来做优化, 之前一直听说没有实战, 然后自己在网上找了一些资料, 资料真的很多, 但是实例基本没有, 都是log一句话什么的, 很头痛… 该博文抄了很多博主然后结合自己的了解做了一些改动,实现了我要的效果. 自己折腾一下,权当记录一下! rabbitmq介绍 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 介绍就没有什么必要了, 网上资料一大...

叶叶叶叶大爷的博客 6577

SpringBoot+RabbitMQ,发送邮件

RabbitMQ、邮箱配置 # rabbitmq spring.rabbitmq.host= spring.rabbitmq.port= #spring.rabbitmq.virtual-host= spring.rabbitmq.username= spring.rabbitmq.password= # 开启confirms回调 P -> Exchange spring.rabbitmq.publisher-confirms=true # 开启returnedMessage回调 Exchange .

weixin_43176399的博客 1039

SpringBoot、RabbitMQ实现QQ邮件发送

RabbitMQ邮件发送 ​ RabbitMQ流程 生产者:负责发送消息到Exchange Exchange:按照一定的策略,负责将消息存放到指定的队列 队列queue:负责保存消息 消费者:负责将队列中的消息提取 binding:负责Exchange和队列的关联映射 1.关于邮件的有两个实体类 MailConstants:定义了很多关于邮件的常量 public class MailConstants { public static final Integer

1296

springboot+rabbitmq发送邮件

准备rabbitmq服务 我前面有个安装docker的帖子,如果想省事又快捷的安装rabbitmq请先安装docker,如果你想在自己的Linux机器里直接安装也不是不行,但是你要做好被烦死的准备。https://blog.youkuaiyun.com/Curtisjia/article/details/104186314 OK,这里我已经假设你的docker环境没有任何问题了,然后开始拉rabbitmq的...

Curtisjia的博客 1689

SpringBoot基于RabbitMQ发送邮件

SpringBoot基于RabbitMQ发送邮件 一. 背景 ​ 新用户注册成功后,服务器会给用户发一份电子邮件,所以一共有两个模块。一个模块功能是用户注册,另一个模块功能是发送电子邮件。 ​ 当用户注册成功,此时服务器会将邮件信息(MailMessage)和路由key发送到交换机中(mail.exchange),交换机根据路由key再将邮件信息发送到邮件队列(mail.queue)中。发送...

qq_41490022的博客 498

spring实战之使用RabbitMQ--发送邮件

上一篇博客的地址 基于上次RabbitMQ的入门使用,我们接着来发送邮件。 代码基于上一篇的代码,这里不再说明。 1.修改代码 下面是修改后的MQReciever import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.

weixin_42470796的博客 1043
上一篇: 直接new 对象 Spring 不会注入的解决方法
下一篇: 引入dubbo依赖 后 项目启动失败 报错:....on JDK 1.5 and higher
Java_HuiLong
博客等级 码龄11年 26粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值