Возможно ли, чтобы у темы JMS было несколько издателей - PullRequest
1 голос
/ 19 сентября 2011

Из того, что я до сих пор читал, тема JMS - «1-ко-многим», и мне интересно, возможно ли поддерживать «многие-ко-многим», используя тему.Рассмотрим тему под названием «Отчеты» с несколькими службами, распределенными по всему предприятию, которым необходимо публиковать запланированные отчеты.Наличие нескольких издателей избавило бы от необходимости подписывать заинтересованные приложения на тему для каждой из служб отчетности.

Примечание: Я собираюсь использовать Spring и ActiveMQ в своем решении.

Ответы [ 3 ]

4 голосов
/ 20 сентября 2011

@ Mondain: да, очень возможно.Практическим примером может служить поток цен на биржевом рынке, предоставляемый несколькими источниками, и канал, потребляемый несколькими каналами.

2 голосов
/ 19 сентября 2011

Да, вы можете создать множество TopicPublisher из вашего TopicSession, и многие приложения могут подключить один и тот же Topic с помощью TopicPublisher или TopicSubscriber.

1 голос
/ 19 сентября 2011

Вы можете сделать что-то подобное и вызвать CreateMessageProducer, чтобы создать новый экземпляр производителя в любом месте вашего приложения.

  public ActiveMqProducer(string activeMqServiceUrl)
  {  
        _activeMqServiceUrl = activeMqServiceUrl; 

        IConnectionFactory factory = new ConnectionFactory(new Uri(_activeMqServiceUrl));

        _activeMqConnection = factory.CreateConnection();

        _activeMqSession = _activeMqConnection.CreateSession(AcknowledgementMode.Transactional);

        _activeMqConnection.Start();
  }

  private IMessageProducer CreateMessageProducer(string mqTopicName)
  {
        ITopic destination = SessionUtil.GetTopic(_activeMqSession, mqTopicName);
        var producer = _activeMqSession.CreateProducer(destination);
        return producer;
  }
...