没有队列的JMS

时间:2014-03-13 14:59:01

标签: jms

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

提前致谢。

3 个答案:

答案 0 :(得分:2)

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

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

大多数应用程序服务器都内置了JMS提供程序,因此您的团队可能意味着在没有外部提供程序的情况下使用JMS。

答案 1 :(得分:1)

  

是否可以在没有基础MQ软件(如Websphere MQ / TIBCO EMS)的情况下使用JMS进行异步通信

这没有任何意义。几点需要注意 -

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

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

    这里有两点需要注意。当你说你想使用数据库和JDBC API来沟通JMS时,图片中没有任何地方。请理解为什么使用JMS。简而言之,它用于在两个解耦系统之间传输消息。 JMS服务器使用的存储类型(如果可配置)将取决于提供程序。通常都有数据库存储类型,可以配置为使用您的数据库。

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

答案 2 :(得分:0)

首先,您需要使用队列/主题来使用JMS。

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

IBM红皮书中的这个图表将完全回答您的问题(它与WS6相同):

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

JMS Provider Components

您将使用的是WebSphere Default Messaging Provider。