跳到主要内容

REST生产者

向 PubSub+ 事件代理发送消息是通过 REST 发布客户端完成的。在建立连接时对 REST 发布客户端进行认证。一般来说,建议应用程序使用 HTTP 1.1 持久连接,以避免每次发送消息时都需要建立连接,从而实现更高的发送性能。

单向POST到事件代理

当应用程序发送消息且不期望收到回复时,生产者会发送一个包含所有相关消息标头、属性和内容的 HTTP POST 请求。PubSub+ 事件代理将此消息转换为内部 Solace 消息格式(SMF),以便进行路由,并在事件代理成功接受消息时返回 HTTP 200 OK 响应。对于持久性消息,在消息已成功存储在事件代理上之后返回 200 OK。

img

REST POST 请求的格式在 Solace REST HTTP 消息编码中有详细说明。

请求/回复事件代理

当应用程序发送请求并期望收到回复时,Solace REST 消息传递提供了两种选择:

  1. 阻塞交换,事件代理将请求和回复一起关联起来供应用程序使用。
  2. 异步交换,稍后接收回复。

同步请求/回复

在同步情况下,当 PubSub+ 事件代理收到 HTTP POST 请求时,它会延迟返回 HTTP 响应。这使得事件代理可以在 Solace 消息总线上发送请求,在收到回复之前不会对 REST 消费者做出响应。当收到回复或请求超时时,事件代理对 REST 生产者做出响应。此交换过程如下图所示。

img

HTTP 响应的正文携带回复的内容,具体在 Solace REST HTTP 消息编码中有详细说明。

异步请求/回复

Solace REST 消息传递还为发布者提供了指定回复目的地的选项。通过这种方式,REST 应用程序可以向事件代理发送消息,并稍后使用指定的回复到目的地接收回复。此交换过程如下图所示。

img

在异步请求/回复中,REST 应用程序既是 REST 生产者又是 REST 消费者。请求正常发布到事件代理,REST 生产者在事件代理接受消息时收到 200 OK。当 JMS 应用程序发送回复时,事件代理通过单独的 HTTP 连接将回复作为新的 HTTP POST 请求发送到 REST 应用程序。REST 应用程序通过最终的 200 OK 响应来确认收到回复。

REST 应用程序可以在消息中指定相关 ID,以便将请求与异步接收的回复相关联。