增加线程异步发送消息的方法一(Thread)
@RequestMapping(value="order/updateOrder.do")
public String updateOrder(HttpServletRequest request,HttpServletResponse response){
final String ordId =request.getParameter("ordId");
String proDesc =request.getParameter("proDesc");
final String logisticnum =request.getParameter("logisticnum");
final String logisticcompany =request.getParameter("logisticcompany");
String stats =request.getParameter("stats");
final String tranNum =request.getParameter("tranNum");
final String openId =request.getParameter("openId"); System.out.println("订单状态stats:" + stats);
System.out.println("tranNum:" + tranNum);
System.out.println("openId:" + openId);
System.out.println("logisticnum:" + logisticnum);
System.out.println("logisticcompany:" + logisticcompany); GoodsOrder order = new GoodsOrder();
order.setOrdId(ordId);
order.setProDesc(proDesc);
order.setLogisticnum(logisticnum);
order.setLogisticcompany(logisticcompany);
order.setrStatus(stats); //获取当前时间:毫秒
long a = System.currentTimeMillis();
System.out.println("a :" + a); try
{
//更改订单状态
shopService.updateOrder(order); //如果订单状态从 支付成功 改成 已发货,则给用户发送一条微信消息。
if (Integer.parseInt(stats) == 3)
{
//异步发送微信消息
new Thread()
{
public void run()
{
message.sendWxMessage(openId, tranNum, logisticcompany,logisticnum);
}
}.start();
//同步发送微信消息
//message.sendWxMessage(openId, tranNum, logisticcompany,logisticnum);
} }
catch (Exception e)
{
e.printStackTrace();
} //计算 try 内语句的执行时间
long b = System.currentTimeMillis();
System.out.println("b :" + b);
System.out.println(" b - a :" + (b - a));
return "redirect:/order/orderlist.do?currPage=1";
}
package com.starcloud.helpapp.wxMessage.service; /**
*
* 项目名称:eduappweb
* 类名称:
* 类描述:
* 创建人:Administrator
* 创建时间:2016-5-28 下午02:53:01
* @version 1.0
*/
public interface Message
{ /**
*
* [简要描述]:推送微信消息
* [详细描述]:
*
* @param openId
* @param proName
* @param payfee
* @param phoneNum
* @param flag 1:购买成功提示消息 2:代言返利消息
*/
public void sendWxMessage(String openId,String tranNum,String logisticcompany,String logisticnum);
}
package com.starcloud.helpapp.wxMessage.service.impl; import org.springframework.stereotype.Service; import net.sf.json.JSONObject; import com.starcloud.helpapp.common.Loger;
import com.starcloud.helpapp.common.utils.Tools;
import com.starcloud.helpapp.wxMessage.ConnectionUrlUtil;
import com.starcloud.helpapp.wxMessage.beans.MsgTemplateBean;
import com.starcloud.helpapp.wxMessage.common.Constant;
import com.starcloud.helpapp.wxMessage.service.Message; @Service("Message")
public class MessageImpl implements Message
{ /**
*
* [简要描述]:推送微信消息
* [详细描述]: 1:订单状态改成已发货
*
* @param parameter
*/
public void sendWxMessage(String openId,String tranNum,String logisticcompany,String logisticnum)
{
JSONObject parameters = new JSONObject();
MsgTemplateBean bean = MsgTemplateBean.getMsgTemplageBean(tranNum,logisticcompany,logisticnum);
bean.setTouser(openId);
parameters = JSONObject.fromObject(bean);
System.out.println("parameters: " + parameters.toString());
// else
// {
// //proName返利订单
// MsgforDistributeBean bean = MsgforDistributeBean.getMsgTemplageBean(payfee,phoneNum,proName);
// bean.setTouser(openId);
// parameters = JSONObject.fromObject(bean);
// }
Loger.logtxt("WxMessage", "发送消息"+parameters);
String access_token = getAccess_token();
if(null != access_token)
{
String returnstr = ConnectionUrlUtil.sendPost(Constant.SEND_MESSAGEURL+"?access_token="+access_token,parameters.toString());
try
{
JSONObject returnJson = JSONObject.fromObject(returnstr); if(0 == returnJson.getInt("errcode"))
{
Loger.logtxt("WxMessage", "发送消息成功"+parameters);
}
else
{
Loger.logtxt("WxMessage", "发送消息失败"+parameters);
}
}
catch (Exception e)
{
e.printStackTrace();
} }
else
{
//发送失败,获取token失败
Loger.logtxt("WxMessage", "发送消息失败,原因获取access_token失败 ");
} }
/**
*
* [简要描述]:获取到access_token
* [详细描述]:
*
* @return
*/
public String getAccess_token()
{
String access_token = "";//公司的access_token
String access_token_json = ConnectionUrlUtil.sendPost(Constant.TOKEN_URL, "grant_type=client_credential&appid=" + Constant.APP_ID + "&secret="
+ Constant.APP_SECRET);
if(Tools.isNotEmty(access_token_json))
{
JSONObject tokenJson = JSONObject.fromObject(access_token_json);
if(null != tokenJson && null!=tokenJson.get("access_token"))
{
//ACCESS_TOKEN
access_token = tokenJson.getString("access_token");
}
}
return access_token;
}
}
增加线程异步发送消息的方法一(Thread)的更多相关文章
- 增加线程异步发送消息的方法二(Runnable)
//获取当前时间:毫秒 long a = System.currentTimeMillis(); System.out.println("a :" + a); try { //更改 ...
- Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)
keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...
- Delphi实现获取句柄并发送消息的方法(FindWindow、FindWindowEx、EnumChildWindows、SendMessage)
Delphi实现获取句柄并发送消息的方法 本文以实例形式详细说明了Delphi获取句柄并发送消息的方法,具体用法说明如下: 查找另外一个窗口的句柄: handle := FindWindow(nil, ...
- kafka7 探索生产者同步or异步发送消息
1.生产者:在发送完消息后,收到回执确认. 主要是在SimpleProducer.java中修改了发送消息的2行代码,用到了回调函数,修改如下: //发送消息 ProducerRecord<St ...
- ActiveMQ producer同步/异步发送消息
http://activemq.apache.org/async-sends.html producer发送消息有同步和异步两种模式,可以通过代码配置: ((ActiveMQConnection)co ...
- C#实现在应用程序间发送消息的方法示例
本文实例讲述了C#实现在应用程序间发送消息的方法.分享给大家供大家参考,具体如下: 首先建立两个C#应用程序项目. 第一个项目包含一个Windows Form(Form1),在Form1上有一个But ...
- Rocketmq异步发送消息
package com.bfxy.rocketmq.quickstart; import java.util.List; import org.apache.rocketmq.client.excep ...
- 【转载】Delphi7从子线程中发送消息到主线程触发事件执行
在对数据库的操作时,有时要用一个子线程来进行后台的数据操作.比如说数据备份,转档什么的.在主窗口还能同是进行其它操作.而有时后台每处理一个数据文件,要向主窗口发送消息,让主窗口实时显示处理进度在窗口上 ...
- java 中Handler 和Runnable 的使用 异步发送消息 转
public class MainActivity extends Activity { TextView text1, text2; Button button; Thread th; @Overr ...
随机推荐
- [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能
[.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...
- MySQL外键之级联
简介 MySQL外键起到约束作用,在数据库层面保证数据的完整性.例如使用外键的CASCADE类型,当子表(例如user_info)关联父表(例如user)时,父表更新或删除时,子表会更新或删除记录,这 ...
- Atitit 查询优化器的流程attilax总结
Atitit 查询优化器的流程attilax总结 1.1. 来理解该过程:1 1.2. 关于这些优化器的最重要原则的就是:尽可能的减少扫描范围,2 1.3. .筛选条件分析2 1.4. 二.索引优化2 ...
- HTML5 音频播放器-Javascript代码(短小精悍)
直接上干货咯! //HTML5 音频播放器 lzpong 2015/01/19 var wavPlayer = function () { if(window.parent.wavPlayer) re ...
- JSP的基本语法
JSP的基本语法 一.JSP页面中的JAVA代码 二.JSP页面中的指令 三.JSP页面中的隐含对象(九大内置对象) 目录 一.JSP页面中的JAVA代码 JSP表达式(方便输出) JSP小脚本(完成 ...
- iOS开发--应用崩溃日志揭秘(二)
场景 4: 吃棒棒糖时闪退! 用户邮件说, “当rage master吃棒棒糖时应用就闪退…” 另一用户说, “我让rage master 吃棒棒糖,没几次应用就闪退了!”崩溃日志如下: Incide ...
- 【初恋】vue单页应用开发总结
vue新人,没有高级技巧 本文主要总结了使用vue-cli脚手架安装开发环境,使用vue.js等进行单页应用开发所遇问题的总结. 技术栈: Vue v1.0.21, vue-resource v0.9 ...
- AngularJS之Dependency Injection(五)
前言 这一节我们来讲讲AngularJS中的依赖注入,在实际开发中Angular提供了具体的方法供我们去调用,但是一旦业务不能满足要求或者出现麻烦或者错误时导致无从下手,所以基于此我们有必要深入一点去 ...
- xUnit安装及注意事项
前言 对于单元测试,想必大家都已再熟悉不过了,同时单元测试的重要性也越发突出,在招聘中也特别强调单元测试,但是对于微软内置的单元测试还是太过于繁琐,于是都在寻找一种简洁并且更加轻量的测试工具.用的最多 ...
- javascript中异步和闭包产生的困惑
这里我不打算大谈特谈什么是异步,什么是闭包,这些内容在博客园都已经写的够多的了,但是这些内容出现的多,并不代表所有初学者都已经撑握了,所以我还是打算,用一个比较常见的示例来分析一下,或许能让对这个问题 ...