日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JMS的样例

發布時間:2024/1/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JMS的样例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、JMS是一個由AS提供的Message服務。它能接受消息產生者(Message Provider)所發出的消息,并把消息轉發給消息消費者(Message? Consumer)。
2、JMS提供2種類型的消息服務:(1)Queue,即點對點,每一個消息僅僅轉發給一個消息消費者使用。(2)Topic,即公布和訂閱,每一個消息能夠轉發給全部的訂閱者(消費者)。
3、WEBLOGIC 8下的JMS配置:
(1)配置JMS Connection Factory
(2)配置JMS File Store(眼下所找到的文檔都是配置File Store,事實上在詳細的應用中,可能JMS JDBC Store更廣泛,但臨時沒有找到資料)
(3)配置JMS Server
(4)在JMS Server的destinations中配置JMS Queue或者JMS Topic
當中提供給消息產生者和消息消費者使用的是JMS Connection Factory的JNDI和JMS Queue或者JMS Topic的JNDI。
4、消息產生者向JMS發送消息的步驟:
(1)使用JNDI查詢對象JMS ConnectionFactory和Destination(JMS Queue/Topic)
(2)使用管理對象JMS ConnectionFactory建立連接Connection
(3)使用連接Connection 建立會話Session
(4)使用會話Session和管理對象Destination創建消息生產者MessageSender
(5)使用消息生產者MessageSender發送消息
一個消息發送者的樣例:

package myjms; import java.util.*; import javax.naming.*; import javax.jms.*; public class MessageProducter { public static void main(String[] args) { String queueConnectionFactoryName = "myjmsconnectionfactory"; //JMS Connection Factory的JNDI String queueName = "myjmsqueue"; //JMS Queue或者JMS Topic的JNDI boolean transacted = false;//transaction模式 int acknowledgementMode = Session.AUTO_ACKNOWLEDGE;//acknowledgement模式 String message="Message need to send";//模擬須要發送的消息 Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory"); properties.put(Context.PROVIDER_URL, "t3://localhost:7001"); try { Context context = new InitialContext(properties); Object obj = context.lookup(queueConnectionFactoryName); QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj;//JMS Connection Factory的獲得 obj = context.lookup(queueName); Queue queue = (Queue) obj;//JMS Queue或者JMS Topic的獲得 QueueConnection queueConnection=queueConnectionFactory.createQueueConnection();//產生連接 queueConnection.start(); QueueSession queueSession = queueConnection.createQueueSession(transacted, acknowledgementMode); TextMessage textMessage = queueSession.createTextMessage(); textMessage.clearBody(); textMessage.setText(message); QueueSender queueSender = queueSession.createSender(queue); queueSender.send(textMessage); if (transacted) { queueSession.commit(); } if (queueSender != null) { queueSender.close(); } if (queueSession != null) { queueSession.close(); } if (queueConnection != null) { queueConnection.close(); } } catch(Exception ex){ ex.printStackTrace(); } } }

5、消息消費者從JMS接受消息的步驟:
(1)使用JNDI查詢對象JMS ConnectionFactory和Destination(JMS Queue/Topic)
(2)使用管理對象JMS ConnectionFactory建立連接Connection
(3)使用連接Connection 建立會話Session
(4)使用會話Session和管理對象Destination創建消息消費者MessageReceiver
(5)使用消息消費者MessageReceiver接受消息,須要用setMessageListener將MessageListener接口綁定到MessageReceiver
消息消費者必須實現了MessageListener接口,須要定義onMessage事件方法。
一個消息消費者的樣例:

package myjms; import java.util.*; import javax.naming.*; import javax.jms.*; public class MessageReciever implements MessageListener { public void onMessage(Message message) { if (message instanceof TextMessage) { TextMessage textMessage = (TextMessage) message; try { System.out.println("Message content is:" + textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } } public static void main(String[] args) { MessageReciever msgRcvr=new MessageReciever(); String queueConnectionFactoryName = "myjmsconnectionfactory"; String queueName = "myjmsqueue"; boolean transacted = false; int acknowledgementMode = Session.AUTO_ACKNOWLEDGE; Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); properties.put(Context.PROVIDER_URL, "t3://localhost:7001"); try { Context context = new InitialContext(properties); Object obj = context.lookup(queueConnectionFactoryName); QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) obj; obj = context.lookup(queueName); Queue queue = (Queue) obj; QueueConnection queueConnection = queueConnectionFactory. createQueueConnection(); queueConnection.start(); QueueSession queueSession = queueConnection.createQueueSession(transacted, acknowledgementMode); QueueReceiver queueReceiver = queueSession.createReceiver(queue); queueReceiver.setMessageListener(msgRcvr); synchronized(msgRcvr){ msgRcvr.wait(100000); } if (queueReceiver != null) { queueReceiver.close(); } if (queueSession != null) { queueSession.close(); } if (queueConnection != null) { queueConnection.close(); } } catch (Exception ex) { ex.printStackTrace(); } } }

6、Message-driven Bean
MDB實際上就是一個消息消費者的client程序。它由AS EJB Container來管理。在JBUILDER生成一個MDB很easy。

轉載于:https://www.cnblogs.com/zfyouxi/p/4470873.html

總結

以上是生活随笔為你收集整理的JMS的样例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。