使用activemq接受监听并完成短信的发送 ---腾讯云短信

一、准备工作
    1)、微服务发送短信。
    1.创建maven工程,导入spring微服务相关依赖:
    

    <!--spring-boot-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>pyg-qsms</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.qcloudsms</groupId>
            <artifactId>qcloudsms</artifactId>
            <version>1.0.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20170516</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.11</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.1</version>
        </dependency>
        
        <!--log4j-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </dependency>
        
    </dependencies>


    
    2.在resource包下,创建application.properties以及导入log4j.propertites
        2.1 application.propertities如下:

            # 改变默认端口
            server.port=8889
            
            #activemq所在服务器
            spring.activemq.broker-url=tcp://192.168.25.130:61616
            
            #腾讯短信秘钥,需要到腾讯云平台申请
            appid=*****
            appkey=******
            #模板Id,需要到腾讯云平台申请
            templateId=*****
            #签名,需要到腾讯云平台申请
            smsSign=*****


                
        2.2 log4j.properties如下:
 

            ### direct log messages to stdout ###
            log4j.appender.stdout=org.apache.log4j.ConsoleAppender
            log4j.appender.stdout.Target=System.out
            log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
            log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

            ### direct messages to file mylog.log ###
            log4j.appender.file=org.apache.log4j.FileAppender
            log4j.appender.file.File=c:/mylog.log
            log4j.appender.file.layout=org.apache.log4j.PatternLayout
            log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

            ### set log levels - for more verbose logging change 'info' to 'debug' ###

            log4j.rootLogger=debug, stdout


            


二、编写代码

 3.微服务入口(启动微服务监听的入口,所在目录:cn.china3y.pyg.SmsApplication)

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

  
        

***    4.发送短信的工具类(*******)
    

 

package cn.china3y.pyg.qsmsUtils;

		/**
		 * 被监听类调用,用于发送信息
		 */
		@Component
		public class SmsUtils {
			@Autowired
			private Environment env;
			// 短信应用SDK AppID
			//int appid = ***; // 1400开头
			// 短信应用SDK AppKey
			//String appkey = "***";
			// 短信模板ID,需要在短信应用中申请
			//int templateId = ***; // NOTE: 这里的模板ID`7839`只是一个示例,真实的模板ID需要在短信控制台中申请
			//templateId7839对应的内容是"您的验证码是: {1}"
			// 签名
			//String smsSign = "***"; // NOTE: 这里的签名"腾讯云"只是一个示例,真实的签名需要在短信控制台中申请,另外签名参数使用的是`签名内容`,而不是`签名ID

			// 需要发送短信的手机号码
			//String[] phoneNumbers = {env.getProperty("phoneNumbers")};
			
			public void sendSms(String phone, String code,String code_time) {
				String[] phoneNumbers = {phone};

				// 单发短信
				try {

					SmsSingleSender ssender = new SmsSingleSender(Integer.parseInt(env.getProperty("appid")), env.getProperty("appkey"));
					//nationCode:国家码
					//注意:这里的第三个参数,必须与申请的模板内容一致,否则报错:发送的信息与模板内容不一致
					SmsSingleSenderResult result = ssender.send(0, "86", phoneNumbers[0],
							"【签名】您的短信验证码为:" + code + ",验证码时间为"+code_time+"分钟内有效,请尽快完成验证", "", "");
					System.out.print(result);
				} catch (Exception e) {
					// HTTP响应码错误
					e.printStackTrace();
				}

				// 指定模板ID单发短信
				try {
					String[] params = {"***","777","77"};
					//SmsMultiSender msender = new SmsMultiSender(appid, appkey);
					SmsMultiSender msender = new SmsMultiSender(Integer.parseInt(env.getProperty("appid")), env.getProperty("appkey"));
					SmsMultiSenderResult result = msender.sendWithParam("86", phoneNumbers,
							Integer.parseInt(env.getProperty("templateId")), params, env.getProperty("smsSign"), "", "");  // 签名参数未提供或者为空时,会使用默认签名发送短信
					System.out.print(result);
				} catch (Exception e) {
					// HTTP响应码错误
					e.printStackTrace();
				}

				// 发送语音验证码
				// 发送语音通知

				// 拉取短信回执以及回复
				try {
					// Note: 短信拉取功能需要联系腾讯云短信技术支持(QQ:3012203387)开通权限
					int maxNum = 10;  // 单次拉取最大量
					SmsStatusPuller spuller = new SmsStatusPuller(Integer.parseInt(env.getProperty("appid")), env.getProperty("appkey"));

					// 拉取短信回执
					SmsStatusPullCallbackResult callbackResult = spuller.pullCallback(maxNum);
					System.out.println(callbackResult);

					// 拉取回复
					SmsStatusPullReplyResult replyResult = spuller.pullReply(maxNum);
					System.out.println(replyResult);
				} catch (Exception e) {
					// HTTP响应码错误
					e.printStackTrace();
				}
				// 拉取单个手机短信状态
				try {
					int beginTime = 1511125600;  // 开始时间(unix timestamp)
					int endTime = 1511841600;    // 结束时间(unix timestamp)
					int maxNum = 10;             // 单次拉取最大量
					SmsMobileStatusPuller mspuller = new SmsMobileStatusPuller(Integer.parseInt(env.getProperty("appid")), env.getProperty("appkey"));

					// 拉取短信回执
					SmsStatusPullCallbackResult callbackResult = mspuller.pullCallback("86",
							phoneNumbers[0], beginTime, endTime, maxNum);
					System.out.println(callbackResult);

					// 拉取回复
					SmsStatusPullReplyResult replyResult = mspuller.pullReply("86",
							phoneNumbers[0], beginTime, endTime, maxNum);
					System.out.println(replyResult);
				} catch (Exception e) {
					// HTTP响应码错误
					e.printStackTrace();
				}
			}
		}


    
     

