发送手机验证码在activeMQ中简单应用
来源:互联网 发布:怎么注册爱淘宝 编辑:程序博客网 时间:2024/05/18 03:38
在项目上经常遇到发送手机验证码的需求,一般通过产生验证码发送到消息中间件中,异步的去处理发送需求,由于ActiveMQ支持RESTful API,所以可以通过HTTP请求的方法发送消息到目的地。
注意点:
1. 必须是POST请求
2. 需要进行认证,在Header中添加Authorization
3. 必须指定目的地及目的地类型(本案例是queue)
4. 发送的内容使用body指定
代码案例如下:
public class SendMobileMsg { public static final String jmsserverurl = "http://127.0.0.1:8161/api/message?destination=queue://"; public static final String jmsCheckCodeQueue = "FirstQueue1"; public String sendMobileMsg(String sendTo) { MsgFormat msgft = new MsgFormat(); String sixString = this.getCheckCode(); String msgTemplate = "验证码为%s,将在10分钟后失效,请勿将此信息泄露给他人以免给您带来损失."; msgTemplate = String.format(msgTemplate, sixString); msgft.setSendTo(sendTo); msgft.setSignature(Encodes.urlEncode("XXXXX")); msgft.setContent(Encodes.urlEncode(msgTemplate)); String content = JSON.toJSONString(msgft); try { JmsOperate.sendMessage(jmsserverurl, content, jmsCheckCodeQueue); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return sixString; } /* * 生成6位数字验证码 */ private String getCheckCode() { // 元素 int[] array = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // 随机对象 Random rand = new Random(); // 循环产生 for (int i = 10; i > 1; i--) { int index = rand.nextInt(i); int tmp = array[index]; array[index] = array[i - 1]; array[i - 1] = tmp; } // 拼接结果为字符串 int result = 0; for (int i = 0; i < 6; i++) result = result * 10 + array[i]; String sixString = Integer.toString(result); // 有可能出现5位数,前面加0补全 if (sixString.length() == 5) { sixString = "0" + sixString; } return sixString; } public static void main(String[] args) { SendMobileMsg sendMobileMsg = new SendMobileMsg(); sendMobileMsg.sendMobileMsg("157****4595"); }}
发送到activeMQ服务器代码:
public class JmsOperate { private static Logger logger = LoggerFactory.getLogger(JmsOperate.class); public static void sendMessage(String jmsserverurl, String content, String destination) throws UnsupportedEncodingException, IOException { HttpClient httpClient = new HttpClient(); UsernamePasswordCredentials creds = new UsernamePasswordCredentials("admin", "admin"); httpClient.getState().setCredentials(AuthScope.ANY, creds); List<Header> headers = new ArrayList<Header>(); headers.add(new Header("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)")); httpClient.getHostConfiguration().getParams().setParameter("http.default-headers", headers); PostMethod method = new PostMethod(jmsserverurl + destination); method.addParameter("body", content); method.setDoAuthentication(true); method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false)); try { int statusCode = httpClient.executeMethod(method); if (statusCode != HttpStatus.SC_OK) { logger.info("Method failed code=" + statusCode + ": " + method.getStatusLine()); } else { logger.info(new String(method.getResponseBody(), "utf-8")); } } finally { method.releaseConnection(); } }}
需要在本地启动activeMQ服务器,写个消费者接收下消息结果如下:
证明消息是成功发送到activeMQ服务器了,也可以在控制台查看
阅读全文
0 0
- 发送手机验证码在activeMQ中简单应用
- 使用activeMQ发送短信验证码
- 在.net中给手机发送简单邮件
- 发送手机验证码倒计时
- 给手机发送验证码
- java发送手机验证码
- 如果在android中应用activemq
- 如果在android中应用activemq
- php简单发送验证码
- 手机发送验证码—.net代码
- 用户登录,实现发送手机验证码。
- js jq手机验证码发送
- java功能模块--给手机发送验证码
- button倒计时,发送手机验证码可用
- java给手机发送验证码思路
- 手机验证码发送(ThinkPHP)
- laravel框架手机发送验证码
- java实现手机发送验证码
- Qt 学习之路 2(36):二进制文件读写
- 详情页返回列表内容缓存及定位实现
- 去掉alert,confirm弹出框显示的url
- poi操作word文档(替换,插入图片)
- 剑指Offer 面试题14 剪绳子
- 发送手机验证码在activeMQ中简单应用
- 状态真的特别重要
- Python引用其他模块之sys.path
- [bzoj1407][exgcd]Savage
- 云数据库MySQL版快速上手教程
- <线性代数>行列式
- CSS3——贝赛尔曲线
- Qt 学习之路 2(37):文本文件读写
- 51.Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用