快速业务通道

如何获取消息?使用JMS技术作为数据复制的解决方案 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
quot;; public void init() throws NamingException {    InitialContext jndi = createInitialContext();    initConnectionFactory(jndi);    initFileTransferQueue(jndi); } public QueueConnection createConnection() throws JMSException {return     getConnectionFactory().createQueueConnection(getUserName(),       getPassword()); } public void initConnectionFactory(InitialContext jndi) throws     NamingException {       setConnectionFactory((QueueConnectionFactory)jndi.lookup          (getProperties().getProperty(CONNECTION_FACTORY_LOOKUP_NAME_KEY))); } public void initFileTransferQueue(InitialContext jndi) throws     NamingException {       setFileTransferQueue((Queue) jndi.lookup          (getProperties().getProperty(FILE_TRANSFER_QUEUE_LOOKUP_NAME_KEY))); }

如何获取消息?使用JMS技术作为数据复制的解决方案(3)

时间:2011-01-25 IBM Daniel Drasin

跳出传统模式,JMS 解决方案允许以可靠的方式传送消息,即一旦确认已将消息传送到 JMS 服务器,就将它传送至寻址到的目的地(队列)。MQSeries 也不例外。一旦成功执行了将消息发送到服务器的代码,客户机就保证目的地最终会接收到消息,即使所讨论的服务器在处理过程中出现故障(如果目的地暂时不可用,或者 JMS 服务器死机等等)。请参阅下面清单 3 中的示例代码。下面代码中的类实际上负责一旦它确定需要发送文件,就执行数据的发送。

通过将消息配置为持久消息,我们可以保证一旦目的地(队列)接收到消息,那么消息将保留在那里直到它在该队列中被检索为止 ― 即使在系统有故障期间。因此,一旦安全地将消息传送到本地 JMS 服务器,就可以删除它了。不能过高估计克服系统故障的能力;对周期性系统故障的处理是开发分布式存档解决方案最重要的问题之一。客户现有系统上处理故障情况的代码很复杂很脆弱,而且对这些故障的处理和维护费用很高。通过一个健壮的、经测试成功的商业解决方案,JMS 使我们能解决所有这些问题。

>清单 3. 来自类 ar.jms.file.send.ConnectionElement

public void sendMessage(byte[] payload, boolean persistent) throws     SendFailedException {     QueueSender sender = null;     try {     Message message = createMessage(payload);     sender = createSender      (persistent ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT);     sender.send(message);       getClient().getLogService().logInfo(getName() +       " sent message " + message.getJMSMessageID() + ".");     } catch (JMSException exception) {       getClient().getLogService().logError        ("JMS exception processing " + getName(),exception);       stop();       throw new SendFailedException("JMS Message Send Failed");    }     try {       sender.close();     } catch (JMSException ignore) {       getClient().getLogService().logInfo(getName() + " failed to       close sender. Processing will continue.");    } }

这个解决方案的关键是配置 JMS 消息和服务器来同时提供令人满意的性能和服务质量。JMS 规范定义了配置选项,并通过所有商业解决方案实现它们。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号