使用侦听器设置 CMS 消费者涉及两个单独的调用:首先,获取消费者:
cms::MessageConsumer* cms::Session::createConsumer( const cms::Destination* );
然后,在消费者上设置一个监听器:
void cms::MessageConsumer::setMessageListener( cms::MessageListener* );
如果实现在侦听器被激活之前订阅目的地(并从代理/路由器接收消息),消息是否会丢失?或者这些消息是否在内部排队并在激活时传递给侦听器?
为什么没有 API 调用以侦听器作为构造参数来创建使用者?(是因为 JMS 规范没有吗?)
(附录:这可能是 API 本身的一个缺陷。更合乎逻辑的顺序是从会话中实例化消费者,并cms::Consumer::subscribe( cms::Destination*, cms::MessageListener* )
在 API 中有一个方法。)