2014-03-13 133 views
0

我不是JMS的专家,最近遇到了我的项目中他们想使用JMS在应用程序之间进行通信的情况。是否有可能使用JMS而不使用诸如Websphere MQ/TIBCO EMS等基础MQ软件异步通信。我的想法就像我们使用JDBC API与底层的物理数据库产品(如Oracle/DB2 DB)对话,我们将使用JMS与物理队列通话。但是我的团队只是说JMS而不是队列。任何人都可以帮助我理解?我们使用Websphere 6.0服务器并使用spring框架。没有队列的JMS

在此先感谢。

+1

Websphere Application Server具有内部队列(他们将它命名为默认队列),并且它们有自己的JMS实现(甚至不是相同的Websphere MQ的JMS实现)。也许你的团队正在计划使用它,所以有专用的MQ服务器。 –

回答

2

你是对的:JMS只是一个接口,它不包含任何实现。与JDBC的比较非常合适。

使用JMS时,您总是需要一个JMS提供程序。一个提供者是JMS实现,它接口一个面向消息的中间件。

大多数应用程序服务器都内置了JMS提供程序,因此也许您的团队意味着使用JMS而无需外部提供程序。

1

是否有可能使用JMS的没有底层MQ软件如WebSphere MQ/TIBCO EMS进行异步通信

这是没有意义的。几点要注意 -

  1. JMS只是specs。根据规范,您可以将其想象为一组API /接口/方法签名和管理规则。
  2. 有各种组织/公司提供这些API的实现.Apache的ActiveMQ,IBM的Websphere MQ或TIBCO EMS是一些示例。
  3. 现在当你说我想使用JMS时,你需要一个兼容JMS的服务器,即理解规范规定的规则的服务器。这通常称为MQ服务器,由提供者提供。

我的想法是,就像我们使用JDBC API讲一个物理数据库产品(如Oracle/DB2 DB)下方,我们将使用JMS说话的物理队列。但我的团队说只是JMS,并没有队列

这里需要注意两点。当你说你想使用数据库和JDBC API进行通信时,JMS就不会出现在图片的什么地方。请理解为什么使用JMS。简而言之,它用于在两个解耦系统之间传输消息。 JMS服务器使用的存储类型(以及是否可配置)将取决于提供商。一般都有数据库存储类型,可以配置为使用您的数据库。

下一步JMS有两种类型的通讯 - PTP(peer to peer),它使用queuesPUBSUB(publish subscribe),它使用Topics。当你说你正在使用JMS时,一切都归结为这两者中的任何一个以及它们的一些变体。现在当你说没有队列的JMS时,也许你的团队意味着使用PUBSUB。但是,这又不是你随意决定的,并将其用于你的应用程序中。这个决定取决于你的要求,因为它们的行为都不一样。

0

首先您需要队列/主题才能使用JMS。

二(你的团队可能意味着不使用WebSphere MQ,因为我的团队说同样的事情)

此图在IBM的红皮书将完全回答你的问题(这是一样的WS6):

http://www.redbooks.ibm.com/redbooks/pdfs/sg247770.pdf 页4.

JMS Provider Components

也许你会用什么在WebSphere缺省消息传递提供。