消息服务平台 处理公司内部各种消息业务

比如 发送邮件  发送短信  微信推送

接口有两种类型 异步 同步

同步需求: 当调用消息服务平台,需要返回消息服务平台调用第三方平台接口是否成功

异步需求: 采用MQ异步发送消息(没有返回结果)

我用world画了个示意图:大家看下

发送邮件参数:

邮件账号 内容信息

格式是JSON

需要使用 fastJson:

  1. <!--fastjson -->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>fastjson</artifactId>
  5. <version>1.2.49</version>
  6. </dependency>  

存入消息: 消息参数格式是Json 所以需要 fastjson

  1. package com.toov5.Producer;
  2.  
  3. import javax.jms.Queue;
  4.  
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.jms.core.JmsMessagingTemplate;
  7. import org.springframework.scheduling.annotation.Scheduled;
  8. import org.springframework.stereotype.Component;
  9.  
  10. import com.alibaba.fastjson.JSONObject;
  11.  
  12. @Component
  13. public class P2PProducer {
  14. @Autowired
  15. private JmsMessagingTemplate jmsMessagingTemplate;
  16. //把队列注入进来
  17. @Autowired //此注解默认是以类型找 在配置文件中 已经注入的 @Bean
  18. private Queue queue;
  19.  
  20. //每隔5s时间向队列发送消息
  21. @Scheduled(fixedDelay=5000) //每间隔2s向队列发送消息
  22. public void send() {
  23. String userName = System.currentTimeMillis()+" ";
  24. JSONObject jsonObject = new JSONObject();
  25. jsonObject.put("username", userName);
  26. jsonObject.put("email", "acmgogo@163.com");
  27. String msgString = jsonObject.toJSONString();
  28. jmsMessagingTemplate.convertAndSend(queue,msgString);
  29. System.out.println("点对点通讯,msg"+msgString);
  30. }
  31. }

主要的依赖:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-mail</artifactId>
  4. </dependency>

 注意163邮件需要开通pop3协议! 

其他遵循之前 点对点demo

  1. package com.toov5.Producer;
  2.  
  3. import javax.jms.Queue;
  4.  
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.jms.core.JmsMessagingTemplate;
  7. import org.springframework.scheduling.annotation.Scheduled;
  8. import org.springframework.stereotype.Component;
  9.  
  10. import com.alibaba.fastjson.JSONObject;
  11.  
  12. @Component
  13. public class P2PProducer {
  14. @Autowired
  15. private JmsMessagingTemplate jmsMessagingTemplate;
  16. //把队列注入进来
  17. @Autowired //此注解默认是以类型找 在配置文件中 已经注入的 @Bean
  18. private Queue queue;
  19.  
  20. //每隔5s时间向队列发送消息
  21. @Scheduled(fixedDelay=5000) //每间隔2s向队列发送消息
  22. public void send() {
  23. String userName = System.currentTimeMillis()+" ";
  24. JSONObject jsonObject = new JSONObject();
  25. jsonObject.put("username", userName);
  26. jsonObject.put("email", "acmtest@163.com");
  27. String msgString = jsonObject.toJSONString();
  28. jmsMessagingTemplate.convertAndSend(queue,msgString);
  29. System.out.println("点对点通讯,msg"+msgString);
  30. }
  31. }

配置:

  1. package com.toov5.config;
  2.  
  3. import javax.jms.Queue;
  4.  
  5. import org.apache.activemq.command.ActiveMQQueue;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.stereotype.Component;
  9.  
  10. @Component
  11. public class ConfigQueue {
  12. @Value("${my_queue}")
  13. private String myQueue;
  14.  
  15. //首先将队列注入到SpringBoot容器中去
  16. @Bean
  17. public Queue queue() {
  18. return new ActiveMQQueue(myQueue);
  19. }
  20.  
  21. }

