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):每个Message仅有一个生产者和一个消费者。每个Queue可以有多个生产者和多个消费者。Queue可以被声明具有排它性。具有排它性Queue中的消息只能被第一个消费者获取。不论是否具有排它性,消息被某个消费者获取后,会从Queue中删除。

Publish and Subscribe模式(topic):每个Message可以拥有若干生产者和若干个消费者。消费者根据订阅关系获取topic中的消息。EMS API允许持久性的订阅者,消息会为这些持久性订阅者所保存。

2. Destination
对Message Model功能的提升,主要特征包括:
a.通过secure模式提供queue, topic层面的访问控制,参考secure mode and Destination Control
b.设置queue, topic占用内存空间的约束,参考flowControl and overflowPolicy
c.路由消息到Destination,参考Working With Routes
d.通过在Destinatin之间创建bridge,建立混合型Message Model
e. 控制Message发送到Destination的速度,参考Flow Control
g. 与其他Message Service交换消息,如queue能够从Tibco Rendezvous, SmartSockets接收消息,topic能够与Tibco Rendezvous, SmartSockets双向交换消息
h. queue可被设置为具有exclusive或者non-exclusive,参考exclusive
i. queue在可以设置redelivery policy,参考maxRedelivery
j. 跟踪,日志消息到Destination的传送过程,参考trace
k.在消息中包含user name,参考sender name and sender name enforced
l. 在Destination name上支持Wildcards
m.在topic, queue上设置failsafe属性,用于把消息同步保存到硬盘上
n. 设置消费者在后台批量接受消息以提供性能,或者设置queue的消息一次只接收一个消息,参考prefetch

3. Client API
 提供基于java, .net,COBOL的API。示例代码位于安装目录的samples子目录。EMS同时提供了Java类用于纯粹的Java TIBCO Rendezvous Application来连接EMS Server。

4. Administration
 EMS提供了针对Server Operation, Server Object(如ConnectionFactories, Destinations)的管理机制。这些管理功能可以通过Administration Tool的命令行工具实现,也可以通过管理API实现。EMS Client可以通过JNDI来获取Server Object的引用。

管理Server功能:使用Configuration Files, EMS Administration Tool, Authentication and Permissions, Monitor Server Activity(包含Server Activity信息的日志文件,发布关于systemevent Message到Topic中便于对Server的监控,对不同层次细节的统计分析)。

EMS提供对user, groups的本地化管理,也可以通过外部的LDAP来统一。TIBCO Hawk提供了对EMS Server的管理和监控。EMS Server支持SSL协议,用于Client-Server,

Server-Server间的安全通信。支持backup EMS Server,实现了Fault Tolerance。EMS提供了Server-Server间的消息路由。Topic消息可以在任意多个hop间传递,Queue消息最多在一个hop间传递。EMS支持消息的存储转发。

=======

weblogic与MQ的集成方案大致有两种:
一是将MQ配置为weblogic的外部JMS服务器(foreign JMS server),第二种是weblogic的消息桥(messaging bridge)
http://www.360doc.com/content/10/1129/16/4810544_73459234.shtml

3.3.集成到Weblogic
其实这部分的工作,没多少难度,就是配置比较繁琐,开始吧:

3.3.1.创建外部JMS服务器(foreign JMS server)

启动weblogic,登陆控制台,展开domain->服务->消息传递->JMS模块。
选择新建一个JMS模块JMSModule_MQ:

图3.3.1:创建JMS模块

选择一个server:

图3.3.2:创建JMS模块2

在刚才的模块创建一个资源,类型为外部服务器(foreign server)名为ForeignServer_JMS:

图3.3.3:创建模块资源--外部服务器
图3.3.4:创建模块资源--外部服务器2

外部服务器JND配置

图3.3.5:JNDI参数

在外部服务器创建两个目标:

图3.3.6:两个目标

及两个连接工厂:

图3.3.7:两个连接工厂

配置完之后,当然要写一个MDB测试一下:
消息驱动bean代码如下:

