- 浏览: 136067 次
- 性别:
- 来自: 深圳
最新评论
-
wzk2111:
代码 可用,楼主的思路可以参考
javascript加密java解密 -
Imini123:
[align=center][color=red][/colo ...
freemarker实现通用分页,首页静态化,通用select,通用文章显示 -
igting:
js对+,@符号的加密应该有问题,java解密不对。
javascript加密java解密 -
Seanman:
初学freemarker,源码不全,不知道怎么用
freemarker实现通用分页,首页静态化,通用select,通用文章显示 -
无敌洋葱头:
目前这个只能对0-9 A-Z a-z加密,而且js还有问题。c ...
javascript加密java解密
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 加载DataChange的环境变量 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="file:${appHome}/datachange.properties" /><!-- webserver环境和线上环境一定要设appHome,单元测试环境下appHome为null --> <property name="ignoreResourceNotFound" value="true" /> <property name="ignoreUnresolvablePlaceholders" value="true" /> <property name="properties" ref="localDataChangeProperties" /><!-- 本地环境下使用此值 --> </bean> <bean name="localDataChangeProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="location" value="classpath:configDefault/datachange.properties" /> </bean> <!-- 导入默认的DataChange的发送者的配置 --> <import resource="classpath:dataChangeConfigDefault/spring-dataChange-sender.xml" /> <context:component-scan base-package="com.xxxpiao.datachange" /> </beans>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 加载DataChange的环境变量 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="file:${appHome}/dataChange-receiver.properties" /><!-- webserver环境和线上环境一定要设appHome,单元测试环境下appHome为null --> <property name="ignoreResourceNotFound" value="true" /> <property name="ignoreUnresolvablePlaceholders" value="true" /> <property name="properties" ref="localDataChangeProperties" /><!-- 本地环境下使用此值 --> </bean> <bean name="localDataChangeProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="location" value="classpath:/configDefault/dataChange-receiver.properties" /> </bean> <bean name="betGameIssueOpenAwardFilter" class="com.xxx.datachange.common.domain.FilterConfig"> <property name="dataType" value="bet_game_issue"></property> </bean> <bean name="betIssueDataChangeListener" class="com.xxx.betcart.server.datachange.BetIssueDataChangeListener" /> <bean name="changeHandleMapping" class="com.xxx.datachange.client.domain.ChangeHandleMapping"> <property name="sender" value="coreservice"></property> <property name="receiver" value="group-betcart"></property> <property name="dataChangeListener" ref="betIssueDataChangeListener" /> <property name="filterConfigList"> <list> <ref bean="betGameIssueOpenAwardFilter"></ref> </list> </property> </bean> <bean name="betPlanPackageFilter" class="com.xxx.datachange.common.domain.FilterConfig"> <property name="dataType" value="order"></property> </bean> <bean name="betPlanPackageDataChangeListener" class="com.xxx.betcart.server.datachange.BetPlanPackageDataChangeListener" > <property name="expertAccount" value="${dataChange.expertAccount}"/> </bean> <bean name="betPlanPackageChangeHandleMapping" class="com.xxx.datachange.client.domain.ChangeHandleMapping"> <property name="sender" value="coreservice"></property> <property name="receiver" value="group-betcart-planpackage"></property> <property name="dataChangeListener" ref="betPlanPackageDataChangeListener" /> <property name="filterConfigList"> <list> <ref bean="betPlanPackageFilter"></ref> </list> </property> </bean> <bean name="receiveManager" class="com.xxx.datachange.client.receive.ReceiveManager"> <property name="zkDataChangeRoot" value="/datachange/metaq" /> <property name="zkConnect" value="${dataChange.zkConnect}" /> <property name="changeHandleMappingList"> <list> <ref bean="changeHandleMapping"/> <ref bean="betPlanPackageChangeHandleMapping"/> </list> </property> <!-- 只处理发送时间在这个日期之后的消息,这样可以防止新应用接收到很久以前的消息 --> <property name="acceptMsgUpdateTimeAfterThis"> <bean factory-bean="dataChangeDateFormat" factory-method="parse"> <constructor-arg value="2014-05-06" /> </bean> </property> </bean> <bean id="dataChangeDateFormat" class="java.text.SimpleDateFormat"> <constructor-arg value="yyyy-MM-dd" /> </bean> </beans>
package com.xxxpiao.core.jms; import java.io.Serializable; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.ObjectMessage; import javax.jms.Session; import javax.jms.TextMessage; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import com.alibaba.fastjson.JSON; /** * 通用的消息发送类 * @project coreService * @author wellpha.wu * @date 2011-02-12 * Copyright (C) 2010-2012 www.2caipiao.com Inc. All rights reserved. */ public class MessageProducer { protected JmsTemplate jmsTemplate; /** * 使用jmsTemplate的send/MessageCreator()发送ObjectMessage类型的消息 */ public void sendMessage(final Serializable obj, Destination destination) { jmsTemplate.send(destination, new MessageCreator() { public Message createMessage(Session session) throws JMSException { ObjectMessage message = session.createObjectMessage(); message.setObject(obj); return message; } }); } public void sendTxtJSONMessage(final Serializable obj, Destination destination) { jmsTemplate.send(destination, new MessageCreator() { public Message createMessage(Session session) throws JMSException { TextMessage message = session.createTextMessage(); message.setText(JSON.toJSONString(obj)); return message; } }); } public void sendTxtMessage(final String text, Destination destination) { jmsTemplate.send(destination, new MessageCreator() { public Message createMessage(Session session) throws JMSException { TextMessage message = session.createTextMessage(); message.setText(text); return message; } }); } public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } }
package com.xxxpiao.core.jms; import javax.jms.Destination; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.xxx.datachange.domain.DataChangeDO; public class DataChangePublisher extends MessageProducer { protected static final Logger logger = LoggerFactory.getLogger("data_change_log"); /** 消息队列 */ private Destination datachangeTopic; public void setDatachangeTopic(Destination datachangeTopic) { this.datachangeTopic = datachangeTopic; } public void senDataChangeMessage(final DataChangeDO dataChangeDO) { logger.info("datatypemessage--DataId:{},DataType:{},ChangeType:{}.", new Object[]{dataChangeDO.getDataId(),dataChangeDO.getDataType(),dataChangeDO.getChangeType()}); super.sendTxtJSONMessage(dataChangeDO, datachangeTopic); } }
package com.xxxpiao.datachange.manager; import java.util.UUID; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import javax.annotation.PreDestroy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import com.xxx.datachange.constant.ChagneTypeConstant; import com.xxx.datachange.constant.ChangeFieldBitConstant; import com.xxx.datachange.constant.DataType; import com.xxx.datachange.domain.DataChangeDO; import com.xxxpiao.common.entity.member.Member; import com.xxxpiao.common.entity.member.MemberChargeLog; import com.xxxpiao.core.jms.DataChangePublisher; /** * 专门用于发送JMS消息 * */ @Service public class DataChangeManagerImpl { protected static transient final Logger logger = LoggerFactory.getLogger("data_change_log"); @Autowired @Qualifier("dataChangePublisher") private DataChangePublisher dataChangePublisher; private final ExecutorService threadPool = Executors.newFixedThreadPool(10); /** * 生成可靠的UUID,从DataChange1.0 升级到2.0,需要为每个消息设置一个UUID来去重。 * 以后会删除,其它程序不能使用这个函数 * @author zhixuan.chen * @date 2014年3月19日 * @return */ public static String generateUUID() { return UUID.randomUUID().toString(); } /** * 产生投注消息,包括合买,追号等投注消息 * @param orderID * @param planID */ public void createOrderPlanMessage(String uuid, long orderID,long planID,int orderType) { threadPool.execute(new CreateOrderTask(uuid, dataChangePublisher,orderID,planID,orderType)); } /** * 注册消息 * @param member */ public void createRegisterMessage(String uuid, Member member) { threadPool.execute(new CreateMemberTask(uuid, member,dataChangePublisher,ChagneTypeConstant.DATA_INSERT)); } /** * 注册消息 * @param member */ public void createRegisterMessage(String uuid, Member member,long type) { threadPool.execute(new CreateMemberTask(uuid, member,dataChangePublisher,ChagneTypeConstant.DATA_INSERT,type)); } /** * 实名认证消息 * @param member */ public void createRealNameMessage(String uuid, Member member) { threadPool.execute(new CreateMemberTask(uuid, member,dataChangePublisher,ChagneTypeConstant.DATA_MODIFY,ChangeFieldBitConstant.member_certNo)); } /** * 充值消息 * @param returnLog */ public void createChargeMessage(String uuid, MemberChargeLog returnLog) { threadPool.execute(new CreateChargeTask(uuid, returnLog,dataChangePublisher)); } /** * 设置大奖号码消息 * @param member */ public void createGetMoneyWayMessge(String uuid, Member member) { threadPool.execute(new CreateMemberTask(uuid, member,dataChangePublisher,ChagneTypeConstant.DATA_MODIFY,ChangeFieldBitConstant.member_get_money_phone)); } /** * 发送中奖消息 * @param planId * @param memberId */ public void createDrawMessage(String uuid, long planId,long memberId) { threadPool.execute(new CreateDrawTask(uuid, planId,memberId,dataChangePublisher)); } private static final class CreateChargeTask implements Runnable { private String uuid; private MemberChargeLog returnLog = null; private DataChangePublisher dataChangePublisher; public CreateChargeTask(String uuid, MemberChargeLog returnLog,DataChangePublisher dataChangePublisher) { this.uuid = uuid; this.returnLog = returnLog; this.dataChangePublisher = dataChangePublisher; } @Override public void run() { try { if(returnLog!=null) { logger.info("CreateChargeTask chargeid is {}",new Object[]{returnLog.getId()}); } DataChangeDO dataChangeDO = new DataChangeDO(); dataChangeDO.setUuid(uuid); dataChangeDO.setDataId(returnLog.getId()); dataChangeDO.setDataType(DataType.chargeLog); dataChangeDO.setChangeType(ChagneTypeConstant.DATA_INSERT); dataChangePublisher.senDataChangeMessage(dataChangeDO); } catch(Throwable e) { if(returnLog!=null) { logger.error("Run createChargeTas failed "+returnLog.getId(),e); }else { logger.error("Run createChargeTas failed",e); } } finally { this.returnLog = null; this.dataChangePublisher = null; } } } private static final class CreateMemberTask implements Runnable { private String uuid; private Member member = null; private DataChangePublisher dataChangePublisher; private byte optype; private long type = -1; public CreateMemberTask(String uuid, Member member,DataChangePublisher dataChangePublisher,byte optype) { this.uuid = uuid; this.member = member; this.optype = optype; this.dataChangePublisher = dataChangePublisher; } public CreateMemberTask(String uuid, Member member,DataChangePublisher dataChangePublisher,byte optype,long type) { this.uuid = uuid; this.member = member; this.optype = optype; this.type = type; this.dataChangePublisher = dataChangePublisher; } @Override public void run() { try { if(member!=null) { logger.info("CreateMemberTask memberid is {},optype is {},type {}",new Object[]{member.getId(),optype,type}); } DataChangeDO dataChangeDO = new DataChangeDO(); dataChangeDO.setUuid(uuid); dataChangeDO.setDataId(member.getId()); dataChangeDO.setDataType(DataType.member); dataChangeDO.setChangeType(optype); if(type!=-1) { dataChangeDO.setChangeFieldBit(type); } dataChangePublisher.senDataChangeMessage(dataChangeDO); } catch(Throwable e) { if(member!=null) { logger.error("Run CreateMemberTask failed "+member.getId(),e); }else { logger.error("Run CreateMemberTask failed",e); } } finally { this.member = null; this.dataChangePublisher = null; } } } private static final class CreateOrderTask implements Runnable { private long orderID ; private long planID ; private int orderType = -1; private long presentType = -1; private DataChangePublisher dataChangePublisher; /** * 唯一的消息ID,目前是UUID,用于dataChange1.0升级2.0的改造。 * 其它程序不可乱用,以后会删掉! * @author zhixuan.chen * @date 2014-03-19 */ private String uuid; public CreateOrderTask(String uuid, DataChangePublisher dataChangePublisher,long orderID,long planID,int orderType) { this.uuid = uuid; this.dataChangePublisher = dataChangePublisher; this.orderID = orderID; this.planID = planID; this.orderType = orderType; } public CreateOrderTask(String uuid, DataChangePublisher dataChangePublisher, long orderID, long planID, int orderType, int presentType) { this.uuid = uuid; this.dataChangePublisher = dataChangePublisher; this.orderID = orderID; this.planID = planID; this.orderType = orderType; this.presentType=presentType; } @Override public void run() { try { logger.info("CreateOrderTask orderID is {},planID is {},ordertype {},presentType {}",new Object[]{orderID,planID,orderType,presentType}); DataChangeDO dataChangeDO = new DataChangeDO(); dataChangeDO.setUuid(uuid); dataChangeDO.setDataId(orderID); dataChangeDO.setRelateId(planID); dataChangeDO.setChangeFieldBit(orderType); //这个地方吧放在oldStatus1 dataChangeDO.setOldStatus1((int)presentType); dataChangeDO.setDataType(DataType.order); dataChangeDO.setChangeType(ChagneTypeConstant.DATA_INSERT); dataChangePublisher.senDataChangeMessage(dataChangeDO); } catch(Throwable e) { logger.error("Run CreateOrderTask failed "+orderID,e); } finally { this.dataChangePublisher = null; } } } private static final class CreateDrawTask implements Runnable { private String uuid; private long planId; private long memberId; private DataChangePublisher dataChangePublisher; public CreateDrawTask(String uuid, long planId,long memberId,DataChangePublisher dataChangePublisher) { this.uuid = uuid; this.planId=planId; this.memberId=memberId; this.dataChangePublisher = dataChangePublisher; } @Override public void run() { try { logger.info("CreateDrawTask dataid is {},relateid is {}",new Object[]{planId,memberId}); DataChangeDO dataChangeDO = new DataChangeDO(); dataChangeDO.setUuid(uuid); dataChangeDO.setDataId(planId); dataChangeDO.setDataType(DataType.betPlan); dataChangeDO.setChangeType(ChagneTypeConstant.DATA_MODIFY); dataChangeDO.setRelateId(memberId); dataChangePublisher.senDataChangeMessage(dataChangeDO); } catch(Throwable e) { logger.error("Run CreateDrawTask failed ,{},{}",new Object[]{planId,memberId}); } finally { this.dataChangePublisher = null; } } } /** * 产生登陆信息 * @param memberId */ public void createClientLoginMessage(String uuid, long memberId) { threadPool.execute(new CreateClientLoginTask(uuid, dataChangePublisher,memberId)); } private static final class CreateClientLoginTask implements Runnable { private String uuid; private long memberId; private DataChangePublisher dataChangePublisher; public CreateClientLoginTask(String uuid, DataChangePublisher dataChangePublisher,long memberId) { this.uuid = uuid; this.memberId=memberId; this.dataChangePublisher = dataChangePublisher; } @Override public void run() { try { logger.info("CreateClientLoginTask dataid is {}",memberId); DataChangeDO dataChangeDO = new DataChangeDO(); dataChangeDO.setUuid(uuid); dataChangeDO.setDataId(memberId); dataChangeDO.setDataType(DataType.member); dataChangeDO.setChangeType(ChagneTypeConstant.DATA_MODIFY); dataChangeDO.setChangeFieldBit(ChangeFieldBitConstant.member_last_login_time); dataChangePublisher.senDataChangeMessage(dataChangeDO); } catch(Throwable e) { logger.error("Run CreateClientLoginTask failed ,{}",memberId); } finally { this.dataChangePublisher = null; } } } /** * 当spring容器停止的时候销毁资源 */ @PreDestroy public void destroy() { threadPool.shutdownNow(); logger.debug("发消息服务线程池关闭"); } // 增加代购消息发送给VIP系统添加财富值使用 public void createOrderPlanMessage(String uuid, long orderID,long planID,int orderType,int presentType) { threadPool.execute(new CreateOrderTask(uuid, dataChangePublisher,orderID,planID,orderType,presentType)); } }
package com.xxx.datachange.domain; public class DataChangeDO implements java.io.Serializable { private static final long serialVersionUID = 608049506513890581L; /** * 唯一的消息ID,目前是UUID,用于dataChange1.0升级2.0的改造。 * 其它程序不可乱用,以后会删掉! * @author zhixuan.chen * @date 2014-03-19 */ private String uuid; /** * 唯一的消息ID,目前是UUID,用于dataChange1.0升级2.0的改造。 * 其它程序不可乱用,以后会删掉! * @author zhixuan.chen * @date 2014年3月19日 * @return */ public String getUuid() { return uuid; } /** * 唯一的消息ID,目前是UUID,用于dataChange1.0升级2.0的改造。 * 其它程序不可乱用,以后会删掉! * @author zhixuan.chen * @date 2014年3月19日 * @param uuid */ public void setUuid(String uuid) { this.uuid = uuid; } /** * 数据记录ID,根据后面DATATYPE来判断,当 */ private long dataId; /** * 数据变化类型, 1表示消息类型对应表示member,2表示消息类型对应表示bet_order表,3表示消息类型对应表示member_charge_log表 */ private int dataType; /** * 1消息操作类型为插入,2消息操作类型为修改,3消息操作类型为设置提款号码 */ private byte changeType; /** * 原始状态1,跟具体业务部门协商,暂时没有使用 */ private int oldStatus1; /** * 原始状态2,跟具体业务部门协商,暂时没有使用 */ private int oldStatus2; /** * 变化字段索引,跟具体业务部门协商,暂时没有使用 */ private long changeFieldBit; /** * 与当前变化,关联ID。目前在投注消息中,DATAID是ORDERID,但是业务数据通过方案来查可能更快一下。给出了关联的方案主键为方案ID */ private long relateId; public long getDataId() { return dataId; } public void setDataId(long dataId) { this.dataId = dataId; } public int getDataType() { return dataType; } public void setDataType(int dataType) { this.dataType = dataType; } public byte getChangeType() { return changeType; } public void setChangeType(byte changeType) { this.changeType = changeType; } public int getOldStatus1() { return oldStatus1; } public void setOldStatus1(int oldStatus1) { this.oldStatus1 = oldStatus1; } public int getOldStatus2() { return oldStatus2; } public void setOldStatus2(int oldStatus2) { this.oldStatus2 = oldStatus2; } public long getChangeFieldBit() { return changeFieldBit; } public void setChangeFieldBit(long changeFieldBit) { this.changeFieldBit = changeFieldBit; } public void addChangeFieldBit(long bit){ this.changeFieldBit |= bit; } public long getRelateId() { return relateId; } public void setRelateId(long relateId) { this.relateId = relateId; } }
发表评论
文章已被作者锁定,不允许评论。
-
ES聚合查询大全
2020-11-18 16:16 231package com.xxx.es; import ... -
spring中使用logback日志组件替换log4j
2015-04-29 15:27 912logback比log4j的强大之处,请到logback的主页 ... -
java加密解密
2015-02-10 15:05 1669package com.neo.xnol.weixin.u ... -
eclipse常用配置
2015-01-05 11:23 1187Eclipse常用配置介绍 以 ... -
分布式事务-幂等
2014-12-30 14:04 645引用 http://www.360doc.com/conten ... -
实现基于nginx的tomcat负载均衡和集群配置
2014-12-26 16:22 1060今天看到"基于apache的tomcat负载均衡和集 ... -
java导出Excel
2014-10-14 17:00 1063package com.xxxpiao.datacompa ... -
<base target="_self"/>标签的巧妙用法
2014-10-10 15:34 696最近项目中一个小问题卡了我不少时间。我遇到的问题是:在项目的弹 ... -
分布式一致性-幂等
2014-09-28 14:53 1032关于分布式系统的数据 ... -
ModelResult-查询封装类
2014-09-25 09:14 3485package com.xxx.appmodel.doma ... -
LDAP工具类
2014-09-05 10:12 851package com.xxxpiao.common.ut ... -
通过JNDI访问LDAP目录服务
2014-09-04 17:46 3058package com.sina.test; imp ... -
java获取两个日期之间的年月(yyyy-MM)和年月日(yyyy-MM-dd)
2014-07-29 14:42 1735public List<String> pro ... -
maven-.m2
2014-07-28 14:48 758<settings> <!--< ... -
maven实战
2014-07-07 10:04 721<settings> <!--< ... -
验证敏感词汇
2014-07-04 10:01 917package com.xxxpiao.core.memb ... -
互联网数功能位,表扩展(flagBit,feature)
2014-06-26 17:39 767<select id="queryRegT ... -
线程运用-抽象类使用
2014-06-26 17:34 807package com.xxx.betcart.serve ... -
JDBC分批更新
2014-06-26 17:11 581@Override public boolean ba ... -
分批查询
2014-06-26 17:08 787package com.xxxpiao.common.ut ...
相关推荐
JMS 在系统中的应用,可以修改后应用于系统中。
9.3.4 JMS 实战 387 9.3.5 AMQP 实战 391 9.4 系统集成Spring Integration 395 9.4.1 Spring Integration 快速入门 395 9.4.2 Message 395 9.4.3 Channel 395 9.4.4 Message EndPoint 398 9.4.5 Spring Integration ...
9.3.4 JMS 实战 387 9.3.5 AMQP 实战 391 9.4 系统集成Spring Integration 395 9.4.1 Spring Integration 快速入门 395 9.4.2 Message 395 9.4.3 Channel 395 9.4.4 Message EndPoint 398 9.4.5 Spring Integration ...
9.3.4 JMS 实战 387 9.3.5 AMQP 实战 391 9.4 系统集成Spring Integration 395 9.4.1 Spring Integration 快速入门 395 9.4.2 Message 395 9.4.3 Channel 395 9.4.4 Message EndPoint 398 9.4.5 Spring Integration ...
基于Java通讯开发jms源代码 (jms通讯开发源码) java,net,socket,通讯开发,jms /* * @(#)Message.java 1.60 02/04/09 * * Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved. * * SUN ...
分享课程——基于JSONP+ngBind+ngRepea技术实战美玩网(BootStrap+AngularJS+JMS+Highcharts);本教程主要从基础出发到项目的整体框架整合,整个大纲内容涉及面较为广泛,涉及到数据库技术,javaEE技术点,web框架...
经典Java EE企业应用实战codes06:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发-利用JMS实现企业消息处理
ActiveMQ 实战。本手册介绍了JMS以及ActiveMQ的常用操作以及配置。可以作为ActiveMQ应用开发人员的参考手册。
Camel supports over 80 common transports such as HTTP, REST, JMS, and Web Services. Camel in Action is a Camel tutorial full of small examples showing how to work with the integration patterns. It ...
含如下内容:JMS API;Apache-activeMQ;ActiveMQ实战pdf
主要介绍了JMS简介与ActiveMQ实战代码分享,具有一定借鉴价值,需要的朋友可以参考下
中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...
中文名: Camel 实战 原名: Camel in Action 作者: Claus Ibsen Jonathan Anstey 资源格式: PDF 版本: 英文文字版/更新源代码 出版社: Manning书号: 9781935182368发行时间: 2010年12月 地区: 美国 语言: 英文 简介: ...
13消息中间件解决方案JMS 14SpringBoot框架与短信解决方案 15单点登录解决方案CAS 16购物车解决方案 17跨域解决方案与提交订单 18微信扫码支付 19秒杀解决方案 20品优购系统业务分析 1集群概述 2...
收入了164个完整的、来自实战的Java编程实例,每个例子都有详尽的注释,全新的第二版涵盖了Java v1.3,实现了20个不同的Java API,其中包括Servelt、JSP、XML、Swing和Java2D java 网络高级编程(PDF) 介绍了网络...
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展...
2:JMS基本概念和模型 3:JMS的可靠性机制 4:JMS的API结构和开发步骤 5:Broker的启动方式 6:ActiveMQ结合Spring开发 7:ActiveMQ支持的传输协议 8:ActiveMQ消息存储持久化 9:ActiveMQ的静态网络链接 10:多线程...
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展...
ACTIVEMQ实战部分翻译,只翻译了第一章到第四章的第三节