以上4步已经可以实现短信发送了,下面使用activemq,中间件接受监听并调用发送短信工具类。


    5.activeMq监听器()

 

package cn.china3y.pyg.qsmsListener;

	/**
	 * 用于监听mq中的sms区域
	 * 当mq ,sms区接收到信息自动触发监听器,获取mq信息,
	 * 调用msUtils.sendSms(phone, code , code_time);实现短息发送
	 */
	@Component
	public class SmsListener {
		@Autowired
		private SmsUtils smsUtils;

	  @JmsListener(destination = "sms")
		public void sendSms(Map<String, String> smsmap) {
			try {
				String phone = smsmap.get("phone");
				String code = smsmap.get("code");
				String code_time = smsmap.get("code_time");
				//phone:需要发送短信的手机号; code:验证码; code_time:验证码有效时间
				smsUtils.sendSms(phone,code,code_time);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}


  
    6.测试类(cn.china3y.pyg.SmsApplication)

    

    package cn.china3y.pyg;
    
    @RestController
    public class QueueController {
    @Autowired
    private JmsTemplate jmsTemplate;

    @RequestMapping("send")
    public void smsSend() {
        Map<String, String> map = new HashMap<>();
        map.put("phone", "***");
        map.put("code", "18122");
        map.put("code_time", "5");
        jmsTemplate.convertAndSend("sms", map);
    }


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: qt activemq-cpp-library-3.9.5-src.zip是一个QT版本的ActiveMQ C++库的压缩包。ActiveMQ是一个流行的开源消息中间件,而C++库是用于在C++应用程序中使用ActiveMQ的工具。 该压缩包包含了使用QT框架开发的ActiveMQ C++库的源代码。使用这个库可以方便地在QT应用程序中发送和接收ActiveMQ消息。它提供了一套易于使用的API,使得开发人员可以快速地集成ActiveMQ功能到他们的应用程序中。 这个库的版本号是3.9.5,这意味着它是在3.9.5版本的ActiveMQ基础上进行开发和定制的。版本号的更新通常会带来新功能、改进和错误修复,因此使用较新版本的库可以提供更好的性能和功能。 要使用这个库,首先需要下载并解压压缩包。然后,可以将源代码导入到QT项目中,并在项目配置中添加必要的依赖项。开发人员可以使用库中提供的API来连接到ActiveMQ代理服务器,发送和接收消息。可以进行一些高级设置,如设置消息过滤器、持久性订阅等。 总结起来,qt activemq-cpp-library-3.9.5-src.zip是一个由QT框架开发的ActiveMQ C++库的源代码压缩包。它提供了便捷的方式在QT应用程序中使用ActiveMQ,并能够发送、接收消息。使用这个库可以提供更好的性能和功能,并且使用较新的版本可以获得更多的更新和改进。 ### 回答2: qt activemq-cpp-library-3.9.5-src.zip 是一个包含 Qt 平台下的 ActiveMQ-CPP 库源代码的压缩文件。ActiveMQ-CPP 是 Apache ActiveMQ 的 C++ 客户端库,为开发人员提供了在 C++ 环境中与 ActiveMQ 通信的能力。 这个库的版本是3.9.5,它是根据 Apache ActiveMQ 的版本定制的。ActiveMQ 是一个开源的消息代理,用于在分布式系统中进行异步通信和消息传递。ActiveMQ-CPP 库提供了在 C++ 应用程序中使用 ActiveMQ 的接口和功能,让开发人员能够使用 C++ 编程语言进行异步消息传递。 该压缩文件包含了 ActiveMQ-CPP 库的源代码,这意味着您可以查看和修改源代码以满足您的特定需求。Qt 是一个跨平台的应用程序开发框架,它可以方便地用于构建图形用户界面和可移植的应用程序。ActiveMQ-CPP 库结合了 ActiveMQ 和 Qt 的功能,为开发人员提供了一种使用 C++ 和 Qt 进行消息传递的快捷方式。 要使用这个库,您需要解压缩该压缩文件,并将源代码文件导入到您的 Qt 项目中。然后,您可以根据活动MQ-CPP 文档中提供的指南来配置和使用该库。 总之,qt activemq-cpp-library-3.9.5-src.zip 是一个包含 ActiveMQ-CPP 库源代码的压缩文件,它让使用 C++ 和 Qt 的开发人员能够在 Qt 平台上与 ActiveMQ 进行异步消息传递。 ### 回答3: qt activemq-cpp-library-3.9.5-src.zip 是一个压缩包,其中包含了 Qt 平台下的 ActiveMQ-CPP 库的源代码。 ActiveMQ-CPP 是一个 C++ 编写的 ActiveMQ 客户端库,用于实现与 ActiveMQ 消息代理服务器的连接和消息交互。它提供了一组用于发送、接收和处理消息的类和函数。使用 ActiveMQ-CPP,开发者可以在 Qt 平台上轻松地实现与 ActiveMQ 服务器的通信,用于实现消息传递的功能。 这个压缩包包含了库的源代码,可以方便地进行自定义和扩展。通过解压这个压缩包,开发者可以获取到库的源代码文件,其中包含了用于实现不同功能的类、函数和头文件。开发者可以根据自己的需要对源代码进行修改和定制,以满足项目的特定需求。 使用这个压缩包,开发者可以通过 Qt 平台来构建和编译 ActiveMQ-CPP 库,生成对应的库文件,然后将其链接到自己的项目中。这样,开发者就可以在自己的 Qt 项目中使用 ActiveMQ-CPP 库提供的功能,实现与 ActiveMQ 服务器的连接和消息交互。 总之,qt activemq-cpp-library-3.9.5-src.zip 是一个包含了 ActiveMQ-CPP 库源代码的压缩包,可以方便地在 Qt 平台上进行定制和扩展,并实现与 ActiveMQ 服务器的通信和消息处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值