0

그래서 동시 소비자를 주제, 즉 여러 수신기에 생성합니다. 나는 그것들을 내구성있게 구성하고있다. 무엇 내가 알고 싶은영구 가입자는 JMS와 어떻게 작동합니까?

@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 개는 유휴 상태이므로 즉시 확인합니다.

  1. 은 (는) 4 가입자에게 전송되고 5 가입자 큐에 메시지를 유지하고 그것이 승인을 제공 한 후에 만 ​​5 가입자로 전송 이제

    두 번째 이벤트를 가정 수 있습니다을왔다?

        OR 
    
  2. 이 5 가입자도 인정하고 한 번에 모든 가입자에게 보낼 때까지 큐에 메시지 가입자하지만 대기 중 하나로 보내 나던?

나는 setsessiontransacted true를 사용하고 있습니다. 1 또는 2은 어떻게됩니까? 또한 브로커가 각 동시 구독자의 내부 큐를 유지 관리하여 해당 영구 가입자에게 보내는 메시지의 흐름을 이해하고 있다고 가정합니다.

누군가가 concurrentconsumer, 영구 가입 및 setsessiontransacted = true 구성에 대해 어떻게 작동하는지 설명 할 수 있습니까?

답변

0

메시징 공급자는 이벤트 메시지를 게시 할 때 구독자 큐에 넣습니다. 가입 대기열에서 메시지를 가져 오거나 (또는 ​​청취자를 사용하여 수신하는) 구독자입니다. 따라서 구독자가 이벤트 메시지를 처리하는 중일 때 다른 구독자가 전혀 영향을받지 않으면 게시를 계속 받게됩니다. 사실 가입자는 다른 가입자의 존재를 알 수 없습니다.

+0

내구성 가입자가 없다고해도 일반 가입자 만 있으면이 기능이 그대로 유지 될 것입니다. 맞습니까? – africandrogba

+0

예, 구독이 오래 지속되는지 여부는 중요하지 않습니다. – Shashi