本主题讨论 SonicMQ 传输,它作为 JMS 传输的扩展实现。
本章包含:
除了 JMS 消息类型之外,SOAtest 和某些 Virtualize 支持工具以及供应操作工具还支持 SonicMQ 传输的 MultiPartMessage
。对于 JMS 消息类型,您需要使用 JMS 传输。关于 JMS 传输的更多信息,请查阅 JMS。
对于出站消息传递, MultiPartMessage
由单个部分构造,该部分将请求消息包装为“text/xml”类型。用户可以通过部件内容 ID 字段指定部件的“Content-ID”头字段。对于入站消息传递,JMS 和 SonicMQ 传输都可以使用多个部分解析 MultiPartMessage。
配置 SonicMQ 选项
从合适工具的 Transport 选项卡内的 Transport 下拉菜单选中 SonicMQ 之后,将在 Transport 选项卡的左窗格显示以下选项:
- Connection Settings
- Queue/Topic
- Messaging Model
- Message Exchange Pattern
- Message Type
- Part Content ID
- Request Message Properties
- Response Message Correlation
Connection Settings
Connection Settings 包含 Settings 和 Properties 选项卡。属性选项卡是可选项,它允许执行传递给 JNDI javax.naming.InitalContext 构造器的其他属性;除了在设置选项卡中指定的提供程序 URL 和初始上下文工厂属性。设置选项卡包含:
- 如果为 SonicMQ 连接创建了共享属性,则将提供一个下拉菜单,您可以从中选择 Use Local Settings 或 Use Shared Property。
如果选择 Use Shared Property,则将显示第二个下拉菜单,您可以从中选择工具将使用的所需全局 SonicMQ 设置。有关更多详情,请查阅 。
- 如果选择 Use Local Settings ,或者如果没有指定任何共享属性,则可以配置连接设置的剩余部分。
- Provider URL:指定传递给 JNDI javax.naming.InitialContext 构造器名为 JNDI javax.naming.Context.PROVIDER_URL 属性的值。
- Initial Context:指定作为名为 javax.naming.Context.INITIAL_CONTEXT_FACTORY 属性的字符串值传递给 JNDI javax.nam-ing.InitialContext 的完全限定类名字符串。
- Connection Factory:传递给 javax.naming.InitialContext 中的 lookup() 方法以创建 javax.jms.QueueConnectionFactory 或 javax.jms.TopicConnectionFactory
除了设置选项卡,连接设置还包括:
- Queue Connection Authentication:允许用户提供用户名和密码来创建队列连接。选择 Perform Authentication 复选框,输入 Username 和 Password 以对请求进行身份验证。如果不使用正确的用户名和密码,将不会对请求进行身份验证。将此处提供的用户名和密码传递给 javax.jms.QueueConnectionFactory 类中的 createQueueConnection() 方法,以便获得 javax.jms.QueueConnection 实例。
Queue/Topic
Queue/Topic 设置包括以下选项:
- JMS Destination:指定将消息发送到何处的队列名称(如果使用点到点)或主题名称(如果使用发布和订阅)。
- JMS ReplyTo:指定从何处获得响应消息的队列名称(如果使用点到点)或主题名称(如果使用发布和订阅)。如果选中的是 Temporary 而不是 Form,则这可以是临时队列。
Messaging Model
Messaging Model 选项指定如何在应用程序之间发送消息。选择 Point to Point 或 Publish and Subscribe。
Message Exchange Pattern
Message Exchange Pattern 选项指定是 SOAtest 接收响应还是 Virtualize 接收响应。如果选择 Get Response ,SOAtest 或 Virtualize 发送消息并接收响应。如果选择 Get Response ,SOAtest 或 Virtualize 只发送消息不接收响应。
如果选择 Get Response ,您还可以启用 Create consumer on the JMSReplyTo destination before sending the message。如果预期响应在 JMSReplyTo 主题上很快可用,则应启用此选项,以确保 SOAtest 或 Virtualize 在发布响应消息之前订阅了应答主题。
此选项不可与 Match response JMSCorrelationID with the request JMSMEssageID 混合使用,因为 JMS 规范要求供应商在消息发送后生成 JMSMessageID。因此,没有办法使用该关联(选择器)在响应目的地上创建使用者,直到消息设置好并且 JMSMessageID 可用之后。
Message Type
Message Type 选项允许从下拉菜单中选择消息类型。SonicMQ 消息是一个 Java 对象,它包含在 SonicMQ 客户机之间传输的数据。可使用以下消息类型:
- progress.message.jclient.MultipartMessage
Part Content ID
一个 Sonic MultipartMessage 可以有多个部分。每个部分都有自己的名称(ID)和内容。SOAtest 和 Virtualize 支持使用单个部件发送 MultipartMessages 消息。 此字段指定部件名称,内容由请求区域定义,如表单输入、文字、文字 XML(SOAtest)等。SOAtest 和 Virtualize 支持接收包含多个部件的 MultipartMessages,并将所有部件内容以 XML 格式输出到工具的响应输出。
Request Message Properties
Request Message Properties 是可选项,它允许要设置到 javax.jms.Message 对象的任何其他属性值,然后将其发送到队列或发布到主题。这些包括预定义属性,这些属性被设置为使用一个与 javax.jms.Message 或 setStringProperty() 方法提供的任何自定义属性。
Response Message Correlation
Response Message Correlation 设置包括以下选项:
- Match response JMSCorrelationID with request JMSMessageID:如果选择该选项,术语 JMSCorrelationID = '[msgId]’ 将被附加到选择器表达式之后,其中 msgId 是从传出(请求)javax.jms.Message(使用 getJMSMessageID() 方法)中动态生成的。实际上,这会导致工具阻塞,直到具有指定关联 id 的消息在队列(或主题)中可用,并且它只检索特定的消息,而不检索队列(或主题)中的任何消息。如果没有监视选择器条件的消息,工具将在超时量过期后超时。
- Match response JMSCorrelationID with request JMSCorrelationID:如果选择该选项,术语 JMSCorrelationID = '[correlationId]’ 将附加到选择器表达式后,其中 correlationId 从消息属性部分中的 JMSCorrelationID 属性检索到。该选项只在此属性添加到消息属性部分时才可启用。实际上,这会导致工具阻塞,直到具有指定关联 id 的消息在队列(或主题)中可用,并且它只检索特定的消息,而不检索队列(或主题)中的任何消息。如果没有监视选择器条件的消息,工具将在超时量过期后超时。
Additional Selector Expression Terms:(可选)输入一个值作为消息过滤器。有关指定选择器的提示, 请查阅 使用消息选择器过滤器。
使用 SonicMQ 为客户端输出消息对象
可以添加消息对象输出给使用 SonicMQ 传输的工具。例如,连接到使用 SonicMQ 工具的扩展工具将有权访问响应 SonicMQ 消息。在 ObjectMessage 用例中,可以使用 getter
和 equals()
方法来验证响应,从而创建回归控制。此外,您还可以将 Diff 工具链接到响应流量,如果响应是一个 ObjectMessage,则 SOAtest 或 Virtualize 将会把插入的可序列化对象转换为 XML 格式并执行 XML 差异比较。这样做,您可以使用数据库值,忽略 Xpath 差异,等。
要做到这一点,请完成以下步骤:
右键单击 SOAP 客户机或消息传递客户机节点,或者您希望为其添加输出的 Virtualize 工具节点,并从快捷菜单中选择 Add Output 。将显示 Add Output 向导。
- 在 Add Output 向导的左窗格中选择 Response> Message Object ,然后选择右侧窗格中的 New Output 或 Existing Output 以及所需工具(例如,扩展工具)。
- 单击 Finish 按钮。SOAtest 或 Virtualize 将新输出添加到所选客户端节点。