JMS管理对象和JMS消息

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

在这篇文章中,我们将详细讨论JMS管理对象和JMS消息。

JMS管理的对象

JMS API为JMS客户端提供了两种管理对象。

  • 连接工厂
  • 目的地

JMS系统管理员通过使用Application Server(AS)管理控制台在JMS提供程序(消息代理)中创建这两个受管理对象。
这两个对象存储在AS JNDI目录或者JNDI注册表中。

Destination Destination对象用于在JMS客户端之间交换消息。
JMS API提供了两种目的地:

  • 队列
  • 话题

连接工厂连接工厂对象用于在JMS Provider和JMS Client之间创建连接。
当JMS客户端(JMS发送器或者JMS接收器)从JNDI注册表中查找此对象时,JMS客户端会收到一个Connection对象,该对象只是JMS Provider和JMS Client之间的物理连接。
通过使用此连接,JMS Client可以与Destination对象进行通信,以将消息发送或者接收到Queue或者Topic。

在创建这两个对象时,我们需要提供三件事

  • 名称:-对象的名称。
    我们可以提供任何有效的名称

  • JNDI名称:-这是JNDI名称,用于在JNDI目录中注册此对象。
    JMS客户端使用此名称从JNDI注册表中查找这些对象,并在其应用程序中使用它们来发送或者接收来自JMS Provider的消息。

  • 资源类型:-我们需要在此处指定资源类型。

S.No.Administered ObjectsResource Type
1.ConnectionFactoryjavax.jms.ConnectionFactory
2.Queuejavax.jms.Queue
3.Topicjavax.jms.Topic

例:

在Oracle GlassFish Application Server中创建队列对象

其中我提供了Destination Name = TPQueue,JNDI Name = jms/TPQueue和Resource Type作为javax.jms.Queue。
JMS客户端可以使用以下代码片段查找此对象:

Queue queue = (Queue) context.lookup("jms/TPQueue");

JMS消息

JMS客户端使用JMS消息在系统之间交换信息。
此JMS消息的类型为javax.jms.Message。

此JMS消息分为3部分:

  • 邮件标题
  • 讯息属性
  • 邮件正文

邮件标题

本部分是强制性的。
它包含由JMS客户端和JMS提供程序用来标识和路由消息的预定义名称/值对。

预定义的标题:

  • JMS目的地
  • JMSDeliveryMode
  • JMSMessageID
  • JMS时间戳
  • JMSCorrelationID
  • JMSReplyTo
  • JMS已交付
  • JMSType
  • JMS到期
  • JMS优先级

讯息属性

本部分是可选的。
这些属性是应用程序设置或者读取的自定义名称/值对。
这些对于支持过滤消息很有用。
我们将在"邮件过滤高级JMS概念"部分中详细讨论它。

邮件正文

本部分是可选的。
它包含从JMS发送器发送到JMS接收器的实际消息。

它支持以下消息格式:

  • 文字讯息
  • 对象消息
  • 字节消息
  • 流消息
  • MapMessage