增加线程异步发送消息的方法二(Runnable)
//获取当前时间:毫秒
long a = System.currentTimeMillis();
System.out.println("a :" + a); try
{
//更改订单状态
shopService.updateOrder(order); //如果订单状态从 支付成功 改成 已发货,则给用户发送一条微信消息。
if (Integer.parseInt(stats) == 3){
//异步发送微信消息
MessageImpl messageImpl = new MessageImpl(openId, tranNum, logisticcompany, logisticnum);
messageImpl.run();
//同步发送微信消息
//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));
package com.starcloud.helpapp.wxMessage.service.impl; import org.springframework.stereotype.Service; import net.sf.json.JSONObject; import com..helpapp.common.Loger;
import com..helpapp.common.utils.Tools;
import com..helpapp.wxMessage.ConnectionUrlUtil;
import com..helpapp.wxMessage.beans.MsgTemplateBean;
import com..helpapp.wxMessage.common.Constant;
import com..helpapp.wxMessage.service.Message; public class MessageImpl implements Runnable
{ /**
*
* [简要描述]:推送微信消息
* [详细描述]: 1:订单状态改成已发货
*
* @param parameter
*/
String openId;
String tranNum;
String logisticcompany;
String logisticnum; public void MessageImpl(String openId,String tranNum,String logisticcompany,String logisticnum)
{
this.openId = openId;
this.tranNum = tranNum;
this.logisticcompany = logisticcompany;
this.logisticnum = logisticnum; } 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
// {
//
// 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 = "";
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;
}
@override
public void run(){
sendWxMessage(openId,tranNum, logisticcompany, logisticnum);
}
}
增加线程异步发送消息的方法二(Runnable)的更多相关文章
- 增加线程异步发送消息的方法一(Thread)
@RequestMapping(value="order/updateOrder.do") public String updateOrder(HttpServletRequest ...
- 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 ...
随机推荐
- log4j.xml的实用例子
大多数讲log4j配置的教程用的都是log4j.properties文件,我觉得xml或许更好一点,在这里我提供一个我已经用于生产环境的log4j.xml的例子,先上代码,然后再解释: <?xm ...
- Linux sudo
200 ? "200px" : this.width)!important;} --> 介绍 本篇文章主要介绍sudo配置和用法,为了给某个用户控制权限比如执行某个命令或者关 ...
- 如何创建一个AJAX-Enabled WCF Service
原创地址:http://www.cnblogs.com/jfzhu/p/4041638.html 转载请注明出处 前面的文章中介绍过<Step by Step 创建一个WCF Servi ...
- 学习nodejs有感
接触nodejs一段时间了,不断的去接触接触,nodejs是一个能让前端程序员做后台开发的一项技术. 随着学习,让我更好的理解了前后端,以及浏览器是如何运作的
- 关于SubSonic3.0插件更新字符串过长引发的System.Data.SqlClient.SqlException的异常修复
最近公司客服提交了个BUG,说是更新产品详细信息时,有的可以有的更新不了,前段时间一直没空所以暂时放下,刚才又出现这个问题,所以马上处理了一下. 打开项目解决方案,进入DEBUG模式,拿到操作的数据提 ...
- Android随笔之——用shell脚本模拟用户按键、触摸操作
之前写过两篇关于Android中模拟用户操作的博客(其实用一篇是转载的),现在就来讲讲用shell脚本来模拟用户按键操作.本次的目标是用shell脚本打开微信并在其搜索框中搜索相关内容. 本文的模拟功 ...
- 基于讯飞语音API应用开发之——离线词典构建
最近实习在做一个跟语音相关的项目,就在度娘上搜索了很多关于语音的API,顺藤摸瓜找到了科大讯飞,虽然度娘自家也有语音识别.语义理解这块,但感觉应该不是很好用,毕竟之前用过百度地图的API,有问题也找不 ...
- setTimeout与取号机之间的关系
说到setTimeout写过javascript的伙伴们一定不会陌生,去银行办过存取款业务的伙伴一定对取号机不会陌生.今天群里有个好伙伴在问setTimeout的问题,大伙你一言我一语,讲了很多,可是 ...
- RHEL 6.3 详细安装教程
以前刚接触linux时,什么都不懂,为了学习,在电脑上安装双系统(原系统为Win7),吃过不少苦头,在网上搜教程,很多都是语焉不详,导致安装过程中战战兢兢.最近朋友面试运维,面试官有考他对linux安 ...
- RSA密钥,JAVA与.NET之间转换
最近在做银联的一个接口,用到RSA签名,悲剧来了,.net用的RSA密钥格式和JAVA用的不一样 .net为XML格式 <RSAKeyValue><Modulus>53Knuj ...