Publish-and-subscribe模式:topic 一对多,推送消息 Point-to-point模式:queue 只保证一个接收者收到,要求客户端自己查询获取。 依据jms规范,消息总是要保证送达的,中间的如有短线等故障,再次连接后任然可以获得。 在容器中,不要使用SessionBean或EntityBean作为消息接收者,这关系到线程阻塞问题,标准的方法是使用MessageDriveBean来接收消息。 MDB是无状态的,事务的。 selector是依据消息属性来选择的,使用sql-92 where 后面的语法. Acknowledge mode是用以判断消息已发送的模式,Auto-acknowledge 和 Dups-ok-acknowledge。 Auto-acknowledge是消息一旦发送给MDB就通知 Dups-ok-acknowledge则说明通知时间无所谓并允许重复发送(当JMS认为消息发送失败时)。这种主要是为网络性能考虑,实际上作用不大。 并且这个设置只当bean-managed transactions, or with the container-managed transaction attribute NotSupported 时才起作用,一般都是容器管理的,会忽略这个配置。 【wsad设置JMS】 需要在设置ConnectionFactory和Queue/Topic 对于Queue要在如下图这里添加。 注意createQueueSession(false, 0);虽然一般建议使用true, 但是这里是简单的测试,上下文没有事务,所以如果用true会导致rollback,故此处设为false. topic一直没试通,配置还是在控制台里面配置才配成功的,但是代码里面又抛异常…… |