`

与ODM组交互汇总(二)

 
阅读更多

接上一部分.

 

一, 需求: 

     每隔5分钟从photo表中把状态为I的图片用base64加密发送到ODM系统,同时把图片状态更改为P.

      每隔2小时,把状态为P的图片进行重发.

     每隔5分钟从ODM系统获取图片处理的状态,如何成功更新状态为A,失败更新为E,相应记录异常原因.

 

 二,  架构:

      我们的消息传递是通过JMS实现的,连接设置如下:

  

       图片是通过base64处理的,使用dom4j生成相应的消息格式

       备注: 经过base64处理后文件会加大33.3%

 三,  准备工作:

       1), wlclient-12.1.3.jar(通过weblogic生成)

       2), 发送message的格式样例

       3), 所需的URL及相应的queue

       4),确认是否有访问权限(telnet address port)

 

 

  四, 实现步骤:

       1), 数据库端实现.  查询图片与更新图片状态的2个功能

       2), java端根据传入的参数生成message, 发送到已配置好的jms服务器

       3), 把相应的java工程代码打包成SendPhoto_0.0.1.jar

       4), 编写shell脚本.

           i: 获取数据库链接

           ii: 获取图片相关信息

           iii: 调用SendPhoto_0.0.1.jar发送图片

            参数: job_id, creation_time, path_photo, ........

       5), java端连接JMS获取信息,打印图片相应的信息(job_id,doc_id, status, err_code)

       6),  把相应的java工程代码打包成PhotoStatus_0.0.1.jar

       7), 编写shell脚本.

             i: 获取数据库链接

             ii: 调用PhotoStatus_0.0.1.jar获取图片处理结果信息

             iii: 根据打印信息调用相应的存储过程更新图片状态

        8), 编写crontab 每5分钟执行一次脚本

   备注: 代码存于网盘/darren/projects/odm

 

 五, 问题汇总:

      1), JMS的queue中未收到message.

        可能原因:地址及queue是否正确; message格式是否正确,节点要一致; JMS监听是否开启.

      2),message中没有base64的图片信息

      可能原因: 图片确实不存在; 图片名称中有空格或特殊字符导致参数紊乱,无法找到图片.

      3), message中job_id过长,导致ODM组处理异常以致无任何返回值.

      4), message短时间内大批量重复发送,导致JMS崩溃.

      描述: JMS中设置了对message的achive的时间为1h, 短时间大批量的重复文件,超出JMS处理范围引发瘫痪. 解决方案是对于没有回应的message,延长重复时间至2h(之前为5m),当JMS achive完成后再重发就不会有类似问题.

      5). 手动shell脚本可以执行,但是用了crontab无法执行.

   原因: shell脚本中调用jar包没有写全路径,导致无法找到jar包

      6), 工程中对于有处理异常的消息没有及时突出,导致卡顿,无法进行下一个消息的发送

     解决方案:无论何种异常,要及时记录异常信息及相应退出

       7), message的生成跟发送放在同一个工程里,这会导致重用性低.

 

  六, 部分代码

      发送图片:

// step1: read args and generate message object

GXDMessage message = parseArgs(args);

log.info("start pusher: "+message.getFileName());

 

// step2: read configure property file and prepare to connect to odm

final QueueUtilsConfiguration config = MQPusher

.loadProperties(ApplicationConstant.CONFIG_PATH);

// step3: connect to odm server and send message

MQPusher.sendPicture(config, message);

 

   cod of method : sendPicture

/**

* send picture to scintilla message queue

* @param config  : the configure of server

* @param message: gxd message

*/

public static void sendPicture(QueueUtilsConfiguration config,

GXDMessage message) {

JMSHelper jmsHelper = null;

try {

//step 1: initialize class JMSHelper

jmsHelper = new JMSHelper(config.getInitialContextFactory(),

config.getProviderUrl(), config.getJndiConnFactory(),

config.getMqHostUser(), config.getMqHostPw(),

config.getJndiQueue());

} catch (Exception ne) {

log.error("send message failed. Details:" + e.getMessage());

System.exit(1);

}

 

try {

//step2: covert object to odm message.

String msg =  XMLBuilder.BuildXMLDoc(message).asXML();

 

//step3: send message

jmsHelper.send(msg.getBytes());

//step 4: close queue, session and connect.

jmsHelper.close();

} catch (JMSException e) {

log.error("sending message failed. Details:" + e.getMessage());

System.exit(1);

} catch (NamingException e) {

log.error("close session and conection failed. Details:"

+ e.getMessage());

System.exit(1);

}

 

}

 

 code of watcher :

// load properties

final QueueUtilsConfiguration config = MQWatcher

.loadProperties(ApplicationConstant.CONFIG_PATH);

// receive message

MQWatcher.receive(config);

 

          

 

           

 

 

 

  • 大小: 78.5 KB
分享到:
评论

相关推荐

    2017手机ODM市场研究

    供应链价格上涨对于ODM厂商而言是一个利好因素,因为品牌厂商寻求与ODM厂商合作以分担风险。 闻泰作为全球最大的手机ODM厂商,其出货量远远领先于其他厂商。闻泰公司的业务布局包括三个研发中心和一个生产基地,...

    AIX系统ODM管理

    #### 二、ODM的作用与特点 1. **数据管理:**ODM提供了一种灵活的数据管理机制,允许用户以对象的形式存储和检索信息。 2. **简化配置:**对于复杂的系统配置任务,ODM能够帮助简化流程,提高效率。 3. **安全性高...

    mongodb的odm封装

    MongoDB的ODM(Object-Document Mapping)是用于将数据模型与MongoDB文档数据库之间的映射技术,使得开发者可以用面向对象的方式来操作数据库,而无需直接处理底层的BSON文档。在PHP中,ODM框架可以帮助我们更高效、...

    ODM业务模式与渠道管理.pdf

    第二部分:ODM业务模式与经济学u曲线 经济学u曲线是指产品的生命周期中,需求和价格之间的关系曲线。ODM业务模式可以帮助企业更好地理解和预测产品的需求和价格,提高产品的生产和销售效率。 第三部分:ODM海外...

    ODM8.6-WAS样本服务器部署文档

    ODM8.6与WAS的集成主要涉及在WAS上配置和管理ODM的各个组件,如决策中心(DC)、决策服务(DS)和运行时环境(RTE)。这些组件需要在WAS上创建并配置相应的应用程序服务器,以便能够正确处理ODM的工作流程和业务规则。 2...

    odm-v2.2.250.rar

    odm-v2.2.250.rar

    IBM ODM for Dummies

    在IBM的产品线中,ODM 与其他工具和解决方案有很好的整合性,比如与其他IBM的业务流程管理工具、企业服务总线(Enterprise Service Bus,ESB)和云服务等。这为IBM ODM 用户提供了灵活性,可以根据企业现有的IT基础...

    ODM合作框架协议.pdf

    ODM合作框架协议.pdf ...ODM合作框架协议是甲乙双方达成的关于ODM项目合作及之后采购产品和服务的基础协议,涵盖了合作项目描述、经销范围、订购计划与支持、产品保证、技术合作和产品价格等六个方面的内容。

    Laravel开发-odm

    在这个"Laravel开发-odm"项目中,我们专注于将MongoDB的ODM功能与Laravel框架集成,以便更好地实现数据存储和检索。 Laravel框架本身主要设计用于SQL关系型数据库,但随着NoSQL数据库的普及,特别是MongoDB这样的...

    ONVIF Device Manager odm-v2.2.250

    ONVIF,ONVIF Device Manager,odm

    录像机ODM整机工具NVRBoxTestTool

    录像机ODM整机工具NVRBoxTestTool是一款专为录像机原始设备制造商(ODM)设计的测试软件,主要用于确保NVR(Network Video Recorder,网络视频录像机)产品的功能完整性、性能稳定性和兼容性。在开发和生产过程中,...

    AIX ODM管理介绍

    在实际应用中,AIX 管理员通常会利用 ODM 来管理硬件设备、文件系统、网络配置等,通过编写脚本或使用工具(如 `odmget`、`odmmod` 和 `odmdelete` 命令)来交互式地操作 ODM 数据库。了解和熟练掌握 ODM 管理对于...

    Laravel开发-laravel-odm

    而"Laravel开发-laravel-odm"这个主题聚焦于Laravel与MongoDB的集成,MongoDB是一种非关系型数据库(NoSQL),以其灵活性、高性能和可扩展性在大数据时代脱颖而出。 Laravel 4引入了门面(Facade)和服务容器等概念...

    odm-v2.2.250.msi.7z

    4. 日志记录:Onvif Device Manager记录与设备交互的日志,这对于排查故障和优化设备性能非常有帮助。 5. 实时预览:用户可以直接在软件中查看设备的实时视频流,方便监控和调试。 提到的服务器模拟器...

    电子制造业EMS与ODM现状参考.pdf

    电子制造服务(EMS)与原始设计制造商(ODM)是电子制造业中的重要组成部分。这两种模式在供应链管理、产品设计与制造、以及市场策略等方面扮演着关键角色,它们为各种电子产品的生产提供了灵活而高效的支持。 首先...

    CNCA-00C-002:2009 《强制性产品认证实施规则中涉及ODM模式的补充规定》.zip

    4. **产品一致性**:规定ODM产品在批量生产过程中应保持与认证样品的一致性,防止出现质量问题。 5. **监督与检查**:CNCA可能对ODM企业的生产现场进行定期或不定期的监督和检查,以验证其是否持续满足认证要求。 ...

    odm开源(仿迅雷源码)

    3. **任务调度与管理**:ODM具有任务管理功能,可以暂停、恢复、删除下载任务,并能按优先级进行排序。用户还可以设置下载限速、定时下载等,以适应不同的使用场景。 4. **断点续传**:如果下载过程中因网络问题...

    电子行业:手机ODM行业研究-20190910-西南证券-31页.pdf

    1. **手机出货量与ODM市场动态** 全球智能手机出货量呈现稳定态势,预计在14亿部左右。尽管整体市场增长缓慢,但ODM机型的出货量却呈现出上升趋势。随着5G时代的到来,ODM行业将迎来新的变化。2019年5G手机出货量约...

Global site tag (gtag.js) - Google Analytics