栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

rabbitmq发送消息(rabbitmq的使用)

rabbitmq发送消息(rabbitmq的使用)

1.设置邮箱服务

以163邮箱为例:

注册 163 邮箱,登录 163 邮箱后,设置邮箱账户开通 smtp 服务

需要根据注册时的手机号发送的验证码来开通获取邮箱客户端授权码。开通成功后,会显示个人
授权访问码,该授权码是后面通过 Java 发送邮件的认证密码,非常重要。

2.创建邮件服务项目




添加依赖



	
		org.springframework.boot
		spring-boot-starter-amqp
	
	
	
		org.springframework.boot
		spring-boot-starter-mail
	
	
	
		org.springframework.boot
		spring-boot-starter-thymeleaf
	
	
	
		com.yjxxt
		yeb-server
		0.0.1-SNAPSHOT
	

修改配置文件(application.yml)

server:
	# 端口
	port: 8082
spring:
	# 邮件配置
	mail:
		# 邮件服务器地址
		host: smtp.163.com
		# 协议
		protocol: smtp
		# 编码格式
		default-encoding: utf-8
		# 授权码(在邮箱开通服务时获取)
		password: 你的授权码
		# 发送者邮箱地址
		username: 你的邮箱地址
		# 端口(不同邮箱端口号不同)
		port: 25
	# rabbitmq配置
	rabbitmq:
		# 用户名
		username: guest
		# 密码
		password: guest
		# 服务器地址
		host: 你的服务器地址
		# 端口
		port: 567

准备邮件模板
在resource目录下新建templates目录,然后在新建mail.html




	
	入职欢迎邮件


欢迎  加入 XXXX 大家庭,您的入职信息如下:
姓名
职位
职称
部门

我们公司的工作忠旨是严格,创新,诚信,您的加入将为我们带来新鲜的血液,带来创 新的思维,以及为我们树立良好的公司形象!希望在以后的工作中我们能够齐心协力,与时 俱进,团结协作!同时也祝您在本公司,工作愉快,实现自己的人生价值!希望在未来的日子 里,携手共进!

3.发送邮件(简单模式)

在yeb-server添加依赖添加依赖


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

同样需要修改配置文件

spring:
	# rabbitmq配置
	rabbitmq:
		# 用户名
		username: guest
		# 密码
		password: guest
		# 服务器地址
		host: 你的服务器地址
		# 端口
		port: 5672

消息发送

	@Override
	public RespBean addEmp(Employee employee) {
		//处理合同期限,保留2位小数
		LocalDate beginContract = employee.getBeginContract();
		LocalDate endContract = employee.getEndContract();
		long days = beginContract.until(endContract, ChronoUnit.DAYS);//计算有多少天
		DecimalFormat decimalFormat = new DecimalFormat("##.00");//保留两位小数
		employee.setContractTerm(Double.parseDouble(decimalFormat.format(days / 365.00)));//插入合同期限
		if (1 == employeeMapper.insert(employee)) {
			Employee emp = employeeMapper.getEmployee(employee.getId()).get(0);
			//发送信息
			rabbitTemplate.convertAndSend("mail.welcome", emp, new CorrelationData(msgId));
			return RespBean.success("添加成功!");
		}
		return RespBean.error("添加失败!");
	}
4.消息接收

回到最开始的邮件服务项目
创建MailReceiver.java

package com.xxxx.mail;

import com.rabbitmq.client.Channel;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.MailConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.mail.MailProperties;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.stereotype.Component;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.util.Date;


@Component
public class MailReceiver {

	//日志
	private static final Logger LOGGER = LoggerFactory.getLogger(MailReceiver.class);

	@Autowired
	private JavaMailSender javaMailSender;
	@Autowired
	private MailProperties mailProperties;
	@Autowired
	private TemplateEngine templateEngine;

	@RabbitListener(queues = "mail.welcome")
	public void handler(Employee employee) {
			MimeMessage msg = javaMailSender.createMimeMessage();
			MimeMessageHelper helper = new MimeMessageHelper(msg);
			//发件人
			helper.setFrom(mailProperties.getUsername());
			//收件人
			helper.setTo(employee.getEmail());
			//主题
			helper.setSubject("入职欢迎邮件");
			//发送日期
			helper.setSentDate(new Date());
			//邮件内容
			Context context = new Context();
			context.setVariable("name", employee.getName());
			context.setVariable("posName", employee.getPosition().getName());
			context.setVariable("joblevelName", employee.getJoblevel().getName());
			context.setVariable("departmentName", employee.getDepartment().getName());
			String mail = templateEngine.process("mail", context);//这里的mail要和mail.html名字相同
			helper.setText(mail, true);//true表示以html的形式
			//发送邮件
			javaMailSender.send(msg);
			LOGGER.info("邮件发送成功");
		} catch (Exception e) {
			LOGGER.error("邮件发送失败=========>{}", e.getMessage());
		}
	}
}

需要在启动类中添加队列

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})//exclude = {DataSourceAutoConfiguration.class}:为了排除掉数据库连接
public class VoaMailApplication {

	public static void main(String[] args) {
		SpringApplication.run(MailApplication.class,args);
	}

	@Bean
	public Queue queue(){
		return new Queue("mail.welcome");
	}

}
5.测试

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772109.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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