跳到主要内容

PubSub+ JCSMP API中的保证消息流

对于使用 PubSub+ JCSMP API 的客户端应用程序来说,要向 PubSub+ 事件代理发布保证消息或从其消费保证消息,它必须在会话中创建一个或多个流。流是一个 API 对象,允许应用程序发送或接收保证消息。

订阅者流允许应用程序从端点(如队列)接收保证消息。除非另有说明,否则对流的引用是指订阅者流。

当客户端发布保证消息时也会使用流。对于 PubSub+ JCSMP API,当获取 XMLMessageProducer 时会创建生产者流。请参阅 PubSub+ JCSMP API 中的保证消息发布

要创建流接收器,请使用 com.solacesystems.jcsmp.FlowReceiver 接口,可以通过 createFlow() 方法实例化。以下代码片段展示了一个简单的 FlowReceiver 实现:

final FlowReceiver cons = session.createFlow(new XMLMessageListener() {
@Override
public void onReceive(BytesXMLMessage msg) {
if (msg instanceof TextMessage) {
System.out.printf("TextMessage received: '%s'%n", ((TextMessage) msg).getText());
} else {
System.out.println("Message received.");
}
System.out.printf("Message Dump:%n%s%n", msg.dump());

// 当确认模式设置为 SUPPORTED_MESSAGE_ACK_CLIENT 时,
// 保证消息在处理后会进行确认
msg.ackMessage();
latch.countDown(); // 解阻塞主线程
}
});

浏览器

浏览器允许客户端应用程序查看队列上从最旧到最新的消息,而不会删除它们。浏览消息后,它们仍然可以通过流被消费者接收。

也可以使用浏览器查看消息并选择性地从队列中删除它们。删除的消息不能再被消费。

在 PubSub+ JCSMP API 中,浏览器是对象。要创建浏览器对象,请使用 com.solacesystems.jcsmp.Browser 接口,可以通过 createBrowser() 方法实例化。

Browser myBrowser = session.createBrowser(browser_properties);