Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
_江南一点雨
vhr
提交
b89b1cb3
V
vhr
项目概览
_江南一点雨
/
vhr
9 个月 前同步成功
通知
393
Star
80
Fork
9
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vhr
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b89b1cb3
编写于
2月 22, 2020
作者:
江
江南一点雨
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
处理rabbitmq高可用问题
上级
97c55091
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
36 addition
and
6 deletion
+36
-6
vhr/mailserver/pom.xml
vhr/mailserver/pom.xml
+4
-0
vhr/mailserver/src/main/java/org/javaboy/mailserver/receiver/MailReceiver.java
...in/java/org/javaboy/mailserver/receiver/MailReceiver.java
+24
-3
vhr/mailserver/src/main/resources/application.properties
vhr/mailserver/src/main/resources/application.properties
+7
-3
vhr/vhrserver/vhr-service/src/main/java/org/javaboy/vhr/service/EmployeeService.java
...rc/main/java/org/javaboy/vhr/service/EmployeeService.java
+1
-0
未找到文件。
vhr/mailserver/pom.xml
浏览文件 @
b89b1cb3
...
...
@@ -22,6 +22,10 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-amqp
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-mail
</artifactId>
...
...
vhr/mailserver/src/main/java/org/javaboy/mailserver/receiver/MailReceiver.java
浏览文件 @
b89b1cb3
package
org.javaboy.mailserver.receiver
;
import
com.rabbitmq.client.Channel
;
import
org.javaboy.vhr.model.Employee
;
import
org.javaboy.vhr.model.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.StringRedisTemplate
;
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.MessagingException
;
import
javax.mail.internet.MimeMessage
;
import
java.io.IOException
;
import
java.util.Date
;
/**
...
...
@@ -37,10 +43,21 @@ public class MailReceiver {
MailProperties
mailProperties
;
@Autowired
TemplateEngine
templateEngine
;
@Autowired
StringRedisTemplate
redisTemplate
;
@RabbitListener
(
queues
=
MailConstants
.
MAIL_QUEUE_NAME
)
public
void
handler
(
Employee
employee
)
{
logger
.
info
(
employee
.
toString
());
public
void
handler
(
Message
message
,
Channel
channel
)
throws
IOException
{
Employee
employee
=
(
Employee
)
message
.
getPayload
();
MessageHeaders
headers
=
message
.
getHeaders
();
Long
tag
=
(
Long
)
headers
.
get
(
AmqpHeaders
.
DELIVERY_TAG
);
String
msgId
=
(
String
)
headers
.
get
(
"spring_returned_message_correlation"
);
if
(
redisTemplate
.
opsForHash
().
entries
(
"mail_log"
).
containsKey
(
msgId
))
{
//redis 中包含该 key,说明该消息已经被消费过
logger
.
info
(
msgId
+
":消息已经被消费"
);
channel
.
basicAck
(
tag
,
false
);
//确认消息已消费
return
;
}
//收到消息,发送邮件
MimeMessage
msg
=
javaMailSender
.
createMimeMessage
();
MimeMessageHelper
helper
=
new
MimeMessageHelper
(
msg
);
...
...
@@ -57,9 +74,13 @@ public class MailReceiver {
String
mail
=
templateEngine
.
process
(
"mail"
,
context
);
helper
.
setText
(
mail
,
true
);
javaMailSender
.
send
(
msg
);
redisTemplate
.
opsForHash
().
put
(
"mail_log"
,
msgId
,
"javaboy"
);
channel
.
basicAck
(
tag
,
false
);
logger
.
info
(
msgId
+
":邮件发送成功"
);
}
catch
(
MessagingException
e
)
{
channel
.
basicNack
(
tag
,
false
,
true
);
e
.
printStackTrace
();
logger
.
error
(
"邮件发送失败:"
+
e
.
getMessage
());
logger
.
error
(
"邮件发送失败:"
+
e
.
getMessage
());
}
}
}
vhr/mailserver/src/main/resources/application.properties
浏览文件 @
b89b1cb3
server.port
=
8082
spring.mail.host
=
smtp.qq.com
spring.mail.protocol
=
smtp
spring.mail.default-encoding
=
UTF-8
...
...
@@ -8,8 +7,13 @@ spring.mail.username=1510161612@qq.com
spring.mail.port
=
587
spring.mail.properties.mail.stmp.socketFactory.class
=
javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug
=
true
spring.rabbitmq.username
=
guest
spring.rabbitmq.password
=
guest
spring.rabbitmq.host
=
192.168.91.128
spring.rabbitmq.port
=
5672
\ No newline at end of file
spring.rabbitmq.port
=
5672
spring.rabbitmq.listener.simple.acknowledge-mode
=
manual
spring.rabbitmq.listener.simple.prefetch
=
100
spring.redis.host
=
192.168.91.128
spring.redis.port
=
6379
spring.redis.password
=
123
spring.redis.database
=
0
\ No newline at end of file
vhr/vhrserver/vhr-service/src/main/java/org/javaboy/vhr/service/EmployeeService.java
浏览文件 @
b89b1cb3
...
...
@@ -71,6 +71,7 @@ public class EmployeeService {
mailSendLog
.
setTryTime
(
new
Date
(
System
.
currentTimeMillis
()
+
1000
*
60
*
MailConstants
.
MSG_TIMEOUT
));
mailSendLogService
.
insert
(
mailSendLog
);
rabbitTemplate
.
convertAndSend
(
MailConstants
.
MAIL_EXCHANGE_NAME
,
MailConstants
.
MAIL_ROUTING_KEY_NAME
,
emp
,
new
CorrelationData
(
msgId
));
rabbitTemplate
.
convertAndSend
(
MailConstants
.
MAIL_EXCHANGE_NAME
,
MailConstants
.
MAIL_ROUTING_KEY_NAME
,
emp
,
new
CorrelationData
(
msgId
));
}
return
result
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录