使用Spring JMS簡化非同步訊息處理
http://www.onjava.com/lpt/a/6490
這片文章介紹了Spring是如何簡化非同步訊息呼叫的,它通過一個貸款的例子來說Spring是如何減少
開發中的量的。
下面是傳統開發需要的程式碼量
public void sendMessage() { queueName = "queue/CreditRequestSendQueue"; System.out.println("Queue name is " + queueName); /* * Create JNDI Initial Context */ try { Hashtable env = new Hashtable(); env.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); env.put("java.naming.provider.url","localhost"); env.put("java.naming.factory.url.pkgs", "org.jnp.interfaces:org.jboss.naming"); jndiContext = new InitialContext(env); } catch (NamingException e) { System.out.println("Could not create JNDI API " + "context: " + e.toString()); } /* * Get queue connection factory and queue objects from JNDI context. */ try { queueConnectionFactory = (QueueConnectionFactory) jndiContext.lookup("UIL2ConnectionFactory"); queue = (Queue) jndiContext.lookup(queueName); } catch (NamingException e) { System.out.println("JNDI API lookup failed: " + e.toString()); } /* * Create connection, session, sender objects. * Send the message. * Cleanup JMS connection. */ try { queueConnection = queueConnectionFactory.createQueueConnection(); queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); queueSender = queueSession.createSender(queue); message = queueSession.createTextMessage(); message.setText("This is a sample JMS message."); System.out.println("Sending message: " + message.getText()); queueSender.send(message); } catch (JMSException e) { System.out.println("Exception occurred: " + e.toString()); } finally { if (queueConnection != null) { try { queueConnection.close(); } catch (JMSException e) {} } }}
然後是Spring的程式碼
public void send() { try { ClassPathXmlApplicationContext appContext = new
ClassPathXmlApplicationContext(new String[] { "spring-jms.xml"}); System.out.println("Classpath loaded"); JMSSender jmsSender = (JMSSender)appContext.getBean("jmsSender"); jmsSender.sendMesage(); System.out.println("Message sent using Spring JMS."); } catch(Exception e) { e.printStackTrace(); }}
表面上看Spring獲勝,程式碼少了很多,但是我們再來看看Spring配置的XML
org.jnp.interfaces.NamingContextFactory localhost org.jnp.interfaces:org.jboss.naming
UIL2ConnectionFactory
queue/CreditRequestSendQueue
queue/CreditReqeustReceiveQueue
30000
我們開始認清Spring的真面目把。無厘頭的配置,XML的夢魘。從一種混亂到另一種還亂。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=607922
相關文章
- Spring 系列,第 4 部分: Spring JMS 訊息處理Spring
- Service初探與非同步訊息處理機制非同步
- JMS java 訊息機制Java
- Android中的非同步訊息處理機制Android非同步
- 深入理解Android非同步訊息處理機制Android非同步
- IOS 訊息推送處理iOS
- 使用 Java API 處理 WebSphere MQ 大訊息JavaAPIWebMQ
- Spring Cloud Stream如何處理訊息重複消費?SpringCloud
- php ActiveMQ的傳送訊息,與處理訊息PHPMQ
- MPLS RSVP訊息處理——VecloudCloud
- Storm保證訊息處理ORM
- 三、訊息的可靠處理
- 訊息中介軟體與JMS標準
- weblogic jms訊息狀態messageWeb
- MQ 訊息佇列的解耦、介面非同步處理、削峰MQ佇列解耦非同步
- ActiveMQ第二彈:使用Spring JMS與ActiveMQ通訊MQSpring
- .net core 訊息流處理流程
- VCL中訊息處理初探 (轉)
- Android非同步訊息處理機制詳解及原始碼分析Android非同步原始碼
- 訊息佇列之JMS和AMQP對比佇列MQ
- 訊息稱 AMD 銳龍 7000 非 X 系列處理器 1 月 10 日上市
- 傑裡之不執行對箱按鍵同步訊息處理方法【篇】
- 如何處理RabbitMQ 訊息堆積和訊息丟失問題MQ
- 處理鍵盤輸入訊息(轉)
- C#的訊息處理方法 (轉)C#
- JMS pub/sub執行正常但訊息沒有
- Spring Ioc原始碼分析系列--Ioc容器註冊BeanPostProcessor後置處理器以及事件訊息處理Spring原始碼Bean事件
- 【實戰教程】微信卡券訊息處理
- Go 語言的錯誤訊息處理Go
- Storm基礎(四)保證訊息處理ORM
- JMS 在 Spring Boot 中的使用Spring Boot
- 請教mina處理訊息?需要建立訊息佇列?佇列
- Weblogic JMS佇列阻塞問題處理Web佇列
- 訊息中介軟體消費到的訊息處理失敗怎麼辦?
- 原始碼分析:Android訊息處理機制原始碼Android
- Android應用程式訊息處理機制Android
- 如何處理錯誤訊息PleaseinstalltheLinuxkernelheaderfilesLinuxHeader
- Cloud Foundry架構和訊息處理機制Cloud架構