启动:

  1. package com.toov5;
  2.  
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.scheduling.annotation.EnableScheduling;
  6.  
  7. @SpringBootApplication
  8. @EnableScheduling //开启定时任务
  9. public class AppProducer {
  10. public static void main(String[] args) {
  11. SpringApplication.run(AppProducer.class, args);
  12. }
  13. }

yml:

  1. spring:
  2. activemq:
  3. broker-url: tcp://192.168.91.6:61616
  4. user: admin
  5. password: admin
  6. my_queue: springboot-queue-toov5
  7. server:
  8. port: 8081

pom:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.toov5.springboot.avtivemq</groupId>
  4. <artifactId>springboot.avtivemq</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6.  
  7. <parent>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-parent</artifactId>
  10. <version>2.0.1.RELEASE</version>
  11. </parent>
  12. <!-- 管理依赖 -->
  13. <dependencyManagement>
  14. <dependencies>
  15. <dependency>
  16. <groupId>org.springframework.cloud</groupId>
  17. <artifactId>spring-cloud-dependencies</artifactId>
  18. <version>Finchley.M7</version>
  19. <type>pom</type>
  20. <scope>import</scope>
  21. </dependency>
  22. </dependencies>
  23. </dependencyManagement>
  24. <dependencies>
  25. <!-- SpringBoot整合Web组件 -->
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-web</artifactId>
  29. </dependency>
  30. <!-- SpringBoot Activemq -->
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-activemq</artifactId>
  34. </dependency>
  35. <!--fastjson -->
  36. <dependency>
  37. <groupId>com.alibaba</groupId>
  38. <artifactId>fastjson</artifactId>
  39. <version>1.2.49</version>
  40. </dependency>
  41.  
  42. </dependencies>
  43. <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
  44. <repositories>
  45. <repository>
  46. <id>spring-milestones</id>
  47. <name>Spring Milestones</name>
  48. <url>https://repo.spring.io/libs-milestone</url>
  49. <snapshots>
  50. <enabled>false</enabled>
  51. </snapshots>
  52. </repository>
  53. </repositories>
  54.  
  55. </project>

  

consumer:

  1. package com.toov5.activemqConsumer;
  2.  
  3. import org.apache.commons.lang3.StringUtils;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.beans.factory.annotation.Value;
  6. import org.springframework.jms.annotation.JmsListener;
  7. import org.springframework.mail.SimpleMailMessage;
  8. import org.springframework.mail.javamail.JavaMailSender;
  9. import org.springframework.stereotype.Component;
  10.  
  11. import com.alibaba.fastjson.JSONObject;
  12.  
  13. @Component
  14. public class P2PConsumer {
  15. @Autowired
  16. private JavaMailSender javaMailSender;
  17. @Value("${spring.mail.username}")
  18. private String toEmail;
  19.  
  20. @JmsListener(destination = "${my_queue}") // 用这个注解去监听 监听的队列
  21. public void receiver(String msg) throws Exception {
  22. if (StringUtils.isEmpty(msg)) {
  23. return;
  24. }
  25. // 解析json
  26. JSONObject parseObject = JSONObject.parseObject(msg); //转成对象
  27. String userName = parseObject.getString("username");
  28. String email = parseObject.getString("email");
  29. sendSimpleMail(email, userName);
  30. System.out.println("消费者成功获取到生产者的消息,msg" + msg);
  31. }
  32.  
  33. public void sendSimpleMail(String email, String userName) throws Exception {
  34. SimpleMailMessage message = new SimpleMailMessage();
  35. // 邮件的来源 自己发自己
  36. message.setFrom(email);
  37. // 发送给谁
  38. message.setTo(toEmail);
  39. // 邮件标题
  40. message.setSubject("toov5博客园提醒");
  41. // 邮件内容
  42. message.setText("hello:" + userName + "我们成为好朋友!");
  43. // 发送邮件
  44. javaMailSender.send(message);
  45. System.out.println("邮件发送完成," + JSONObject.toJSONString(message));
  46. }
  47.  
  48. }

