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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EMS server Tibco

發(fā)布時(shí)間:2024/4/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EMS server Tibco 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://www.cnblogs.com/jackson-ou/archive/2008/12/30/1365382.html

Note: From Tibco EMS Server document

1. Message Model
Point-to-Point模式(queue):每個(gè)Message僅有一個(gè)生產(chǎn)者和一個(gè)消費(fèi)者。每個(gè)Queue可以有多個(gè)生產(chǎn)者和多個(gè)消費(fèi)者。Queue可以被聲明具有排它性。具有排它性Queue中的消息
只能被第一個(gè)消費(fèi)者獲取。不論是否具有排它性,消息被某個(gè)消費(fèi)者獲取后,會(huì)從Queue中刪除。

Publish and Subscribe模式(topic):每個(gè)Message可以擁有若干生產(chǎn)者和若干個(gè)消費(fèi)者。消費(fèi)者根據(jù)訂閱關(guān)系獲取topic中的消息。EMS API允許持久性的訂閱者,消息會(huì)為這些持久性訂閱者所保存。

2. Destination
對(duì)Message Model功能的提升,主要特征包括:
a.通過secure模式提供queue, topic層面的訪問控制,參考secure mode and Destination Control
b.設(shè)置queue, topic占用內(nèi)存空間的約束,參考flowControl and overflowPolicy
c.路由消息到Destination,參考Working With Routes
d.通過在Destinatin之間創(chuàng)建bridge,建立混合型Message Model
e. 控制Message發(fā)送到Destination的速度,參考Flow Control
g. 與其他Message Service交換消息,如queue能夠從Tibco Rendezvous, SmartSockets接收消息,topic能夠與Tibco Rendezvous, SmartSockets雙向交換消息
h. queue可被設(shè)置為具有exclusive或者non-exclusive,參考exclusive
i. queue在可以設(shè)置redelivery policy,參考maxRedelivery
j. 跟蹤,日志消息到Destination的傳送過程,參考trace
k.在消息中包含user name,參考sender name and sender name enforced
l. 在Destination name上支持Wildcards
m.在topic, queue上設(shè)置failsafe屬性,用于把消息同步保存到硬盤上
n. 設(shè)置消費(fèi)者在后臺(tái)批量接受消息以提供性能,或者設(shè)置queue的消息一次只接收一個(gè)消息,參考prefetch

3. Client API
?提供基于java, .net,COBOL的API。示例代碼位于安裝目錄的samples子目錄。EMS同時(shí)提供了Java類用于純粹的Java TIBCO Rendezvous Application來連接EMS Server。

4. Administration
?EMS提供了針對(duì)Server Operation, Server Object(如ConnectionFactories, Destinations)的管理機(jī)制。這些管理功能可以通過Administration Tool的命令行工具實(shí)現(xiàn),也可以通過管
理API實(shí)現(xiàn)。EMS Client可以通過JNDI來獲取Server Object的引用。

管理Server功能:使用Configuration Files, EMS Administration Tool, Authentication and Permissions, Monitor Server Activity(包含Server Activity信息的日志文件,發(fā)布關(guān)于systemevent Message到Topic中便于對(duì)Server的監(jiān)控,對(duì)不同層次細(xì)節(jié)的統(tǒng)計(jì)分析)。

EMS提供對(duì)user, groups的本地化管理,也可以通過外部的LDAP來統(tǒng)一。TIBCO Hawk提供了對(duì)EMS Server的管理和監(jiān)控。EMS Server支持SSL協(xié)議,用于Client-Server,

Server-Server間的安全通信。支持backup EMS Server,實(shí)現(xiàn)了Fault Tolerance。EMS提供了Server-Server間的消息路由。Topic消息可以在任意多個(gè)hop間傳遞,Queue消息最多在一個(gè)hop間傳遞。EMS支持消息的存儲(chǔ)轉(zhuǎn)發(fā)。

=======

weblogic與MQ的集成方案大致有兩種:
一是將MQ配置為weblogic的外部JMS服務(wù)器(foreign JMS server),第二種是weblogic的消息橋(messaging bridge)
http://www.360doc.com/content/10/1129/16/4810544_73459234.shtml

3.3.集成到Weblogic
其實(shí)這部分的工作,沒多少難度,就是配置比較繁瑣,開始吧:

3.3.1.創(chuàng)建外部JMS服務(wù)器(foreign JMS server)

啟動(dòng)weblogic,登陸控制臺(tái),展開domain->服務(wù)->消息傳遞->JMS模塊。
選擇新建一個(gè)JMS模塊JMSModule_MQ:


圖3.3.1:創(chuàng)建JMS模塊

選擇一個(gè)server:

圖3.3.2:創(chuàng)建JMS模塊2

在剛才的模塊創(chuàng)建一個(gè)資源,類型為外部服務(wù)器(foreign server)名為ForeignServer_JMS:

圖3.3.3:創(chuàng)建模塊資源--外部服務(wù)器


圖3.3.4:創(chuàng)建模塊資源--外部服務(wù)器2

外部服務(wù)器JND配置

圖3.3.5:JNDI參數(shù)

在外部服務(wù)器創(chuàng)建兩個(gè)目標(biāo):

圖3.3.6:兩個(gè)目標(biāo)

及兩個(gè)連接工廠:

圖3.3.7:兩個(gè)連接工廠

