JMS管理对象和JMS消息
在这篇文章中,我们将详细讨论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 Objects | Resource Type |
---|---|---|
1. | ConnectionFactory | javax.jms.ConnectionFactory |
2. | Queue | javax.jms.Queue |
3. | Topic | javax.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