启动类:

  1. package com.toov5.activemqConsumer;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4.  
  5. @SpringBootApplication
  6. public class AppConsumer {
  7.  
  8. public static void main(String[] args) {
  9. SpringApplication.run(AppConsumer.class, args);
  10. }
  11.  
  12. }

yml:

  1. spring:
  2. activemq:
  3. broker-url: tcp://192.168.91.6:61616
  4. user: admin
  5. password: admin
  6. mail:
  7. ##163邮件服务
  8. host: smtp.163.com
  9. ##发送邮件账号
  10. username: acmchangyuan@163.com
  11. ##授权码
  12. password: yugongv5
  13. enable: true
  14. smtp:
  15. auth: true
  16. starttls:
  17. enable: true
  18. required: true
  19. my_queue: springboot-queue-toov5
  20. server:
  21. port: 8080

pom:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.toov5.activemqConsumer</groupId>
  4. <artifactId>activemqConsumer</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <parent>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-parent</artifactId>
  9. <version>2.0.1.RELEASE</version>
  10. </parent>
  11. <!-- 管理依赖 -->
  12. <dependencyManagement>
  13. <dependencies>
  14. <dependency>
  15. <groupId>org.springframework.cloud</groupId>
  16. <artifactId>spring-cloud-dependencies</artifactId>
  17. <version>Finchley.M7</version>
  18. <type>pom</type>
  19. <scope>import</scope>
  20. </dependency>
  21. </dependencies>
  22. </dependencyManagement>
  23. <dependencies>
  24. <!-- SpringBoot整合Web组件 -->
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-web</artifactId>
  28. </dependency>
  29. <!-- SpringBoot Activemq -->
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-starter-activemq</artifactId>
  33. </dependency>
  34. <!--fastjson -->
  35. <dependency>
  36. <groupId>com.alibaba</groupId>
  37. <artifactId>fastjson</artifactId>
  38. <version>1.2.49</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.apache.commons</groupId>
  42. <artifactId>commons-lang3</artifactId>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.springframework.boot</groupId>
  46. <artifactId>spring-boot-starter-mail</artifactId>
  47. </dependency>
  48.  
  49. </dependencies>
  50. <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
  51. <repositories>
  52. <repository>
  53. <id>spring-milestones</id>
  54. <name>Spring Milestones</name>
  55. <url>https://repo.spring.io/libs-milestone</url>
  56. <snapshots>
  57. <enabled>false</enabled>
  58. </snapshots>
  59. </repository>
  60. </repositories>
  61. </project>

  

先启动consumer!

