Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 持久订阅者如何使用JMS?_Java_Spring Boot_Jms_Publish Subscribe_Durable Subscription - Fatal编程技术网

Java 持久订阅者如何使用JMS?

Java 持久订阅者如何使用JMS?,java,spring-boot,jms,publish-subscribe,durable-subscription,Java,Spring Boot,Jms,Publish Subscribe,Durable Subscription,因此,我创建了一个主题的并发消费者,即多个侦听器。我正在将它们配置为耐用 @Bean public DefaultMessageListenerContainer listenerContainers() { DefaultMessageListenerContainer container = new DefaultMessageListenerContainer(); container.setConnectionFactory(connectionF

因此,我创建了一个主题的并发消费者,即多个侦听器。我正在将它们配置为耐用

@Bean
    public DefaultMessageListenerContainer listenerContainers() {
        DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
        container.setConnectionFactory(connectionFactory());
        container.setDestinationName(COMMENT_QUEUE);
        container.setPubSubDomain(true);
        container.setSessionTransacted(true);
        container.setConcurrentConsumers(2);
        container.setSubscriptionDurable(true);
        container.setMessageListener(datafileSubscriber);
        container.start();
        return container;
    } 
我想知道的是,
假设发生了一个事件,并将其发布给所有5个订阅者。其中一个正在处理它,因此它在处理完成之前不会立即确认,而其余4个则会立即确认,因为它们处于空闲状态

现在让我们假设第二件事发生了

  • 它是否发送给4个订阅者,并将消息保留在第5个订阅者的队列中,并仅在确认后发送给第5个订阅者

                        OR
    
  • 它不发送给任何消息订阅者,而是在队列中等待,直到第五个订阅者也确认,然后一次发送给所有订阅者

  • 我正在使用SetSessiond Transaction true。 现在是1还是2? 我还假设代理为每个并发订阅者维护一个内部队列,以了解到持久订阅者的消息流


    有人能解释一下concurrentconsumer、durable subscription和SetSessionTransact=true的配置流是如何工作的吗?消息传递提供程序将在事件消息发布时将其放入订阅者的订阅队列中。是订阅者从订阅队列中提取(或使用侦听器接收)这些消息。因此,如果订阅者正忙于处理事件消息,其他订阅者根本不受影响,他们将继续接收发布。事实上,订阅者不会知道其他订阅者的存在

    我相信即使没有持久订户,只有普通订户,这种功能也会保持不变,对吗?是的,订阅是否持久并不重要。