配置完之后,當(dāng)然要寫一個(gè)MDB測(cè)試一下:
消息驅(qū)動(dòng)bean代碼如下:
Java代碼
  • package?mq; ??
  • ??
  • import?javax.annotation.Resource; ??
  • import?javax.ejb.ActivationConfigProperty; ??
  • import?javax.ejb.MessageDriven; ??
  • import?javax.jms.Message; ??
  • import?javax.jms.MessageListener; ??
  • import?javax.jms.QueueConnection; ??
  • import?javax.jms.QueueSender; ??
  • import?javax.jms.QueueSession; ??
  • import?javax.jms.Session; ??
  • import?javax.jms.TextMessage; ??
  • ??
  • /** ?
  • ?*? ?
  • ?*?@author?Justin ?
  • ?*/??
  • @MessageDriven(name?=?"TestMDB2",?mappedName?=?"jms/applicationJMSQueue", ??
  • activationConfig?=?{ ??
  • ????@ActivationConfigProperty(propertyName?=?"destinationType",?propertyValue?=?"javax.jms.Queue") ??
  • }) ??
  • public?class?MQTestBean2?implements?MessageListener?{ ??
  • ??
  • ????@Resource(mappedName?=?"jms/approvalJMSQueue") ??
  • ????private?javax.jms.Queue?approvalJMSQueue; ??
  • ????@Resource(mappedName?=?"jms/approvalFactory") ??
  • ????private?javax.jms.QueueConnectionFactory?approvalFactory; ??
  • ??
  • ????public?void?onMessage(Message?message)?{ ??
  • ??
  • ????????try?{ ??
  • ????????????String?msg?=?((TextMessage)?message).getText(); ??
  • ????????????System.out.println("=>?收到申請(qǐng):?"?+?msg); ??
  • ????????????sendMessage("同意申請(qǐng):"?+?msg); ??
  • ????????}?catch?(Exception?ex)?{ ??
  • ????????????ex.printStackTrace(); ??
  • ????????} ??
  • ????} ??
  • ??
  • ????private?void?sendMessage(String?msg)?throws?Exception?{ ??
  • ????????QueueConnection?conn?=?null; ??
  • ????????QueueSession?session?=?null; ??
  • ????????try?{ ??
  • ????????????conn?=?approvalFactory.createQueueConnection(); ??
  • ????????????session?=?conn.createQueueSession(false,?Session.AUTO_ACKNOWLEDGE); ??
  • ????????????QueueSender?sender?=?session.createSender(approvalJMSQueue); ??
  • ????????????Message?newMsg?=?session.createTextMessage(msg); ??
  • ????????????sender.send(newMsg); ??
  • ????????????System.out.println("=>?發(fā)送審批結(jié)果:"?+?msg); ??
  • ????????}?catch?(Exception?e)?{ ??
  • ????????????e.printStackTrace(); ??
  • ????????}?finally?{ ??
  • ????????????try?{ ??
  • ????????????????session.close(); ??
  • ????????????????conn.close(); ??
  • ????????????}?catch?(Exception?e)?{ ??
  • ????????????????e.printStackTrace(); ??
  • ????????????} ??
  • ????????} ??
  • ????} ??
  • }??
  • package mq; import javax.annotation.Resource; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.QueueConnection; import javax.jms.QueueSender; import javax.jms.QueueSession; import javax.jms.Session;

    部署文件如下:
    Xml代碼
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <weblogic-ejb-jar?xmlns="http://www.bea.com/ns/weblogic/90">??
  • ????<weblogic-enterprise-bean>??
  • ????????<ejb-name>TestMDB2</ejb-name>??
  • ????????<message-driven-descriptor>??
  • ????????????<destination-jndi-name>??
  • ????????????????jms/applicationJMSQueue ??
  • ????????????</destination-jndi-name>??
  • ????????????<connection-factory-jndi-name>??
  • ????????????????jms/applicationFactory ??
  • ????????????</connection-factory-jndi-name>??
  • ????????</message-driven-descriptor>??
  • ????</weblogic-enterprise-bean>??
  • </weblogic-ejb-jar>??
  • <?xml version="1.0" encoding="UTF-8"?> <weblogic-ejb-jar xmlns="http://www.bea.com/ns/weblogic/90"> <weblogic-enterprise-bean> <ejb-name>TestMDB2</ejb-name> <message-driven-descriptor> <destination-jndi-name> jms/applicationJMSQueue </destination-jndi-name> <connection-factory-jndi-name> jms/applicationFactory </connection-factory-jndi-name> </message-driven-descriptor> </weblogic-enterprise-bean> </weblogic-ejb-jar>

    打包并發(fā)布到weblogic。

    現(xiàn)在測(cè)試一下:
    在MQ管理器中,在application隊(duì)列放入一個(gè)消息:

    圖3.3.8.放入測(cè)試消息

    如果所有配置正確,則MDB->MQTestBean2會(huì)接收到剛剛放入的消息,并進(jìn)行處理,然后放到approval隊(duì)列:



    圖3.3.9.weblogic服務(wù)器輸出(netbeans控制臺(tái))

    之后我們可以再到MQ管理器查看approval隊(duì)列,可以看到MDB處理后的消息:



    圖3.3.10.到approval隊(duì)列查看處理后的消息

    OK,至此,我們成功地將MQ無縫地集成到了weblogic上,使部署在weblogic上的MDB可以像使用原生的JMS一樣操控MQ隊(duì)列了。

    ?

    總結(jié)

    以上是生活随笔為你收集整理的EMS server Tibco的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。