ActivemMQ之消息服务器平台(发邮件)的更多相关文章

  1. ActiveMQ JMS 在发邮件中的使用

    ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...

  2. 使用 telnet 发邮件

    我们都习惯了用邮件客户端软件或者登录到电子邮件站点进行收发邮件,现在尝试一下使用 Windows 自带的 Telnet 程序手工地发送一封简单的邮件,以此来稍微明白关于邮件发送的一些知识. 现在 E- ...

  3. Linux搭建smtp服务器+laravel5.2发邮件配置

    /** * 这里主要是想通过自己搭建smtp服务器,配置laravel5.2框架,实现邮箱发邮件功能, * 主要内容是搭建smtp服务器,laravel5.2发邮件顺手提一下 */ /** * 1.l ...

  4. windows平台发消息到非UI线程.

    下面的代码是介绍如何在windows平台发消息到非UI线程. 主要是'PeekMessage || GetMessage' 这两个API的应用. 当他们被调用的时候,如果当前线程还没有消息循环,就会创 ...

  5. 脚本监控web服务器,工作不正常发邮件提醒

    背景介绍公司有多个web网站,没有配置监控服务,每天都需要定时检查服务器是否工作正常.低效耗时. 代码片段 #!/bin/bash # Author Jerry.huang (Email:Jerry. ...

  6. 阿里云服务器25端口禁用之如何使用Java发邮件(解决25端口禁用问题)

    通常我们在本地使用Java发送邮件,通常是没有问题的,但是部署到服务器的话,就可能遇到问题.当然了,这与运营商也有关系.比如我之前在咖啡主机上购买虚拟机,然后将个人网站部署上去,通常是没有问题的,没有 ...

  7. EDM数据:如何选择邮件服务器平台

    博主知道有不少的企业和个人都在寻找邮件服务器平台,下面博主从下面几个方面给大家介绍一下如何选择. 一.列表管理功能是否完善. 一般一个好的邮件服务器平台系统都有完善的列表管理功能.列表管理功能是指邮件 ...

  8. 【知识积累】JavaMail实现发邮件功能

    一.前言 今天闲来没事,想着通过程序来给别人发邮件.于是,上网搜了一下,相应的资料也很多,刚开始完成了邮件的简单发送,后来想如何能发送附件,继续寻找 答案,但是遇到了一个问题是当我使用txt类型作为附 ...

  9. PHP实例开发(2)PHP通过mail()或Socket发邮件

    PHP通过mail()或Socket发邮件 1.PHP中发送邮件的方法 PHP发送邮件是“非常的简单” 因为他提供了mail()函数直接发送,但这也继 register globals 成为了对初学者 ...

随机推荐

  1. 黑苹果+win10双系统折腾笔记

    寒假趁机在家折腾一下黑苹果 笔记本配置:神船K610D I7 4600 ,其他配置思路一样,驱动要自己找 镜像和工具:OS X Yosemite 10.10.3 镜像 WIN10 TLSB 2016 ...

  2. 【京东账户】——Mysql/PHP/Ajax爬坑之购物车删除选项

    一.引言 做京东账户项目中的购物车模块,功能之三就是删除购物车中的选项.要用到的是Apach环境,Mysql.PHP以及Ajax. 二.依据功能创建库.表.记录 创建库:jd 创建表:购物车表  jd ...

  3. Java排序算法(三):直接插入排序

    [基本思想] 关键:在前面已经排好序的序列中找到合适的插入位置 步骤: 1. 从第一个元素開始,该元素能够觉得已经排好序. 2. 取出下一个元素.在已经排好序的元素序列中从后往前扫描进行比較. 3. ...

  4. Android解析聚合数据之天气预报

    免费天气预报API:https://www.juhe.cn/docs/api/id/73 ,申请APPKEY MainActivity.java <span style="font-s ...

  5. SQL Server -使用表触发器记录表插入,更新,删除行数

    1.如何使用sql获取当前session用户名和机器名 Select CURRENT_USER,Host_name() 2.如何在表触发器中获取当前表名称 SELECT OBJECT_SCHEMA_N ...

  6. 转Java 开发环境配置

    window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloa ...

  7. Leet Code OJ 237. Delete Node in a Linked List [Difficulty: Easy]

    题目: Write a function to delete a node (except the tail) in a singly linked list, given only access t ...

  8. 如何用openssl命令行生成证书

    老大要我在web server里面加上https功能,可是但就使用openssl生成证书就耗费了我两天时间,网上有很多相关的资料,但是都写的很复杂, 照着他们的来,还是走了很多弯路. 我总结一下,步骤 ...

  9. Struts2学习八----------接收参数

    © 版权声明:本文为博主原创文章,转载请注明出处 接收参数 - 使用Action的属性接收参数 - 使用Domain Model接收参数 - 使用ModelDriven接收参数 实例 1.项目结构 2 ...

  10. 未加载Microsoft.SqlServer.management.sdk.sfc version......

    这个问题卡了我好久,于是决定记录下来,我这里缺失的是Microsoft.SqlServer.management.sdk.sfc version 12.0.0,当然你也可能后面是11开头的, 这个是由 ...