Java代码
  1. package mq;
  2. import javax.annotation.Resource;
  3. import javax.ejb.ActivationConfigProperty;
  4. import javax.ejb.MessageDriven;
  5. import javax.jms.Message;
  6. import javax.jms.MessageListener;
  7. import javax.jms.QueueConnection;
  8. import javax.jms.QueueSender;
  9. import javax.jms.QueueSession;
  10. import javax.jms.Session;
  11. import javax.jms.TextMessage;
  12. /**
  13. *
  14. * @author Justin
  15. */
  16. @MessageDriven(name = "TestMDB2", mappedName = "jms/applicationJMSQueue",
  17. activationConfig = {
  18. @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
  19. })
  20. public class MQTestBean2 implements MessageListener {
  21. @Resource(mappedName = "jms/approvalJMSQueue")
  22. private javax.jms.Queue approvalJMSQueue;
  23. @Resource(mappedName = "jms/approvalFactory")
  24. private javax.jms.QueueConnectionFactory approvalFactory;
  25. public void onMessage(Message message) {
  26. try {
  27. String msg = ((TextMessage) message).getText();
  28. System.out.println("=> 收到申请: " + msg);
  29. sendMessage("同意申请:" + msg);
  30. catch (Exception ex) {
  31. ex.printStackTrace();
  32. }
  33. }
  34. private void sendMessage(String msg) throws Exception {
  35. QueueConnection conn = null;
  36. QueueSession session = null;
  37. try {
  38. conn = approvalFactory.createQueueConnection();
  39. session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
  40. QueueSender sender = session.createSender(approvalJMSQueue);
  41. Message newMsg = session.createTextMessage(msg);
  42. sender.send(newMsg);
  43. System.out.println("=> 发送审批结果:" + msg);
  44. catch (Exception e) {
  45. e.printStackTrace();
  46. finally {
  47. try {
  48. session.close();
  49. conn.close();
  50. catch (Exception e) {
  51. e.printStackTrace();
  52. }
  53. }
  54. }
  55. }
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代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <weblogic-ejb-jar xmlns="http://www.bea.com/ns/weblogic/90">
  3. <weblogic-enterprise-bean>
  4. <ejb-name>TestMDB2</ejb-name>
  5. <message-driven-descriptor>
  6. <destination-jndi-name>
  7. jms/applicationJMSQueue
  8. </destination-jndi-name>
  9. <connection-factory-jndi-name>
  10. jms/applicationFactory
  11. </connection-factory-jndi-name>
  12. </message-driven-descriptor>
  13. </weblogic-enterprise-bean>
  14. </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>

打包并发布到weblogic。

现在测试一下:
在MQ管理器中,在application队列放入一个消息:

图3.3.8.放入测试消息

如果所有配置正确,则MDB->MQTestBean2会接收到刚刚放入的消息,并进行处理,然后放到approval队列:


图3.3.9.weblogic服务器输出(netbeans控制台)

之后我们可以再到MQ管理器查看approval队列,可以看到MDB处理后的消息:


图3.3.10.到approval队列查看处理后的消息

OK,至此,我们成功地将MQ无缝地集成到了weblogic上,使部署在weblogic上的MDB可以像使用原生的JMS一样操控MQ队列了。

EMS server Tibco相关推荐

  1. tibco EMS 8.2.0安装

    安装环境 序号 项目 值 1 OS版本 Red Hat Enterprise Linux Server release 7.1 (Maipo) 2 内核版本 3.10.0-229.el7.x86_64 ...

  2. Django项目部署在Centos7

    把Django项目部署在Centos7下 先有一个Django项目 一个员工管理系统(ems) 员工管理系统 使用VMware创建一个虚拟的Linux系统 Centos7下安装MySql5.7 详细安 ...

  3. oracle初始化ou,oracle配置,备份及恢复数据库

    1. 配置ORACLE服务器:高级安装--通用--Ems3.domain--下一步--所有用户密码sw,确认口令sw--口令管理--把没有锁定的加上SW密码--下一步--OK. 2. 配置ORACLE ...

  4. python uwsgi+nginx部署

    typora-root-url: ./ 项目环境部署 一.MySQL5.7安装 1.安装方式 1.1 方式一 yum安装(推荐使用该方式) 在CentOS中默认安装有MariaDB,这个是MySQL的 ...

  5. TIBCO EMS MESSAGE

    http://blog.sina.com.cn/s/blog_7ce87e8501017p8l.html 1       安装TIBCO Enterprise Message Service 安装EM ...

  6. Depin(Linux)下安装Tibco Ems 8.5

    depin(Linux)下安装Tibco Ems 8.5 下载安装包 地址:https://www.tibco.com/products/tibco-messaging/downloads 下载 TI ...

  7. ajax(Tibco) 与 SQL server 2005(5)

    1.在IIS中要进进行如下设置,才能正常使用,相关功能,如图: 然后在本机创建一帐号,用来登录.或ajax\fredlinxp. 转载于:https://blog.51cto.com/fredlin/ ...

  8. Exchange Server 2013 运维系列——EMS实用命令收集(持续更新中...)

    Exchange Management Shell 实用命令收集如下: ( 注: 1.以下命令均以"管理员身份"运行         2.以下命令行中的中文名称均以实例名称替换 ) ...

  9. Microsoft Exchange Server 2010测试四成员DAG

    本文出自 "叶俊生" 博客,请务必保留此出处http://yejunsheng.blog.51cto.com/793131/175814 本次实验测试四成员 DAG 数据库可用性组 ...

最新文章

  1. 开工了!三位大咖给你指路:未来 3~5 年内,哪个方向的机器学习人才最紧缺?
  2. 你了解如何评估模型吗?
  3. 大众点评开源监控CAT概览
  4. SegmentFault 技术周刊 Vol.17 - 听说你还没用上 AngularJS
  5. Windows Server 2003安装卡巴斯基2010成功
  6. 低头是家和月光,抬头是车和远方
  7. python知识:numpy的维度之变
  8. Python的可变类型与不可变类型
  9. python 两个df求相同的行_python – Pandas df操作:如果其他列行重复,则返回值列表的新列...
  10. linux 动态内存分配,具体来说,fork()如何处理Linux中malloc()动态分配的内存?
  11. spring核心:bean工厂的装配 2
  12. android MVC
  13. qt如何编写android程序,如何利用Qt开发Android应用程序
  14. matlab仿真函数,matlab自动控制仿真常见函数应用
  15. 再谈PHP从入门到精通需要几年
  16. 开发者体验:如何更好的呈现错误?
  17. 《用户体验要素》笔记
  18. BOM 物料清单 Bill Of Materials
  19. Mysql高级查询语句练习
  20. python中time函数用法_python中time tzset()函数实例用法

热门文章

  1. OpenGL之利用矩阵的“平移”“旋转”“综合变换”等实现矩形的移动
  2. 【机器视觉】 fuzzy_measure_pairs算子
  3. 【C++】error C2275 “XXXX” 将此类型用作表达式非法
  4. 【Linux系统编程应用】 Linux输入子系统(二)
  5. suse linux查版本号,查看SUSE版本号
  6. 超过一天的文件_一键合并多个excel文件至同一工作表!
  7. Apache Web Server - httpd 的文档根目录 及 访问控制
  8. 每天一道LeetCode-----摩尔投票法寻找给定数组中出现个数大于n/2或n/3的元素
  9. 简述enumerate函数
  10. unc0ver 发布新版本支持 iOS 13.3 越狱