JMS API 2.0生产者和使用者

时间:2020-02-23 14:35:21  来源:igfitidea点击:

请浏览我以前的文章" JMS API 1.1生产者和使用者",以获取有关如何使用JMS 1.1 API开发JMS生产者和使用者程序的一些基础知识。

在开始开发JMS程序之前,首先我们将在本文中讨论以下两个概念:

  • 开发JMS 2.0生产者的步骤
  • 开发JMS 2.0使用者的步骤

介绍

在P2P或者发布/订阅消息传递模型中,我们可以观察到以下参与者

  • JMS生产者
  • JMS消费者
  • JMS消息
  • JMS管理的对象
  • JMS提供者

根据我们的应用程序或者客户需求,我们可以使用任何可用的JMS Provider来实现此Messaging Application。
JMS管理员在JMS Provider管理控制台中配置所有必需的受管理对象,以在我们的应用程序中使用它们。

因此,作为JMS开发人员,我们需要专注于3个部分:生产者,消费者和消息。

注意:-阅读本节后,请参阅" Simple JMS.V.2.0示例"部分,以获取JMS2.0的简单工作示例。

开发JMS V.2.0 Producer的步骤:

JMS 2.0提供了简化的API,以避免创建更多对象。

生产者或者发送者的责任是创建消息并将其发送到目的地。
要开发Producer应用程序,我们需要按以下顺序创建一组对象

  • 安装JMS Provider软件
  • 使用管理控制台并在JMS提供程序中创建受管理对象

ConnectionFactory JNDI名称:jms/SampleConnectionFactory目标(队列)JNDI名称:jms/SampleQueue

  • 开发JMS Producer应用程序

创建InitialContext

Context context = new InitialContext ();

使用InitialContext对象从JNDI存储库中查找ConnectionFactory对象

ConnectionFactory cf = (ConnectionFactory) context.lookup ("jms/SampleConnectionFactory");

使用InitialContext对象从JNDI存储库中查找目标对象

Destination queue = (Destination) context.lookup ("jms/SampleQueue");

使用ConnectionFactory对象并创建JMSContext对象

JMSContext jmsContext = cf.createContext();

使用JMSContext对象创建JMSProducer并将消息发送到目标。

jmsContext.createProducer().send(queue, " JD Sample Text Message");

关闭创建的JMSContext对象以释放所有资源。

jmsContext.close();

开发JMS V.2.0接收器的步骤:

消费者或者接收者的责任是消费者从目的地接收消息。
要开发消费者应用程序,我们需要按以下顺序创建一组对象

如果我们观察到创建对象的顺序以消耗一条消息,那么我们将遵循几乎类似的Producer步骤。

  • 安装JMS Provider软件
  • 使用管理控制台并在JMS提供程序ConnectionFactory JNDI中创建受管对象。
    名称:

jms/SampleConnectionFactory目标(队列)JNDI名称:jms/SampleQueue

  • 开发JMS Consumer应用程序

创建InitialContext

Context context = new InitialContext ();

使用InitialContext对象从JNDI存储库中查找ConnectionFactory对象

ConnectionFactory cf = ConnectionFactory) context.lookup ("jms/SampleConnectionFactory");

使用InitialContext对象从JNDI存储库中查找目标对象

Destination queue = (Destination) context.lookup ("jms/SampleQueue");

使用ConnectionFactory对象并创建JMSContext对象

JMSContext jmsContext = cf.createContext();

使用JMSContext对象创建JMSConsumer并将消息发送到目标。

String message = jmsContext.createConsumer(queue).receiveBody(String.class);

关闭创建的JMSContext对象以释放所有资源。

jmsContext.close();

注意:

  • 当我们使用队列作为目的地时,这两个生产者和消费者组件是P2P消息传递模型的一部分。

  • 要为发布/订阅消息模型开发相同类型的应用程序,则JMS管理员将在JMS提供者中创建主题,而开发人员应在生产者和消费者程序中使用该主题JNDI名称。
    因为,JMS 2.0 Classic API仅使用一组API来开发Producer和Consumer程序。

  • 在JMS 1.1 P2P消息传递模型中,要由JMS使用者使用消息,我们应该手动启动连接。
    否则,将以CLOSED状态创建连接。
    与在JMS 2.0 P2P模型中一样,JMSContext将负责此工作,并且不需要手动启动。