我不是JMS的专家,最近在我的项目中遇到过他们希望使用JMS在应用程序之间进行通信的情况。是否可以在没有Websphere MQ / TIBCO EMS等基础MQ软件的情况下使用JMS进行异步通信。我的想法是,就像我们使用JDBC API与下面的物理数据库产品(如Oracle / DB2 DB)对话,我们将使用JMS与物理队列对话。但是我的团队只说JMS而没有队列。谁能帮我理解?我们使用Websphere 6.0服务器并使用spring框架。
提前致谢。
答案 0 :(得分:2)
你是对的:JMS只是一个接口,它不包含任何实现。与JDBC的比较非常合适。
使用JMS时,您始终需要JMS提供程序。提供程序是JMS实现,它接口面向消息的中间件。
大多数应用程序服务器都内置了JMS提供程序,因此您的团队可能意味着在没有外部提供程序的情况下使用JMS。
答案 1 :(得分:1)
是否可以在没有基础MQ软件(如Websphere MQ / TIBCO EMS)的情况下使用JMS进行异步通信
这没有任何意义。几点需要注意 -
我的想法是,就像我们使用JDBC API与下面的物理数据库产品(如Oracle / DB2 DB)对话,我们将使用JMS与物理队列对话。但我的团队只说JMS而没有队列
这里有两点需要注意。当你说你想使用数据库和JDBC API来沟通JMS时,图片中没有任何地方。请理解为什么使用JMS。简而言之,它用于在两个解耦系统之间传输消息。 JMS服务器使用的存储类型(如果可配置)将取决于提供程序。通常都有数据库存储类型,可以配置为使用您的数据库。
下一个JMS有两种类型的通信 - PTP(peer to peer)
使用queues
和PUBSUB(publish subscribe)
使用Topics
。当你说你正在使用JMS时,一切都归结为这两个中的任何一个以及它的一些变体。现在当你说没有队列的JMS时,你的团队可能意味着使用PUBSUB。但同样不是你随机决定并在你的应用程序中使用它。这个决定取决于您的要求,因为它们的行为都不同。
答案 2 :(得分:0)
首先,您需要使用队列/主题来使用JMS。
第二个(您的团队可能意味着不使用WebSphere MQ,因为我的团队说的是同样的事情)
IBM红皮书中的这个图表将完全回答您的问题(它与WS6相同):
http://www.redbooks.ibm.com/redbooks/pdfs/sg247770.pdf 第4页。
您将使用的是WebSphere Default Messaging Provider。